4 4
5# Use Claude Code Desktop5# Use Claude Code Desktop
6 6
7> Get more out of Claude Code Desktop: parallel sessions with Git isolation, visual diff review, permission modes, connectors, and enterprise configuration.7> Get more out of Claude Code Desktop: parallel sessions with Git isolation, visual diff review, app previews, PR monitoring, permission modes, connectors, and enterprise configuration.
8 8
9The Code tab in the Desktop app lets you use Claude Code through a graphical interface instead of the terminal. You get visual diff review with inline comments, permission modes that control how much Claude does on its own, parallel sessions with automatic Git isolation, and connectors that integrate tools like GitHub, Slack, and Linear. Sessions can run locally, on a remote machine over [SSH](#ssh-sessions), or in [the cloud](#run-long-running-tasks-remotely).9The Code tab within the Claude Desktop app lets you use Claude Code through a graphical interface instead of the terminal.
10
11Desktop adds these capabilities on top of the standard Claude Code experience:
12
13* Visual diff review with inline comments
14* Live app preview with dev servers
15* GitHub PR monitoring with auto-fix and auto-merge
16* Parallel sessions with automatic Git worktree isolation
17* Connectors for GitHub, Slack, Linear, and more
18* Local, [SSH](#ssh-sessions), and [cloud](#run-long-running-tasks-remotely) environments
10 19
11<Tip>20<Tip>
12 New to Desktop? Start with [Get started](/en/desktop-quickstart) to install the app and make your first edit.21 New to Desktop? Start with [Get started](/en/desktop-quickstart) to install the app and make your first edit.
18 27
19Before you send your first message, configure four things in the prompt area:28Before you send your first message, configure four things in the prompt area:
20 29
21* **Environment**: choose where Claude runs. Select **Local** for your machine, a **cloud environment** for Anthropic-hosted sessions, or an [**SSH connection**](#ssh-sessions) for a remote machine you manage. See [environment configuration](#environment-configuration).30* **Environment**: choose where Claude runs. Select **Local** for your machine, **Remote** for Anthropic-hosted cloud sessions, or an [**SSH connection**](#ssh-sessions) for a remote machine you manage. See [environment configuration](#environment-configuration).
22* **Project folder**: select the folder or repository Claude works in. For remote sessions, you can add [multiple repositories](#run-long-running-tasks-remotely).31* **Project folder**: select the folder or repository Claude works in. For remote sessions, you can add [multiple repositories](#run-long-running-tasks-remotely).
23* **Model**: pick a [model](/en/overview#models) from the dropdown next to the send button. The model is locked once the session starts.32* **Model**: pick a [model](/en/model-config#available-models) from the dropdown next to the send button. The model is locked once the session starts.
24* **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session.33* **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session.
25 34
26Type your task and press **Enter** to start. Each session tracks its own context and changes independently.35Type your task and press **Enter** to start. Each session tracks its own context and changes independently.
44 53
45### Choose a permission mode54### Choose a permission mode
46 55
47Permission modes control how much autonomy Claude has during a session: whether it asks before editing files, running commands, or both. You can switch modes at any time using the mode selector next to the send button. Start with Ask mode to see exactly what Claude does, then move to Code or Plan as you get comfortable.56Permission modes control how much autonomy Claude has during a session: whether it asks before editing files, running commands, or both. You can switch modes at any time using the mode selector next to the send button. Start with Ask permissions to see exactly what Claude does, then move to Auto accept edits or Plan mode as you get comfortable.
48 57
49| Mode | Settings key | Behavior |58| Mode | Settings key | Behavior |
50| -------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |59| ---------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51| **Ask** | `default` | Claude asks for your approval before each file edit or command. You see a diff view and can accept or reject each change. Recommended for new users. |60| **Ask permissions** | `default` | Claude asks before editing files or running commands. You see a diff and can accept or reject each change. Recommended for new users. |
52| **Code** | `acceptEdits` | Claude auto-accepts file edits but still asks before running terminal commands. Use this when you trust file changes and want faster iteration. |61| **Auto accept edits** | `acceptEdits` | Claude auto-accepts file edits but still asks before running terminal commands. Use this when you trust file changes and want faster iteration. |
53| **Plan** | `plan` | Claude analyzes your code and creates a plan without modifying files or running commands. Good for complex tasks where you want to review the approach first. |62| **Plan mode** | `plan` | Claude analyzes your code and creates a plan without modifying files or running commands. Good for complex tasks where you want to review the approach first. |
54| **Act** | `bypassPermissions` | Claude runs without any permission prompts, equivalent to `--dangerously-skip-permissions` in the CLI. Enable in your Settings → Claude Code under "Allow bypass permissions mode". Only use this in sandboxed containers or VMs. Enterprise admins can disable this option. |63| **Bypass permissions** | `bypassPermissions` | Claude runs without any permission prompts, equivalent to `--dangerously-skip-permissions` in the CLI. Enable in your Settings → Claude Code under "Allow bypass permissions mode". Only use this in sandboxed containers or VMs. Enterprise admins can disable this option. |
55 64
56The `dontAsk` permission mode is available only in the [CLI](/en/permissions#permission-modes).65The `dontAsk` permission mode is available only in the [CLI](/en/permissions#permission-modes).
57 66
58<Tip title="Best practice">67<Tip title="Best practice">
59 Start complex tasks in Plan mode so Claude maps out an approach before making changes. Once you approve the plan, switch to Code or Ask mode to execute it. See [explore first, then plan, then code](/en/best-practices#explore-first-then-plan-then-code) for more on this workflow.68 Start complex tasks in Plan mode so Claude maps out an approach before making changes. Once you approve the plan, switch to Auto accept edits or Ask permissions to execute it. See [explore first, then plan, then code](/en/best-practices#explore-first-then-plan-then-code) for more on this workflow.
60</Tip>69</Tip>
61 70
62Remote sessions support Code mode and Plan mode. Ask mode is not available because remote sessions auto-accept file edits by default, and Act mode is not available because the remote environment is already sandboxed.71Remote sessions support Auto accept edits and Plan mode. Ask permissions is not available because remote sessions auto-accept file edits by default, and Bypass permissions is not available because the remote environment is already sandboxed.
63 72
64Enterprise admins can restrict which permission modes are available. See [enterprise configuration](#enterprise-configuration) for details.73Enterprise admins can restrict which permission modes are available. See [enterprise configuration](#enterprise-configuration) for details.
65 74
75### Preview your app
76
77Claude can start a dev server and open an embedded browser to verify its changes. This works for frontend web apps as well as backend servers: Claude can test API endpoints, view server logs, and iterate on issues it finds. In most cases, Claude starts the server automatically after editing project files. You can also ask Claude to preview at any time. By default, Claude [auto-verifies](#auto-verify-changes) changes after every edit.
78
79From the preview panel, you can:
80
81* Interact with your running app directly in the embedded browser
82* Watch Claude verify its own changes automatically: it takes screenshots, inspects the DOM, clicks elements, fills forms, and fixes issues it finds
83* Start or stop servers from the **Preview** dropdown in the session toolbar
84* Persist cookies and local storage across server restarts by selecting **Persist sessions** in the dropdown, so you don't have to re-login during development
85* Edit the server configuration or stop all servers at once
86
87Claude creates the initial server configuration based on your project. If your app uses a custom dev command, edit `.claude/launch.json` to match your setup. See [Configure preview servers](#configure-preview-servers) for the full reference.
88
89To clear saved session data, toggle **Persist preview sessions** off in Settings → Claude Code. To disable preview entirely, toggle off **Preview** in Settings → Claude Code.
90
66### Review changes with diff view91### Review changes with diff view
67 92
68After Claude makes changes to your code, the diff view lets you review modifications file by file before creating a pull request.93After Claude makes changes to your code, the diff view lets you review modifications file by file before creating a pull request.
76 101
77Claude reads your comments and makes the requested changes, which appear as a new diff you can review.102Claude reads your comments and makes the requested changes, which appear as a new diff you can review.
78 103
104### Review your code
105
106In the diff view, click **Review code** in the top-right toolbar to ask Claude to evaluate the changes before you commit. Claude examines the current diffs and leaves comments directly in the diff view. You can respond to any comment or ask Claude to revise.
107
108The review focuses on high-signal issues: compile errors, definite logic errors, security vulnerabilities, and obvious bugs. It does not flag style, formatting, pre-existing issues, or anything a linter would catch.
109
110### Monitor pull request status
111
112After you open a pull request, a CI status bar appears in the session. Claude Code uses the GitHub CLI to poll check results and surface failures.
113
114* **Auto-fix**: when enabled, Claude automatically attempts to fix failing CI checks by reading the failure output and iterating.
115* **Auto-merge**: when enabled, Claude merges the PR once all checks pass. The merge method is squash. Auto-merge must be [enabled in your GitHub repository settings](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) for this to work.
116
117Use the **Auto-fix** and **Auto-merge** toggles in the CI status bar to enable either option. Claude Code also sends a desktop notification when CI finishes.
118
119<Note>
120 PR monitoring requires the [GitHub CLI (`gh`)](https://cli.github.com/) to be installed and authenticated on your machine. If `gh` is not installed, Desktop prompts you to install it the first time you try to create a PR.
121</Note>
122
79## Manage sessions123## Manage sessions
80 124
81Each session is an independent conversation with its own context and changes. You can run multiple sessions in parallel or send work to the cloud.125Each session is an independent conversation with its own context and changes. You can run multiple sessions in parallel or send work to the cloud.
87Worktrees are stored in `<project-root>/.claude/worktrees/` by default. You can change this to a custom directory in Settings → Claude Code under "Worktree location". You can also set a branch prefix that gets prepended to every worktree branch name, which is useful for keeping Claude-created branches organized. To remove a worktree when you're done, hover over the session in the sidebar and click the archive icon.131Worktrees are stored in `<project-root>/.claude/worktrees/` by default. You can change this to a custom directory in Settings → Claude Code under "Worktree location". You can also set a branch prefix that gets prepended to every worktree branch name, which is useful for keeping Claude-created branches organized. To remove a worktree when you're done, hover over the session in the sidebar and click the archive icon.
88 132
89<Note>133<Note>
90 Session isolation requires [Git](https://git-scm.com/downloads). Most Macs include Git by default. Run `git --version` in Terminal to check. On Windows, [download Git](https://git-scm.com/downloads) if you don't have it.134 Session isolation requires [Git](https://git-scm.com/downloads). Most Macs include Git by default. Run `git --version` in Terminal to check. On Windows, Git is required for the Code tab to work: [download Git for Windows](https://git-scm.com/downloads/win), install it, and restart the app. If you run into Git errors, try a Cowork session to help troubleshoot your setup.
91
92 Without Git, sessions share the same files and changes in one session are immediately visible in others.
93</Note>135</Note>
94 136
95Use the filter icon at the top of the sidebar to filter sessions by status (Active, Archived) and environment (Local, Cloud). To rename a session or check context usage, click the session title in the toolbar at the top of the active session. When context fills up, Claude automatically summarizes the conversation and continues working. You can also type "compact this conversation" to trigger summarization earlier and free up context space. See [the context window](/en/how-claude-code-works#the-context-window) for details on how compaction works.137Use the filter icon at the top of the sidebar to filter sessions by status (Active, Archived) and environment (Local, Cloud). To rename a session or check context usage, click the session title in the toolbar at the top of the active session. When context fills up, Claude automatically summarizes the conversation and continues working. You can also type `/compact` to trigger summarization earlier and free up context space. See [the context window](/en/how-claude-code-works#the-context-window) for details on how compaction works.
96 138
97### Run long-running tasks remotely139### Run long-running tasks remotely
98 140
111 153
112## Extend Claude Code154## Extend Claude Code
113 155
114Connect external services, add reusable workflows, and customize Claude's behavior for your project.156Connect external services, add reusable workflows, customize Claude's behavior, and configure preview servers.
115 157
116### Connect external tools158### Connect external tools
117 159
135 177
136Plugins can be scoped to your user account, a specific project, or local-only. Plugins are not available for remote sessions. For the full plugin reference including creating your own plugins, see [plugins](/en/plugins).178Plugins can be scoped to your user account, a specific project, or local-only. Plugins are not available for remote sessions. For the full plugin reference including creating your own plugins, see [plugins](/en/plugins).
137 179
180### Configure preview servers
181
182Claude automatically detects your dev server setup and stores the configuration in `.claude/launch.json` at the root of the folder you selected when starting the session. Preview uses this folder as its working directory, so if you selected a parent folder, subfolders with their own dev servers won't be detected automatically. To work with a subfolder's server, either start a session in that folder directly or add a configuration manually.
183
184To customize how your server starts, for example to use `yarn dev` instead of `npm run dev` or to change the port, edit the file manually or click **Edit configuration** in the Preview dropdown to open it in your code editor. The file supports JSON with comments.
185
186```json theme={null}
187{
188 "version": "0.0.1",
189 "configurations": [
190 {
191 "name": "my-app",
192 "runtimeExecutable": "npm",
193 "runtimeArgs": ["run", "dev"],
194 "port": 3000
195 }
196 ]
197}
198```
199
200You can define multiple configurations to run different servers from the same project, such as a frontend and an API. See the [examples](#examples) below.
201
202#### Auto-verify changes
203
204When `autoVerify` is enabled, Claude automatically verifies code changes after editing files. It takes screenshots, checks for errors, and confirms changes work before completing its response.
205
206Auto-verify is on by default. Disable it per-project by adding `"autoVerify": false` to `.claude/launch.json`, or toggle it from the **Preview** dropdown menu.
207
208```json theme={null}
209{
210 "version": "0.0.1",
211 "autoVerify": false,
212 "configurations": [...]
213}
214```
215
216When disabled, preview tools are still available and you can ask Claude to verify at any time. Auto-verify makes it automatic after every edit.
217
218#### Configuration fields
219
220Each entry in the `configurations` array accepts the following fields:
221
222| Field | Type | Description |
223| ------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
224| `name` | string | A unique identifier for this server |
225| `runtimeExecutable` | string | The command to run, such as `npm`, `yarn`, or `node` |
226| `runtimeArgs` | string\[] | Arguments passed to `runtimeExecutable`, such as `["run", "dev"]` |
227| `port` | number | The port your server listens on. Defaults to 3000 |
228| `cwd` | string | Working directory relative to your project root. Defaults to the project root. Use `${workspaceFolder}` to reference the project root explicitly |
229| `env` | object | Additional environment variables as key-value pairs, such as `{ "NODE_ENV": "development" }`. Don't put secrets here since this file is committed to your repo. Secrets set in your shell profile are inherited automatically. |
230| `autoPort` | boolean | How to handle port conflicts. See below |
231| `program` | string | A script to run with `node`. See [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |
232| `args` | string\[] | Arguments passed to `program`. Only used when `program` is set |
233
234##### When to use `program` vs `runtimeExecutable`
235
236Use `runtimeExecutable` with `runtimeArgs` to start a dev server through a package manager. For example, `"runtimeExecutable": "npm"` with `"runtimeArgs": ["run", "dev"]` runs `npm run dev`.
237
238Use `program` when you have a standalone script you want to run with `node` directly. For example, `"program": "server.js"` runs `node server.js`. Pass additional flags with `args`.
239
240#### Port conflicts
241
242The `autoPort` field controls what happens when your preferred port is already in use:
243
244* **`true`**: Claude finds and uses a free port automatically. Suitable for most dev servers.
245* **`false`**: Claude fails with an error. Use this when your server must use a specific port, such as for OAuth callbacks or CORS allowlists.
246* **Not set (default)**: Claude asks whether the server needs that exact port, then saves your answer.
247
248When Claude picks a different port, it passes the assigned port to your server via the `PORT` environment variable.
249
250#### Examples
251
252These configurations show common setups for different project types:
253
254<Tabs>
255 <Tab title="Next.js">
256 This configuration runs a Next.js app using Yarn on port 3000:
257
258 ```json theme={null}
259 {
260 "version": "0.0.1",
261 "configurations": [
262 {
263 "name": "web",
264 "runtimeExecutable": "yarn",
265 "runtimeArgs": ["dev"],
266 "port": 3000
267 }
268 ]
269 }
270 ```
271 </Tab>
272
273 <Tab title="Multiple servers">
274 For a monorepo with a frontend and an API server, define multiple configurations. The frontend uses `autoPort: true` so it picks a free port if 3000 is taken, while the API server requires port 8080 exactly:
275
276 ```json theme={null}
277 {
278 "version": "0.0.1",
279 "configurations": [
280 {
281 "name": "frontend",
282 "runtimeExecutable": "npm",
283 "runtimeArgs": ["run", "dev"],
284 "cwd": "apps/web",
285 "port": 3000,
286 "autoPort": true
287 },
288 {
289 "name": "api",
290 "runtimeExecutable": "npm",
291 "runtimeArgs": ["run", "start"],
292 "cwd": "server",
293 "port": 8080,
294 "env": { "NODE_ENV": "development" },
295 "autoPort": false
296 }
297 ]
298 }
299 ```
300 </Tab>
301
302 <Tab title="Node.js script">
303 To run a Node.js script directly instead of using a package manager command, use the `program` field:
304
305 ```json theme={null}
306 {
307 "version": "0.0.1",
308 "configurations": [
309 {
310 "name": "server",
311 "program": "server.js",
312 "args": ["--verbose"],
313 "port": 4000
314 }
315 ]
316 }
317 ```
318 </Tab>
319</Tabs>
320
138## Environment configuration321## Environment configuration
139 322
140When starting a session, you choose between three environments:323When starting a session, you choose between three environments:
147 330
148Local sessions inherit environment variables from your shell. If you need additional variables, set them in your shell profile, such as `~/.zshrc` or `~/.bashrc`, and restart the desktop app. See [environment variables](/en/settings#environment-variables) for the full list of supported variables.331Local sessions inherit environment variables from your shell. If you need additional variables, set them in your shell profile, such as `~/.zshrc` or `~/.bashrc`, and restart the desktop app. See [environment variables](/en/settings#environment-variables) for the full list of supported variables.
149 332
150[Extended thinking](/en/common-workflows#use-extended-thinking-thinking-mode) is enabled by default, which improves performance on complex reasoning tasks but uses additional tokens. To disable it or adjust the budget, set `MAX_THINKING_TOKENS` in your shell profile. Use `0` to disable.333[Extended thinking](/en/common-workflows#use-extended-thinking-thinking-mode) is enabled by default, which improves performance on complex reasoning tasks but uses additional tokens. To disable thinking entirely, set `MAX_THINKING_TOKENS=0` in your shell profile. On Opus, `MAX_THINKING_TOKENS` is ignored except for `0` because adaptive reasoning controls thinking depth instead.
151 334
152### Remote sessions335### Remote sessions
153 336
154Remote sessions continue in the background even if you close the app. Usage counts toward your [subscription plan limits](/en/costs) with no separate compute charges.337Remote sessions continue in the background even if you close the app. Usage counts toward your [subscription plan limits](/en/costs) with no separate compute charges.
155 338
156You can create custom cloud environments with different network access levels and environment variables. Select the environment dropdown when starting a remote session and choose **Add environment**. See [cloud environments](/en/claude-code-on-the-web#cloud-environments) for details on configuring network access and environment variables.339You can create custom cloud environments with different network access levels and environment variables. Select the environment dropdown when starting a remote session and choose **Add environment**. See [cloud environments](/en/claude-code-on-the-web#cloud-environment) for details on configuring network access and environment variables.
157 340
158### SSH sessions341### SSH sessions
159 342
168 351
169Once added, the connection appears in the environment dropdown. Select it to start a session on that machine. Claude runs on the remote machine with access to its files and tools.352Once added, the connection appears in the environment dropdown. Select it to start a session on that machine. Claude runs on the remote machine with access to its files and tools.
170 353
171SSH sessions support permission modes, connectors, plugins, and MCP servers. Claude Code must be installed on the remote machine.354Claude Code must be installed on the remote machine. Once connected, SSH sessions support permission modes, connectors, plugins, and MCP servers.
172 355
173## Enterprise configuration356## Enterprise configuration
174 357
179These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code):362These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code):
180 363
181* **Enable or disable the Code tab**: control whether users in your organization can access Claude Code in the desktop app364* **Enable or disable the Code tab**: control whether users in your organization can access Claude Code in the desktop app
182* **Disable Act mode**: prevent users in your organization from enabling bypass permissions mode365* **Disable Bypass permissions mode**: prevent users in your organization from enabling bypass permissions mode
183* **Disable Claude Code on the web**: enable or disable remote sessions for your organization366* **Disable Claude Code on the web**: enable or disable remote sessions for your organization
184 367
185### Managed settings368### Managed settings
187Managed settings override project and user settings and apply when Desktop spawns CLI sessions. You can set these keys in your organization's [managed settings](/en/settings#settings-precedence) file or push them remotely through the admin console.370Managed settings override project and user settings and apply when Desktop spawns CLI sessions. You can set these keys in your organization's [managed settings](/en/settings#settings-precedence) file or push them remotely through the admin console.
188 371
189| Key | Description |372| Key | Description |
190| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |373| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
191| `permissions.disableBypassPermissionsMode` | set to `"disable"` to prevent users from enabling Act mode. See [permissions](/en/permissions#managed-settings). |374| `disableBypassPermissionsMode` | set to `"disable"` to prevent users from enabling Bypass permissions mode. See [permissions](/en/permissions#managed-settings). |
375
376For the complete list of managed-only settings including `allowManagedPermissionRulesOnly` and `allowManagedHooksOnly`, see [managed-only settings](/en/permissions#managed-only-settings).
192 377
193Remote managed settings uploaded through the admin console currently apply to CLI and IDE sessions only. For Desktop-specific restrictions, use the admin console controls above.378Remote managed settings uploaded through the admin console currently apply to CLI and IDE sessions only. For Desktop-specific restrictions, use the admin console controls above.
194 379
233This table shows the desktop app equivalent for common CLI flags. Flags not listed have no desktop equivalent because they are designed for scripting or automation.418This table shows the desktop app equivalent for common CLI flags. Flags not listed have no desktop equivalent because they are designed for scripting or automation.
234 419
235| CLI | Desktop equivalent |420| CLI | Desktop equivalent |
236| ------------------------------------- | ------------------------------------------------------------------------------------------------------------- |421| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
237| `--model sonnet` | model dropdown next to the send button, before starting a session |422| `--model sonnet` | model dropdown next to the send button, before starting a session |
238| `--resume`, `--continue` | click a session in the sidebar |423| `--resume`, `--continue` | click a session in the sidebar |
239| `--permission-mode` | mode selector next to the send button |424| `--permission-mode` | mode selector next to the send button |
240| `--dangerously-skip-permissions` | Settings → Claude Code → "Allow bypass permissions mode". Enterprise admins can disable this setting. |425| `--dangerously-skip-permissions` | Bypass permissions mode. Enable in Settings → Claude Code → "Allow bypass permissions mode". Enterprise admins can disable this setting. |
241| `--add-dir` | add multiple repos with the **+** button in remote sessions |426| `--add-dir` | add multiple repos with the **+** button in remote sessions |
242| `--allowedTools`, `--disallowedTools` | not available in Desktop |427| `--allowedTools`, `--disallowedTools` | not available in Desktop |
243| `--verbose` | not available. Check system logs: Console.app on macOS, Event Viewer → Application on Windows |428| `--verbose` | not available. Check system logs: Console.app on macOS, Event Viewer → Windows Logs → Application on Windows |
244| `--print`, `--output-format` | not available. Desktop is interactive only. |429| `--print`, `--output-format` | not available. Desktop is interactive only. |
245| `ANTHROPIC_MODEL` env var | model dropdown next to the send button |430| `ANTHROPIC_MODEL` env var | model dropdown next to the send button |
246| `MAX_THINKING_TOKENS` env var | set in shell profile; applies to local sessions. See [environment configuration](#environment-configuration). |431| `MAX_THINKING_TOKENS` env var | set in shell profile; applies to local sessions. See [environment configuration](#environment-configuration). |
264This table compares core capabilities between the CLI and Desktop. For a full list of CLI flags, see the [CLI reference](/en/cli-reference).449This table compares core capabilities between the CLI and Desktop. For a full list of CLI flags, see the [CLI reference](/en/cli-reference).
265 450
266| Feature | CLI | Desktop |451| Feature | CLI | Desktop |
267| ----------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------ |452| ----------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
268| Permission modes | all modes including `dontAsk` | Ask, Code, Plan, and Act via Settings |453| Permission modes | all modes including `dontAsk` | Ask permissions, Auto accept edits, Plan mode, and Bypass permissions via Settings |
269| `--dangerously-skip-permissions` | CLI flag | Settings → Claude Code → "Allow bypass permissions mode" |454| `--dangerously-skip-permissions` | CLI flag | Bypass permissions mode. Enable in Settings → Claude Code → "Allow bypass permissions mode" |
270| [Third-party providers](/en/third-party-integrations) | Bedrock, Vertex, Foundry | not available. Desktop connects to Anthropic's API directly. |455| [Third-party providers](/en/third-party-integrations) | Bedrock, Vertex, Foundry | not available. Desktop connects to Anthropic's API directly. |
271| [MCP servers](/en/mcp) | configure in settings files | Connectors UI for local and SSH sessions, or settings files |456| [MCP servers](/en/mcp) | configure in settings files | Connectors UI for local and SSH sessions, or settings files |
272| [Plugins](/en/plugins) | `/plugin` command | plugin manager UI |457| [Plugins](/en/plugins) | `/plugin` command | plugin manager UI |
273| @mention files | text-based | with autocomplete |458| @mention files | text-based | with autocomplete |
274| File attachments | not available | images, PDFs |459| File attachments | not available | images, PDFs |
275| Session isolation | manual via git worktrees | automatic worktrees |460| Session isolation | [`--worktree`](/en/cli-reference) flag | automatic worktrees |
276| Multiple sessions | separate terminals | sidebar tabs |461| Multiple sessions | separate terminals | sidebar tabs |
277| Scripting and automation | [`--print`](/en/cli-reference), [Agent SDK](/en/headless) | not available |462| Scripting and automation | [`--print`](/en/cli-reference), [Agent SDK](/en/headless) | not available |
278 463
321 506
322### Git and Git LFS errors507### Git and Git LFS errors
323 508
324Git is required for session isolation and worktrees. If you see "Git is required," install Git from [git-scm.com](https://git-scm.com/downloads) and restart the app.509On Windows, Git is required for the Code tab to start local sessions. If you see "Git is required," install [Git for Windows](https://git-scm.com/downloads/win) and restart the app.
325 510
326If you see "Git LFS is required by this repository but is not installed," install Git LFS from [git-lfs.com](https://git-lfs.com/), run `git lfs install`, and restart the app.511If you see "Git LFS is required by this repository but is not installed," install Git LFS from [git-lfs.com](https://git-lfs.com/), run `git lfs install`, and restart the app.
327 512
338 523
339* **PATH not updated after install**: open a new terminal window. PATH updates only apply to new terminal sessions.524* **PATH not updated after install**: open a new terminal window. PATH updates only apply to new terminal sessions.
340* **Concurrent installation error**: if you see an error about another installation in progress but there isn't one, try running the installer as Administrator.525* **Concurrent installation error**: if you see an error about another installation in progress but there isn't one, try running the installer as Administrator.
341* **ARM64 limitations**: Windows ARM64 devices can run the desktop app but do not support local sessions. Use **Remote** sessions instead.526* **ARM64**: Windows ARM64 devices are fully supported.
342 527
343### Cowork tab unavailable on Intel Macs528### Cowork tab unavailable on Intel Macs
344 529
345The Cowork tab requires Apple Silicon, M1 or later. The Chat and Code tabs work normally on Intel Macs.530The Cowork tab requires Apple Silicon (M1 or later) on macOS. On Windows, Cowork is available on all supported hardware. The Chat and Code tabs work normally on Intel Macs.
346 531
347### "Branch doesn't exist yet" when opening in CLI532### "Branch doesn't exist yet" when opening in CLI
348 533
358* Search or file a bug on [GitHub Issues](https://github.com/anthropics/claude-code/issues)543* Search or file a bug on [GitHub Issues](https://github.com/anthropics/claude-code/issues)
359* Visit the [Claude support center](https://support.claude.com/)544* Visit the [Claude support center](https://support.claude.com/)
360 545
361When filing a bug, include your desktop app version, your operating system, the exact error message, and relevant logs. On macOS, check Console.app. On Windows, check Event Viewer → Application.546When filing a bug, include your desktop app version, your operating system, the exact error message, and relevant logs. On macOS, check Console.app. On Windows, check Event Viewer → Windows Logs → Application.