Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Sepia AI ManagerNew to Visual Studio Code? Get it now.
Sepia AI Manager

Sepia AI Manager

yasinkaya

|
8 installs
| (1) | Free
Connect unlimited AI provider accounts, switch between them, and get automatic failover — right inside VS Code.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Sepia AI Manager

Use Claude and OpenAI Codex in one VS Code chat. Switch accounts without starting the conversation over.

Sepia connects to AI command-line tools installed on your computer and brings them into a shared chat interface. Connect your accounts, choose which one answers each message, and return to saved conversations from the sidebar.

New in 1.2.0: Attach images and documents to your messages. Each provider receives them through the real mechanism its own CLI actually supports — see Add images and files for exactly what's supported and its limits.

New in 1.1.0: Long conversations can move between accounts using a working summary of older history alongside recent messages. Your full chat history remains saved.

Before you start

You need VS Code 1.85 or later, an account with access to the provider you want to use, and that provider's command-line tool (CLI). A CLI is the program Sepia runs in the background to communicate with the AI.

To use Install this CLI Check it in the VS Code terminal
Anthropic Claude Claude Code claude --version
OpenAI Codex Codex CLI codex --version

Install only the tool for the provider you plan to use, or both to switch between them. Follow the installation instructions on the linked package pages. Installing Sepia does not install these tools or provide an AI account.

Run the check in Terminal → New Terminal. It should print a version number. If the command is not found, finish installing the CLI and restart VS Code. The tool must be on PATH, meaning the terminal can find it by its command name.

If you use a Dev Container, SSH connection, or WSL, install the CLI in the environment where Sepia runs—not only on your main computer.

Get started

1. Open Sepia and connect an account

  1. Open your project folder in VS Code.
  2. Click the Sepia octopus icon in the left Activity Bar.
  3. Click + beside Account & Usage to open the connection panel.
  4. Select your AI Provider.
  5. Enter a Label, such as Personal or Work. This is a name you choose to identify the connection in Sepia; it is not your email address, password, or API key.
  6. Click Sign in and follow the displayed instructions. Complete the browser sign-in and enter a device code if one is shown. If Sepia opens a terminal instead, follow the login instructions there.
  7. Return to Sepia and wait for the account to show as connected.

If you prefer an API key, choose Use an API key instead, enter your provider's key, and click Save key.

Already signed in through another AI extension or terminal? Connect the account inside Sepia too. Sepia keeps its account connections separate so you can use multiple accounts independently.

2. Start your first chat

  1. In the sidebar's Session Manager, click New session.
  2. In the chat header, check Current AI and select the account you want to use.
  3. Choose a model in the message composer, type your request, and send it.

For example: “Explain how this project is organized and suggest what I should review first.”

Use Stop to interrupt a response and Retry to try the last request again. To reopen a saved conversation, click its title under Session Manager. Use Search sessions... to find it by title.

3. Add another account

Click + beside Account & Usage again. Select the provider and use a different Label for each account on that provider, such as Work and Personal, then sign in to the intended account.

Changing a label does not create a new provider account. It lets you identify another account you already have. Check which account is selected in the browser when completing sign-in.

Switch AI accounts in the same conversation

Click Current AI at the top of the chat, select another connected account, and send your next message. Do not create a new session if you want to continue the same topic.

For example:

  1. Ask Claude to review an implementation plan.
  2. Switch Current AI to your OpenAI account.
  3. Ask: “Review the plan above and identify any missing steps.”
  4. Switch back to Claude and ask it to continue using that feedback.

Sepia supplies the selected account with context from the shared conversation. Each chat has its own account selection; always check Current AI to see where your next message will go. Changing it during a response applies to the next message.

What happens with long conversations?

Sepia prepares a working summary of older messages and includes recent messages in more detail. The summary is designed to carry forward your goal, constraints, decisions, completed work, and open questions.

You may briefly see Preparing context… before a response starts. Summary preparation uses the connected AI service, so it can take additional time and count toward your provider's usage. Summaries may also be refreshed in the background as a conversation grows.

Your full conversation stays in the chat history. A summary is not a word-for-word memory of everything discussed; when an exact old detail matters, refer to the relevant message or file in your next request.

How responses are shown

