Claude Code Desktop App vs CLI vs VS Code: Which to Use

The desktop app, the terminal CLI and the VS Code extension run the same Claude Code engine and read the same configuration. What each one adds, what each one lacks, who each suits, and how to move a session from one to another.

7 min read

The Claude Code desktop app, the CLI and the VS Code extension are three front ends on the same engine. They share your CLAUDE.md files, settings and MCP servers, so choosing one is not a commitment. Use the desktop app if you want to review changes visually and run several sessions in one window without a terminal. Use the CLI if you want every command and flag, scripting, or a third-party model provider. Use the VS Code extension if you live in VS Code and want Claude beside the file you are editing. Many people use two of them.

What each one is

  • The CLI is claude in a terminal. It is the most complete surface: every command, every flag, non-interactive runs with claude -p, and the Agent SDK. It runs on macOS, Linux and Windows, natively or in WSL. Its commands and flags are in the commands cheat sheet.
  • The desktop app is the Code tab of the Claude app, next to Chat and Cowork. Per Anthropic’s desktop documentation (opens in a new tab), each conversation is a session with its own project folder, and you arrange the chat, diff, app preview, terminal and file editor as panes. It runs on macOS and Windows, with a Linux beta, and needs a Claude subscription.
  • The VS Code extension is a chat panel inside the editor, with inline diffs, @-mentions of files and line ranges, and checkpoints. It needs VS Code 1.94 or later. JetBrains IDEs have their own plugin, which runs the CLI in the IDE’s terminal.

Side by side

This compares what the documentation states for each surface today. It changes often; the platforms page (opens in a new tab) is the one to check.

Feature comparison
                    CLI                   Desktop app              VS Code extension
Interface           Terminal              Panes: chat, diff,       Panel in the editor
                                          preview, terminal, files
Commands            All                   Terminal-dialog ones,    A subset (type /)
                                          such as /permissions,
                                          are not available
Permission modes    All, incl. dontAsk    Manual, Accept edits,    Chosen in the panel
                                          Plan, Auto (Bypass if
                                          enabled)
Reviewing edits     /diff in the terminal Diff view with comments  Side-by-side diffs
Parallel sessions   Separate terminals    Sidebar, split panes     Editor tabs
Session isolation   --worktree flag       Worktree option          CLI in the terminal
File attachments    No                    Images, PDFs             @-mention files
Scripting (-p, SDK) Yes                   No                       No (use the CLI)
Agent teams         Yes                   No                       CLI in the terminal
Scheduled tasks     /loop, cron, CI       Desktop scheduled tasks  CLI in the terminal
Third-party         Bedrock, Agent        Anthropic API by         Yes
  providers         Platform, Foundry     default; gateways
Where it runs       Your machine          Local, Cloud, SSH, WSL   Your machine
Account             Any supported         Claude subscription      Any supported

Two rows deserve a sentence. “Scripting” is the real dividing line: if a run has to start from cron, a CI job or another program, it has to be the CLI, as described in how to automate Claude Code tasks. And the desktop app’s environment picker is broader than it looks: the same window can run a session on your machine, in the cloud, on a server over SSH, or inside a WSL 2 distribution on Windows.

What they share

The desktop app and the CLI read the same configuration files, so a setup made in one carries over to the other; the extension shares them too, since configuration, project memory and MCP servers are common to all the local surfaces:

  • CLAUDE.md and CLAUDE.local.md in your project. What goes in them, and in git: Claude Code project structure.
  • MCP servers in ~/.claude.json and .mcp.json. The desktop app also loads servers from the chat app’s claude_desktop_config.json into local Code sessions; the CLI does not read that file.
  • Settings, permission rules, hooks and skills from ~/.claude/settings.json and the project’s .claude/ folder.
  • The same models, chosen from a dropdown in the app and panel or with /model in the terminal.

What they do not share is the session list. The desktop app keeps its own list; the extension and the CLI share conversation history with each other. That matters when you want to continue work somewhere else.

Who each one suits

  • The desktop app suits people who review more than they type: tech leads checking several pieces of work, product managers, anyone who finds a terminal a barrier. It is also the easiest way to run parallel sessions with worktrees and see them all at once. People new to Claude Code often start here; the first steps are the same either way, as Claude Code for beginners shows.
  • The CLI suits people who already work in a terminal, anyone scripting or scheduling runs, teams on Amazon Bedrock, Google Cloud or Microsoft Foundry, and anyone using features that are CLI-only, such as agent teams, covered in subagents vs agent teams.
  • The VS Code extension suits developers who want to ask about the code in front of them: select lines, ask, accept a diff, carry on. The details are in Claude Code in VS Code.

Moving a session between them

  • CLI to desktop app: run /desktop in the terminal. Claude saves the session, opens it in the app and exits the CLI. It works on macOS and x64 Windows when you are signed in with a Claude subscription, not with an API key.
  • Desktop app from the CLI: type /resume in the app’s prompt box to list sessions you started in the terminal and continue one with its full context.
  • Extension to CLI and back: run claude --resume in any terminal and pick the conversation you started in the panel, or open a terminal conversation from the panel’s session history.
  • Desktop app to the web or your editor: the Continue in menu in the session toolbar sends a local session to the cloud, which needs a clean working tree, or opens the project in your IDE.

And the web version

Claude Code on the web, at claude.ai/code, is not a fourth front end on your machine: it runs cloud sessions (opens in a new tab) on Anthropic-managed infrastructure by default, against a GitHub repository, and they keep going after you close the laptop. You can start one from the browser, the Claude mobile app, the desktop app by choosing Cloud, or the terminal with claude --cloud, and pull one back into a terminal with /teleport. It suits long tasks that need little steering; it needs a Claude subscription and GitHub access.

One record across all three

Because each surface keeps its own session list, the answer to “what did Claude do on this yesterday?” is often in a different window from the one you are looking at. Put the record where every surface can reach it. A fenbs board connected once with claude mcp add --transport http fenbs https://fenbs.ai/api/mcp lands in the shared configuration (add --scope user to have it in every project, not only this one), so the terminal, the desktop app’s local sessions and the VS Code panel all see the same board, and every change they make is recorded as Claude acting for you. The CLAUDE.md lines that make each session read the board first and comment when it stops are in a task-tracking workflow for Claude Code.

Related

Installing on Windows, including the WSL choice: Claude Code on Windows. Scheduling runs from the desktop app or the cloud: Claude Code scheduled tasks. Connecting a board: the Claude Code integration and the MCP docs.

Questions people ask.

Is the Claude Code desktop app the same as the CLI?

It runs the same engine and reads the same configuration, CLAUDE.md files and MCP servers, but with a graphical interface: visual diffs, panes and parallel sessions in a sidebar. It lacks scripting with claude -p, agent teams and the commands that open a terminal dialog, such as /permissions.

Do I need to install the CLI to use the desktop app?

No. Install the Claude desktop app, sign in with a Pro, Max, Team or Enterprise plan and open the Code tab. Install the CLI separately only if you also want to work in a terminal; the two can run at the same time on the same project.

Can I use the Claude Code desktop app with an API key or Amazon Bedrock?

By default the desktop app uses a Claude subscription and Anthropic’s API. Gateway routing can be configured, and a separate deployment option runs the Code tab on other providers, but for Amazon Bedrock or Microsoft Foundry the documentation suggests the CLI, an IDE extension, or Claude Desktop on 3P, which runs the Code tab on those providers.

Which is better for beginners, the desktop app or the CLI?

The desktop app if a terminal feels unfamiliar, because you choose a folder, type a request and review changes in a diff pane. The CLI if you are comfortable in a terminal. The skills are the same, and you can move a session from the CLI to the app with /desktop.

Start with one thing.

There is nothing to set up first. Write one line and you’ve started.