IDE Extensions
Claude Code runs the same agentic loop whether you launch it from a terminal or an IDE. The difference is purely the interface layer on top — the engine is identical.
IDE extensions add a graphical shell around that engine: inline diff review, file @-mentions, conversation history panels, and editor-native keyboard shortcuts. If you are comfortable in the terminal and do not need to inspect diffs visually, the CLI is perfectly capable. If you want to accept or reject individual hunks, reference files by typing @, or browse past sessions without leaving your editor, an extension pays for itself immediately.
Feature Matrix
| Feature | Terminal | VS Code | JetBrains |
|---|---|---|---|
| Inline diff review | ❌ | ✅ | ✅ |
@-mention files with line ranges | ❌ | ✅ | ❌ |
| Plan review UI (markdown preview) | ❌ | ✅ | ❌ |
| Conversation history panel | ❌ | ✅ | ❌ |
| Interactive per-hunk diff selection | ❌ | ❌ | ✅ |
| IDE diagnostic sharing (lint/errors) | ❌ | ✅ | ✅ |
| Selection auto-context | ❌ | ✅ | ✅ |
| All terminal capabilities | ✅ | ✅ | ✅ |
Both extensions include the full Claude Code CLI in their bundle. You can drop into the integrated terminal and run claude directly to access CLI-only features like tab completion, ! bash shortcuts, and headless -p mode.
Architecture
Both IDE integrations run Claude Code as a local process and connect to it over a local MCP server the extension spins up. Your code never passes through the IDE vendor’s servers — the same Anthropic API call happens as in the terminal.
The MCP server is an implementation detail — it is hidden from /mcp and requires no configuration. It exposes two model-visible tools: getDiagnostics (reads lint/type errors from the IDE’s Problems panel) and executeCode (runs cells in Jupyter notebooks, always with a confirmation prompt).
When to Use an IDE Extension vs the Terminal
Prefer the IDE extension when:
- You want to review Claude’s proposed changes as a side-by-side diff before accepting
- You are working across multiple files and want to use
@filenameto reference them by name (VS Code) - You want to select a block of code and ask Claude about it without copy-pasting
- You want to browse and resume past conversations from a sidebar panel
Stay in the terminal when:
- You need headless
claude -pfor scripts or CI pipelines - You want tab completion,
!bashshortcuts, or pipe input (git diff | claude -p "...") - You are SSH’d into a remote machine
- You prefer a minimal surface area
Guides
- VS Code Extension — install,
@-mentions, plan mode, conversation history, keyboard shortcuts - JetBrains Plugin — install, interactive diff selection, selection context, supported IDEs