Sepia renders what Claude and Codex actually send — tables, headings, bold/italic text, lists, task list checkboxes, quotes, and links — instead of showing the raw Markdown characters (|, ##, **). Code blocks get a language label, syntax highlighting, and a Copy button that copies the original code, not the highlighted markup. Links only ever open for safe schemes (https:, mailto:, and local files inside your open workspace); anything else (javascript:, data:, and similar) is never made clickable. The model's own response text is never rewritten or re-sent to another model just to change how it looks — only how it's displayed changes.

Tool calls (running a command, reading or editing a file, calling an MCP tool) appear as a collapsed card with a short summary. Click it (or press Enter/Space while it's focused) to see the full command/input, the real output the tool returned, and — for an edited file — the actual before/after change. A card only ever shows a green success mark when the provider confirmed the call succeeded; a failed, cancelled (Stop), or unresolved call shows its real state instead. Reopening a saved conversation shows the exact same cards and formatting as when they first streamed in.

Add images and files to your messages

Click + in the message composer, drag a file onto it, or paste an image with Ctrl+V / Cmd+V (a screenshot or an image copied from a browser — normal text pasting is unaffected). Attached files show as a chip with a thumbnail (images) or file name and size, and can be removed before sending. You can send a message that has only attachments and no typed text.

Each provider receives an attachment through the real mechanism its own CLI was confirmed, live, to actually support — not a generic upload. Support differs by provider on purpose:

File type Claude accounts OpenAI/Codex accounts Notes
Images (PNG, JPEG, WebP, GIF) ✅ ✅ Claude reads the file via its own Read tool; Codex receives it through its documented -i/--image flag. Both confirmed live for a first message and for a continued (resumed) conversation.
Plain text, Markdown, and common source code files ✅ ✅ Sepia reads the file's own text and includes it with your message. Confirmed live for both providers.
PDF ✅ (native) ✅ (extracted text) Claude's own CLI reads the PDF directly, including things Sepia never touches (layout, embedded images). The Codex CLI has no built-in document reader (confirmed directly with Codex itself), so Sepia extracts the PDF's text locally and sends that — reliable, but without layout or images. A scanned/image-only PDF with no real text layer can't be extracted this way and stays Claude-only for that specific file; you'll see a clear message rather than an empty or fabricated answer.
DOCX (Word) ✅ (native) ✅ (extracted text) Same as PDF: Claude reads it natively, Codex gets Sepia's own locally-extracted plain text.
Anything else (zip, exe, spreadsheets, audio/video, …) ❌ ❌ Not supported in 1.2.0. You'll see a clear message naming the file instead of a silent failure.

Limits Sepia enforces itself (not published limits from either provider): images up to 10 MB each, text/code files up to 2 MB, PDF/DOCX up to 20 MB, and up to 10 attachments per message.

Switching accounts or providers keeps your attachments working. If you attach an image to Claude and later switch Current AI to a Codex account, Sepia re-sends that image to Codex the real way (-i) rather than just mentioning it happened; a PDF/DOCX is likewise re-sent as Sepia's own extracted text. If a specific file genuinely can't be handled by the account you switch to (e.g. a scanned/image-only PDF with no extractable text, switched to Codex), Sepia tells you clearly instead of dropping it silently or pretending the new account can see it. The same applies during automatic failover: an account that can't handle an attachment in play is skipped in favor of one that can, or you get a clear error if none can.

Files are stored locally, alongside the rest of your chat history, in the same per-extension storage Sepia already uses — never inside your original file, which is left untouched. An attachment you've sent survives closing and reopening the tab and restarting VS Code; only an attachment added but never sent is lost if you close the tab, the same as unsent typed text.

Remote setups (SSH, Dev Containers, WSL): the file you pick, paste, or drop is always read from your own local machine's display and transferred into wherever the extension itself is actually running — so it works the same way whether Sepia is running locally or remotely, as long as the CLI you're using is installed in that same remote environment (see Before you start).

Set up automatic failover

Automatic failover lets Sepia try another account when it detects a rate or usage limit during a chat request.

  1. Connect at least two accounts and make sure they are enabled and connected.
  2. Find Failover in the sidebar.
  3. Turn Automatic Failover on.
  4. Use the up/down arrows to arrange your preferred account order.

When a supported limit is detected and another eligible account is available, Sepia notifies you and attempts the request with that account, preparing the conversation context as needed. You do not need to retype the request.

Failover does not bypass provider limits or guarantee recovery from every error. An expired sign-in may require Reconnect. Simulate limit reached is an optional test action that marks the active account as limited and exercises account switching; it is not required for everyday use.

Common questions

Situation What to do
“CLI not found” or “command not found” Run the relevant version check above in the environment where Sepia runs. Install the CLI, check PATH, and restart VS Code.
Sign-in opens a terminal This is an alternative login flow. Complete the instructions in that terminal and return to Sepia.
“Not logged in” or an expired connection Hover over the account in the sidebar and choose Reconnect or Log in, then retry your message.
“Preparing context…” appears Sepia is preparing older history for the selected account. Allow it to finish, or use Stop to cancel.
Context preparation fails Check the selected account's connection and available usage, reconnect if needed, and retry. Your saved conversation remains available.
No other account takes over Check that failover is on and another account is enabled, connected, and available.
"Unsupported file type" or "can't receive" when attaching/sending Check the attachment table above. For a PDF/DOCX specifically, this means Sepia couldn't extract any text from that particular file (likely scanned/image-only pages) — it still works with a Claude account. Otherwise, remove the file or switch Current AI.
You want to continue an earlier topic Open the existing session from the sidebar. New session starts a separate conversation.

Storage and provider usage

Sepia stores chat history, working summaries, and account metadata locally in the environment where the extension runs. API keys are stored using VS Code SecretStorage; provider CLIs manage their own login credentials in separate account directories.

Local storage does not mean offline AI processing. Prompts and the conversation context needed to answer them are sent through the selected provider's CLI to its service. Switching providers shares that context with the provider you select. Sepia does not require a separate Sepia backend server.

Sepia does not include AI credits or remove provider usage limits. Your provider's access and usage rules still apply.

Feedback and support

Report an issue with the Sepia version, operating system, provider, CLI version, and steps to reproduce the problem. Remove API keys, login codes, and private conversation content before sharing logs or screenshots.

Development

The steps above are for using the installed extension. To run Sepia from source:

npm install
npm run watch

Press F5 in VS Code to open an Extension Development Host. See ROADMAP.md in the repository for implementation history.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft