Claude Code in VS Code: extension, terminal, or both

The VS Code extension stopped being a thin shim some time ago. It is a graphical panel with plan review, checkpoints, and a diff surface, driving the same agent as the terminal against the same configuration.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

The Claude Code VS Code extension is a graphical panel inside the editor: plan review as an editable Markdown document, side-by-side diffs before each edit, selection and at-mention context, session history, and checkpoints you can rewind to. It needs VS Code 1.94.0 or later and a paid Claude plan. It bundles its own copy of the CLI for the panel but does not put claude on your PATH, so CLI-only features need the standalone install too. The terminal still wins for parallel sessions, scripting and remote work. All accurate as of August 2026.

What you need to know
  • The extension is the same agent with an IDE view, not a separate product.
  • Requires VS Code 1.94.0+ and a Pro, Max, Team, Enterprise or Console account.
  • Installing it does not add claude to PATH. Install the CLI as well.
  • <kbd>Cmd</kbd>+<kbd>Esc</kbd> toggles focus; <kbd>Option</kbd>+<kbd>K</kbd> inserts an @file#5-10 reference.
  • Both surfaces read the same CLAUDE.md, .claude/ and settings, and share session history.
  • Terminal-only: the ! bash shortcut, tab completion, and the full command set.

What the extension actually is

A graphical Claude Code panel that lives in the editor. The Spark icon marks it: in the editor toolbar when a file is open, in the Activity Bar for the sessions list, and in the status bar as Claude Code when nothing is open. Drag the panel into the secondary sidebar to keep it beside your code, into the primary sidebar, or into the editor area as an ordinary tab.

  • Plan review as a document. In plan mode the plan opens as a full Markdown file you can annotate inline before Claude starts. Commenting on a plan in an editor is a different activity from arguing with a paragraph in a terminal.
  • Diffs before the edit. Every proposed change opens side by side with an accept, reject or redirect prompt. Edit the proposed content in the diff view and Claude is told you modified it, so it does not assume the file matches its own proposal.
  • Selection is context automatically. Highlighted code is visible to Claude without pasting; the footer shows how many lines. The eye-slash icon hides the selection when you would rather it did not.
  • Checkpoints. Hover any message to fork the conversation, rewind the code to that point, or both.
  • Sessions in tabs and windows. Open in New Tab or Open in New Window runs several conversations with independent context. A blue dot means a permission request is waiting; orange means Claude finished while the tab was hidden.

Setting it up

01

Check the version, then install

VS Code 1.94.0 or later, under Help then About. Open the Extensions view with <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd>, search for Claude Code, and install.

Forks work too. Cursor, Kiro and other VS Code derivatives install it from their own Extensions view or from the Open VSX registry. If a fork refuses, install the CLI and run claude in its integrated terminal instead; the CLI works in any terminal.

02

Sign in

The first time the panel opens it shows a sign-in screen. Any paid Claude plan or a Console account works and no API key is required.

If you have ANTHROPIC_API_KEY exported in your shell but the panel still asks you to sign in, VS Code did not inherit your shell environment. Launch it from a terminal with code ., or just sign in with your Claude account.

03

Install the CLI as well

curl -fsSL https://claude.ai/install.sh | bash
exec $SHELL -l
claude --version

This is what makes claude, claude mcp add and claude --resume work in the integrated terminal. If you are running the CLI in an external terminal and want the diff viewer and diagnostics, run /ide inside Claude Code to connect it to VS Code.

04

Send the first prompt

Select some code, then press <kbd>Option</kbd>+<kbd>K</kbd> or <kbd>Alt</kbd>+<kbd>K</kbd> to drop an @app.ts#5-10 reference into the prompt box. Type @ for fuzzy file and folder matching, and add a trailing slash to mean a folder.

Terminal versus extension, row by row

Same agent, same config, different surface. As of August 2026.

CapabilityTerminalVS Code extension
Runs the same agentYesYes
Reads CLAUDE.md, .claude/, settingsYesYes
Slash commands and skillsAll of themA subset; type / to see it
MCP serversFull configAdd via CLI, manage with /mcp
Checkpoints and rewindYesYes
! bash shortcutYesNo
Tab completionYesNo
Current selection as contextPaste it yourselfAutomatic
Diff reviewUnified diff in the terminalNative side-by-side, editable
Plan reviewText in the transcriptEditable Markdown document
Several sessions at onceEasyTabs and windows; heavier
Scripting with -pNativeNo equivalent
Remote over SSHNativeVia Remote-SSH

The two surfaces share conversation history, so this is not a fork in the road. Start in the panel, then run claude --resume in the terminal to pick the same conversation up in an interactive picker.

