Claude Code ships as a terminal CLI, a desktop app (the Code tab in Claude for macOS, Windows, and Linux in beta), a web surface at claude.ai/code, the Claude mobile app, and VS Code and JetBrains extensions. The CLI, the desktop app, and the IDE extensions run the agent on your machine and see your uncommitted work. The web runs it in an Anthropic-managed VM that clones from GitHub. Mobile is a window into a session running somewhere else. All the local surfaces share CLAUDE.md, settings.json, MCP servers, hooks, and skills, and each keeps its own session history.
- One engine, five front ends. Where the agent runs is the only structural difference.
- CLI and desktop run on your machine and see uncommitted changes. The web does not.
- Desktop gives you automatic git worktrees per session; the CLI needs
--worktree. - Scripting,
--print, the Agent SDK, and third-party providers are CLI only. - Config is shared across local surfaces. Session history is not.
The five surfaces
Anthropic runs the same agent loop behind all of them. What changes is the machine the loop executes on, what that machine can see, and which features the front end exposes.
Claude Code surfaces, as of August 2026.
| Surface | Agent runs on | Sees uncommitted work | Built for |
|---|---|---|---|
| Terminal CLI | Your machine | Yes | Everything. The only complete surface. |
| Desktop app, Code tab | Your machine, an SSH host, WSL, or the cloud | Yes for local sessions | Visual review and parallel sessions |
Web, claude.ai/code | An Anthropic-managed VM | No. It clones from GitHub. | Long tasks that continue while you are away |
| Claude mobile app | Whatever machine the session already uses | Through that machine | Starting and steering, not authoring |
| VS Code, JetBrains | Your machine | Yes | Staying inside the editor |
Terminal CLI curl -fsSL https://claude.ai/install.sh | bash
Desktop the Claude app for macOS (universal), Windows (x64 and ARM64),
or Linux beta via apt or .deb on Ubuntu and Debian
Web claude.ai/code, nothing to install
Mobile the Claude app for iOS and Android
IDE the Claude Code extension for VS Code or JetBrains
Where the agent process runs
Read the middle column of that table again, because it decides everything people actually argue about: what the agent can see, what it can break, whether it keeps working when you shut the lid, and who pays for the compute.
| If the agent runs | It can reach | It cannot reach | It stops when |
|---|---|---|---|
| On your machine | Your working tree, your local database, your .env, your MCP servers | Nothing, unless you constrain it | You close the process |
| In an Anthropic VM | A fresh clone of a GitHub branch | Your disk, your uncommitted work, your local services | The VM idles out and is reclaimed |
| On your machine, driven remotely | Everything a local session reaches | Same as local | The local process exits |
Desktop against the terminal
Both run the same engine on the same machine and read the same configuration files. The differences are entirely about the front end, and they cut both ways.
What the desktop app adds
| Capability | CLI | Desktop |
|---|---|---|
| Session isolation | --worktree flag | Automatic worktrees, one per session |
| Multiple sessions | Separate terminals or tmux | Sidebar tabs, Ctrl+Tab to cycle |
| Diff review | git diff afterwards | Diff pane with inline comments |
| App preview | Run the server yourself | Browser pane, and Claude verifies its own changes in it |
| File attachments | Not available | Images and PDFs, drag and drop |
| @mention files | Text based | Autocomplete, local and SSH sessions only |
| Recurring work | cron or CI | Scheduled tasks |
| iOS simulator | Via computer use | Dedicated simulator pane |
| From your phone | Remote Control | Remote Control, plus Dispatch |
Cmd N new session
Ctrl Tab next session (Ctrl Shift Tab for previous)
Cmd Shift D toggle the diff pane
Cmd Shift B toggle the Browser pane
Ctrl ` toggle the terminal pane
Cmd ; open a side chat that uses this session context
Ctrl O cycle transcript view: Normal, Verbose, Summary
Cmd Shift M permission mode menu
Cmd / show every shortcut
What the terminal keeps
- Scripting.
--printand--output-format jsondo not exist in the desktop app. Desktop is interactive only. - The Agent SDK. Building on the loop is a CLI and library concern.
- Third-party providers. Amazon Bedrock and Microsoft Foundry route through the CLI or the VS Code extension.
- Agent teams. Coordinated teams with a lead assigning work are CLI only. Dynamic workflows do run in the desktop app.
dontAskmode. The locked-down CI mode has no desktop equivalent.- Terminal-dialog commands.
/permissionsanswers with is not available in this environment; edit the settings file instead.
Claude Code on the web
The web surface at claude.ai/code is a different proposition from a browser-based terminal. Every session gets its own Anthropic-managed VM with your repository cloned into it, a pre-configured environment, and limited network access. It keeps running after you close the tab.
Claude Code on the web, checked August 2026.
| Detail | |
|---|---|
| Status | Research preview |
| Plans | Pro, Max, Team, and Enterprise with premium or Chat plus Claude Code seats |
| Isolation | One isolated VM per session |
| Git credentials | Handled by a proxy with scoped credentials; they never enter the sandbox |
| Network | Limited by default, configurable per cloud environment |
| Repo hosting | GitHub. GitLab and Bitbucket only as a one-way local bundle. |
| Compute charge | None. It draws on the same rate limits as everything else on the account. |
Running several cloud tasks in parallel is the reason to use it. Each --cloud invocation is an independent session, and they consume rate limits proportionately rather than queueing behind each other.
claude --cloud "Fix the flaky test in auth.spec.ts"
claude --cloud "Update the API documentation"
claude --cloud "Refactor the logger to use structured output"
# progress for every background session
/tasks
Mobile, and the three ways to work away from the machine
The Claude mobile app does not run an agent on your phone. It is a client, and which thing it is a client for is the part worth getting straight.
| Approach | Agent runs on | You start it with | Good for |
|---|---|---|---|
| Cloud session | An Anthropic VM | claude --cloud, or the web UI | Work with no local setup |
| Remote Control | Your machine | claude remote-control | Steering work already in progress |
| Dispatch | Your machine, via the desktop app | Messaging Dispatch in the Cowork tab | Delegating while away, minimal setup |
# server mode: waits for connections, press space for a QR code
claude remote-control --name "My Project"
# an ordinary interactive session that is also reachable remotely
claude --remote-control
# already mid-session and want to carry on from the couch
/remote-control
Dispatch is the opposite direction: you message a task from the phone and it decides how to handle it, spawning a Code session on the desktop app when the work is development. Dispatch requires Pro or Max and is not available on Team or Enterprise plans.
Moving a session between surfaces
The handoffs that exist, and the one that does not.
| From | To | How |
|---|---|---|
| Terminal | Desktop | /desktop. Saves the session, opens the app, exits the CLI. |
| Terminal | Web | claude --cloud "task", which creates a new cloud session |
| Web | Terminal | claude --teleport, /teleport, or t from /tasks |
| Desktop | Web | Continue in, then Claude Code on the Web |
| Desktop | IDE | Continue in, then Your IDE |
| Local session | Phone or browser | /remote-control |
| Terminal | Web, existing session | Not possible. Handoff from the CLI is one way. |
Check the four teleport requirements first
Teleport refuses rather than guessing. Your working tree must be clean, you must be in a checkout of the same repository rather than a fork, the cloud branch must have been pushed, and you must be signed in to the same claude.ai account.
Pull the session down
claude --teleport # interactive picker
claude --teleport session_01ABC... # straight to one session
Claude verifies the repository, fetches and checks out the cloud branch, and loads the full conversation history into your terminal.
Know what you just did to the cloud copy
The terminal gets its own copy. New work stays local and does not appear back in the cloud session on claude.ai or in the phone app. If you still want to steer from your phone after teleporting, start /remote-control in the local session.
Which one to use
| If you are | Use |
|---|---|
| Scripting, running in CI, or building on the loop | CLI. Nothing else has --print. |
| Running three or four tasks at once and reviewing diffs | Desktop. Worktrees are automatic there. |
| On Bedrock, Google Cloud, or Foundry | CLI or the VS Code extension |
| Handing off a long task and closing the laptop | Web. The VM keeps going. |
| Working on a repo you have not cloned | Web |
| Mid-task and leaving the desk | Remote Control from the phone |
| New to all of it | Desktop if you want a GUI, CLI if you live in a terminal |
Questions people ask
No. They are the same application. The Claude app has Chat, Cowork, and Code tabs, and the Code tab is Claude Code. Installing Claude for macOS, Windows, or Linux gets you all three.
Only for scripting, CI, the Agent SDK, third-party providers such as Bedrock and Foundry, agent teams, and dontAsk mode. Everything interactive works in the app. Most people keep both installed and run them on the same project.
No. There is no --print or --output-format, no inline code suggestions, no agent teams, and terminal-dialog commands such as /permissions reply that they are not available in that environment. In return you get automatic worktrees, a diff pane, an app preview browser, and file attachments.
No. A cloud session runs in an Anthropic-managed VM that clones your GitHub remote at your current branch, so it sees committed code and never your uncommitted changes or your local services. Push before you start one.
Run claude --teleport for a picker, or pass a session id to go straight to one. Your working tree must be clean, you must be in the same repository rather than a fork, the branch must have been pushed, and you must be on the same claude.ai account.
Not from the CLI. claude --cloud always creates a new cloud session. The desktop app can do it through the Continue in menu, which needs a clean working tree and is not available for SSH sessions.
No. It is a client. It either drives a cloud session running in an Anthropic VM, or connects to a Remote Control session that is still executing on your own machine.
The local ones do: CLAUDE.md, settings.json, MCP servers, hooks, and skills are all shared. Session history is not, so each surface shows only the conversations it started.
Sources
Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.