If you searched claude code vscode, here's the short answer: install the official Anthropic extension (anthropic.claude-code) from the Extensions view, sign in with any paid Claude subscription — no API key — and you're running. It needs VS Code 1.94.0 or later. The longer answer is that Claude Code lives in VS Code three different ways, and picking the right one is the whole game.
Install it in about a minute#
Open the Extensions view — Cmd+Shift+X (macOS) or Ctrl+Shift+X (Windows/Linux) — search "Claude Code", and Install. The publisher is Anthropic; the extension ID is anthropic.claude-code. (Deep link: vscode:extension/anthropic.claude-code.) If it doesn't show up after installing, run Developer: Reload Window from the Command Palette.
Two things people get wrong here:
- You do not need a separate CLI install for the panel. The extension bundles its own private copy of Claude Code. You only need the standalone CLI if you want to run
claudein the integrated terminal — installing the extension doesn't putclaudeon your PATH. - You do not need an API key. On first open you click Sign in and authorize in the browser; any paid Pro, Max, Team or Enterprise plan (or a Claude Console account) works. If you have
ANTHROPIC_API_KEYset but still get a sign-in prompt, VS Code didn't inherit your shell env — launch it withcode .from a terminal.
Using Cursor, Devin Desktop, or Kiro? The same extension installs, via the Open VSX registry. If a fork won't take it, install the CLI and run claude in its integrated terminal.
The three ways to run it — pick one on purpose#
This is the decision that actually matters, and the At a glance table above lays it out. In short:
- The graphical panel (default). A dockable Claude panel — right sidebar, left sidebar, or an editor tab. This is the one to use if you want click-to-review diffs: in Manual mode, edits open as a side-by-side original-vs-proposed diff, and on v2.1.275+ you get accept/reject buttons under each individual hunk.
- The panel in CLI mode. Prefer the keyboard-driven text UI but still want it docked in the editor? Set
claudeCode.useTerminaltotrue. - The standalone CLI in the integrated terminal. The full feature set — the
!bash shortcut, tab completion, every command and skill. Runclaudein VS Code's integrated terminal and it auto-integrates with the editor for diff viewing and diagnostics; from an external terminal, run/ideinside Claude Code to connect it to VS Code.
The reason you can move freely between them: the extension and CLI share conversation history and the same ~/.claude/settings.json. Start a task in the panel, then continue it in a terminal with claude --resume. Same conversation, same config.
The workflow features worth learning#
- Plan mode. For anything non-trivial, switch to the Plan permission mode. It opens Claude's plan as a full Markdown document you can leave inline comments on before a single line of code is written. This is the highest-leverage habit in the whole integration — cheaper to correct a plan than a diff.
- @-mentions and line ranges. Type
@to fuzzy-match a@fileor@folder(trailing slash for folders). To cite the exact range you're looking at, focus the editor and pressOption+K/Alt+Kto drop in a selection mention like@app.ts#5-10. Claude also automatically sees your current selection and active file. - Keep secrets out. Add a
Readdeny rule for a file like.envin your permissions — that blocks both the selected text and the automatic open-file notice from ever reaching the model, in the panel and the terminal.claudeCode.respectGitIgnore(on by default) also withholds git-ignored files from the panel. - Rewind. Hover any message to fork the conversation, rewind the code, or both — a real undo for an agent that went sideways.
- Continue on your phone.
/remote-controlbridges a VS Code session toclaude.ai/code, so you can pick it up in a browser or on mobile.
A few settings that pay for themselves#
Real VS Code extension settings (defaults in parentheses): claudeCode.useTerminal (false), claudeCode.preferredLocation (panel), claudeCode.initialPermissionMode (default), claudeCode.attachOpenFile (true), claudeCode.respectGitIgnore (true), claudeCode.archiveInactiveSessions (14). For the shared file, add "$schema": "https://json.schemastore.org/claude-code-settings.json" to ~/.claude/settings.json for autocomplete on allowed commands, hooks and MCP servers — and use /mcp in the panel (or claude mcp add in the terminal) to wire up servers; both write the same config.
Where it fits#
The VS Code extension isn't a different product from the terminal tool — it's the same agent with a diff reviewer and a plan doc bolted on, which is exactly what you want when the change is big enough that you need to read it before it lands. If you're still choosing an agentic coding environment in the first place, we compared ZCode vs Cursor 3 vs Claude Code on the axis that actually locks you in, and if you'd rather run the model yourself, here are the open-weight coding models worth self-hosting. But for most builders the fastest path is the one above: install the extension, sign in, open Plan mode, and start reviewing diffs instead of writing them.