The shortcuts worth learning

ActionMacWindows and Linux
Toggle focus between editor and Claude<kbd>Cmd</kbd>+<kbd>Esc</kbd><kbd>Ctrl</kbd>+<kbd>Esc</kbd>
Insert an @-mention for the selection<kbd>Option</kbd>+<kbd>K</kbd><kbd>Alt</kbd>+<kbd>K</kbd>
Open a conversation in a new tab<kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>Esc</kbd><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Esc</kbd>
Reopen the last closed session tab<kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd>
Toggle Focus view (hide tool activity)<kbd>Ctrl</kbd>+<kbd>Option</kbd>+<kbd>F</kbd><kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>F</kbd>
New line without sending<kbd>Shift</kbd>+<kbd>Enter</kbd><kbd>Shift</kbd>+<kbd>Enter</kbd>

A handful of extension settings change the feel more than the shortcuts do. useTerminal swaps the panel for the CLI interface. initialPermissionMode sets the mode every new conversation starts in, including plan. useCtrlEnterToSend stops a stray <kbd>Enter</kbd> firing a half-written prompt. respectGitIgnore is on by default and keeps ignored paths out of file search.

The IDE bridge, and what it sends

When the extension is active it runs a small local MCP server named ide, and the CLI connects to it automatically. This is the machinery behind native diffs, selection context, and notebook cell execution. It is worth understanding because it changes what leaves your editor.

  • Selection and open file travel with each prompt. The transcript shows a Selected N lines from <file> line when it happens.
  • Two tools reach the model: mcp__ide__getDiagnostics, which returns the Problems panel contents, and mcp__ide__executeCode, which runs Python in the active Jupyter kernel. The rest of the server is internal RPC and is filtered out before the tool list reaches Claude.
  • Notebook execution always asks. The code is inserted as a new cell and a native Quick Pick asks you to execute or cancel. Dismissing it returns an error to Claude and nothing runs.
  • The socket is loopback only, on a random port, with a fresh auth token per activation written to ~/.claude/ide/<port>.lock at mode 0600.

When the terminal still wins

  • Several agents at once. Terminal tabs, tmux panes and worktrees handle this naturally. The extension can open sessions in tabs, but an editor window is a worse dashboard than a terminal multiplexer once you pass three.
  • Long autonomous runs. An agent in a window you are not looking at is a feature. An IDE panel invites you to watch it, which is the most expensive way to use one.
  • Remote and headless. SSH into a box and run it. No extension host, no port forwarding, no Remote-SSH round trip.
  • Scripting. claude -p "..." --output-format json in a pipeline has no IDE equivalent.
  • The muscle-memory bits. The ! bash shortcut and tab completion are terminal-only, and if you rely on them the panel feels slower even when it is not.
The parallel case, from either surface.
# one isolated worktree and branch per session
claude --worktree feature-auth
claude --worktree feature-search

Questions people ask

The extension is better for reviewing changes, annotating plans, and passing your current selection as context. The terminal is better for parallel sessions, long autonomous runs, remote work, and scripting. They share history and configuration, so most people use both.

No. It is the same agent with an IDE view. It bundles a private copy of the CLI for its own panel, but it does not add claude to your PATH, so you still install the CLI to use it in a terminal.

Because installing the extension does not put claude on your shell PATH. Install the standalone CLI once and it works in every terminal, including the integrated one.

No. Both surfaces read the same CLAUDE.md, the same .claude/ directory and the same ~/.claude/settings.json. Extension-only preferences live in VS Code settings under Extensions, Claude Code.

VS Code 1.94.0 or later, plus a paid Claude plan or a Console account. It also installs in forks such as Cursor and in editors that support the Open VSX registry.

On macOS Tahoe and later the system Game Overlay claims Cmd+Esc before VS Code sees it. Clear the Game Overlay checkbox in System Settings under Keyboard Shortcuts, Game Controllers, or rebind Claude Code: Focus input.

Yes, if you signed in with a Claude subscription rather than a Console account. Open Session history and switch to the Web tab. Resuming downloads the conversation locally; changes are not synced back to claude.ai.

JetBrains IDEs have their own Claude Code plugin. Independently of either plugin, the CLI runs in any IDE integrated terminal, and /ide connects an external terminal session to VS Code for diffs and diagnostics.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Use Claude Code in VS Code
  2. Claude Code documentation
  3. Claude Code setup and install
Try it

A diff pane
per session.

Continuum gives every session its own worktree, diff view and status, across Claude Code, Codex, Cursor and more, without the tab-hunting.

free app · your subscriptions · local-first