# Mobile Desktop

All documentation for Mobile Desktop.


---
## accessing-claude-app-on-ios-lock-screen-control-center-and-action-button.md

4.  Accessing Claude app on iOS Lock Screen, Control Center, and Action Button

# Accessing Claude app on iOS Lock Screen, Control Center, and Action Button


The features described in this guide are available on iOS 18 and above.

Quickly access Claude app functionality from your Lock Screen, Control Center, or Action Button on iOS. This article will explain how to add the Claude app into these areas.

## **Add Claude app to your Lock Screen**

- Tap and hold your Lock Screen to open Customize Wallpaper

- Tap Customize

- Choose Lock Screen

- Click on an empty area on either of the two bottom circular slots

- Scroll to add “Open Claude”

- Click “Done” on the top right corner

You’ll now be able to tap and hold to open the Claude app from your [Lock Screen](https://support.apple.com/guide/iphone/create-a-custom-lock-screen-iph4d0e6c351/ios).

## **Add Claude app to Control Center**

- Swipe down from the upper right side of your screen to open the Control Center

- Tap & Hold to add a control

- Tap “Add a Control”

- Scroll to add “Open Claude”

You’ll now be able to access the Claude app from your [Control Center](https://support.apple.com/guide/iphone/use-and-customize-control-center-iph59095ec58/ios).

## **Use the Action Button to Open Claude app**

- Open the Settings app

- Go into the “Action Button” settings

- Swipe until you see "Controls"

- Click "Choose a Control..."

- Scroll to “Open Claude”

- Click back into Settings

You’ll now be able to Hold to Open the [Action Button](https://support.apple.com/guide/iphone/use-and-customize-the-action-button-iphe89d61d66/18.0/ios/18.0) to access the Claude app.


---
## desktop-application-claude-code-docs-dc0e6ba558.md

# Desktop application


Get more out of Claude Code Desktop: parallel sessions with Git isolation, drag-and-drop pane layout, integrated terminal and file editor, side chats, computer use, Dispatch sessions from your phone, visual diff review, app previews, PR monitoring, connectors, and enterprise configuration.


> ## Documentation Index
>
> Fetch the complete documentation index at: <https://code.claude.com/docs/llms.txt>
>
> Use this file to discover all available pages before exploring further.

The Claude Desktop app has three tabs: **Chat** for conversations, **Cowork** for [Dispatch and longer agentic work](https://claude.com/product/cowork), and **Code** for software development. This page is the reference for the Code tab.

## Download for macOS

Universal build for Intel and Apple Silicon

## Download for Windows

For x64 processors

For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/docs/en/quickstart) instead. After installing, launch Claude, sign in, and click the **Code** tab. The first time you open it on Windows, you need [Git for Windows](https://git-scm.com/downloads/win) installed; restart the app after installing it. For a walkthrough of your first session, see the [Get started guide](/docs/en/desktop-quickstart). In the Code tab, each conversation is a **session**: it has its own chat history, project folder, and code changes, independent of any other session. The sidebar lists your sessions and lets you run several in parallel. Within a session you can:

- [Review and comment on diffs](#review-changes-with-diff-view), then [watch the resulting PR through CI](#monitor-pull-request-status)
- [Preview your running app](#preview-your-app) in an embedded browser while Claude verifies its own changes
- [Arrange panes](#arrange-your-workspace) for the chat, diff, preview, terminal, and file editor side by side
- Ask a [side question](#ask-a-side-question-without-derailing-the-session) that uses the session’s context without derailing it
- [Connect external tools](#connect-external-tools) like GitHub, Slack, and Linear
- Let Claude [open apps and control your screen](#let-claude-use-your-computer)
- Run on your machine, in the [cloud](#run-long-running-tasks-remotely), or over [SSH](#ssh-sessions)

For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shortcuts](#keyboard-shortcuts), or [sending tasks from your phone](#sessions-from-dispatch), see the linked pages and sections. If you already use the terminal-based CLI, see the [CLI comparison](#coming-from-the-cli) for what carries over.


Start a session

Before you send your first message, configure four things in the prompt area:

- **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).
- **Project folder**: select the folder or repository Claude works in. For remote sessions, you can add [multiple repositories](#run-long-running-tasks-remotely).
- **Model**: pick a [model](/docs/en/model-config#available-models) from the dropdown next to the send button. You can change this during the session.
- **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session.

Type your task and press **Enter** to start. Each session tracks its own context and changes independently.


Work with code

Give Claude the right context, control how much it does on its own, and review what it changed.


Use the prompt box

Type what you want Claude to do and press **Enter** to send. Claude reads your project files, makes changes, and runs commands based on your [permission mode](#choose-a-permission-mode). You can interrupt Claude at any point: click the stop button or type your correction and press **Enter**. Claude stops what it’s doing and adjusts based on your input. The **+** button next to the prompt box gives you access to file attachments, [skills](#use-skills), [connectors](#connect-external-tools), and [plugins](#install-plugins).


Add files and context to prompts

The prompt box supports two ways to bring in external context:

- **@mention files**: type `@` followed by a filename to add a file to the conversation context. Claude can then read and reference that file. @mention is not available in remote sessions.
- **Attach files**: attach images, PDFs, and other files to your prompt using the attachment button, or drag and drop files directly into the prompt. This is useful for sharing screenshots of bugs, design mockups, or reference documents.


Choose a permission mode

Permission 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.

| Mode                   | Settings key        | Behavior                                                                                                                                                                                                                                                                     |
|------------------------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **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.                                                                                                                                        |
| **Auto accept edits**  | `acceptEdits`       | Claude auto-accepts file edits and common filesystem commands like `mkdir`, `touch`, and `mv`, but still asks before running other terminal commands. Use this when you trust file changes and want faster iteration.                                                        |
| **Plan mode**          | `plan`              | Claude reads files and runs commands to explore, then proposes a plan without editing your source code. Good for complex tasks where you want to review the approach first.                                                                                                  |
| **Auto**               | `auto`              | Claude executes all actions with background safety checks that verify alignment with your request. Reduces permission prompts while maintaining oversight. Enable in your Settings → Claude Code. See [availability requirements](#auto-mode-availability) below.            |
| **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. |

The `dontAsk` permission mode is available only in the [CLI](/docs/en/permission-modes#allow-only-pre-approved-tools-with-dontask-mode). Auto mode is a research preview available on Max, Team, Enterprise, and API plans. It is not available on Pro plans or third-party providers. On Team, Enterprise, and API plans it requires Claude Sonnet 4.6, Opus 4.6, or Opus 4.7. On Max plans it requires Claude Opus 4.7.

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](/docs/en/best-practices#explore-first-then-plan-then-code) for more on this workflow.

Remote 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. Enterprise admins can restrict which permission modes are available. See [enterprise configuration](#enterprise-configuration) for details.


Preview your app

Claude 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. The preview pane can also open static HTML files, PDFs, images, and videos from your project. Click an HTML, PDF, image, or video path in the chat to open it in preview. From the preview pane, you can:

- Interact with your running app directly in the embedded browser
- Watch Claude verify its own changes automatically: it takes screenshots, inspects the DOM, clicks elements, fills forms, and fixes issues it finds
- Start or stop servers from the **Preview** dropdown in the session toolbar
- 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
- Edit the server configuration or stop all servers at once

Claude 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. To clear saved session data, toggle **Persist preview sessions** off in Settings → Claude Code. To disable preview entirely, toggle off **Preview** in Settings → Claude Code.


Review changes with diff view

After Claude makes changes to your code, the diff view lets you review modifications file by file before creating a pull request. When Claude changes files, a diff stats indicator appears showing the number of lines added and removed, such as `+12 -1`. Click this indicator to open the diff viewer, which displays a file list on the left and the changes for each file on the right. To comment on specific lines, click any line in the diff to open a comment box. Type your feedback and press **Enter** to add the comment. After adding comments to multiple lines, submit all comments at once:

- **macOS**: press **Cmd+Enter**
- **Windows**: press **Ctrl+Enter**

Claude reads your comments and makes the requested changes, which appear as a new diff you can review.


Review your code

In 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. The 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.


Monitor pull request status

After 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.

- **Auto-fix**: when enabled, Claude automatically attempts to fix failing CI checks by reading the failure output and iterating.
- **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.

Use 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. To archive the session automatically once the PR merges or closes, turn on [auto-archive](#work-in-parallel-with-sessions) in Settings → Claude Code.

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.


Arrange your workspace

The Code tab is built around panes you can arrange in any layout: chat, diff, preview, terminal, file, plan, tasks, and subagent. Drag a pane by its header to reposition it, or drag a pane edge to resize it. Press **Cmd+\\** on macOS or **Ctrl+\\** on Windows to close the focused pane. Open additional panes from the **Views** menu in the session toolbar.

The pane layout, terminal, file editor, and view modes in this section require Claude Desktop v1.2581.0 or later. Open **Claude → Check for Updates** on macOS or **Help → Check for Updates** on Windows to update.


Run commands in the terminal

The integrated terminal lets you run commands alongside your session without switching to another app. Open it from the **Views** menu or press **Ctrl+\`** on macOS or Windows. The terminal opens in your session’s working directory and shares the same environment as Claude, so commands like `npm test` or `git status` see the same files Claude is editing. To open a second terminal tab, click **+** in the terminal pane header or right-click a folder in the chat to choose **Open in terminal**. The terminal is available in local sessions only.


Open and edit files

Click a file path in the chat or diff viewer to open it in the file pane. HTML, PDF, image, and video paths open in the [preview pane](#preview-your-app) instead. Make spot edits and click **Save** to write them back. If the file changed on disk since you opened it, the pane warns you and lets you override or discard. Click **Discard** to revert your edits, or click the path in the pane header to copy the absolute path. The file pane is available in local and SSH sessions. For remote sessions, ask Claude to make the change.


Open files in other apps

Right-click any file path in the chat, diff viewer, or file pane to open a context menu:

- **Attach as context**: add the file to your next prompt
- **Open in**: open the file in an installed editor such as VS Code, Cursor, or Zed
- **Show in Finder** on macOS, **Show in Explorer** on Windows: open the containing folder
- **Copy path**: copy the absolute path to your clipboard


Switch view modes

View modes control how much detail appears in the chat transcript. Switch modes from the **Transcript view** dropdown next to the send button, or press **Ctrl+O** on macOS or Windows to cycle through them.

| Mode        | What it shows                                                  |
|-------------|----------------------------------------------------------------|
| **Normal**  | Tool calls collapsed into summaries, with full text responses  |
| **Verbose** | Every tool call, file read, and intermediate step Claude takes |
| **Summary** | Only Claude’s final responses and the changes it made          |

Use Verbose when debugging why Claude took a particular action. Use Summary when you’re running multiple sessions and want to scan results quickly.


Keyboard shortcuts

Press **Cmd+/** on macOS or **Ctrl+/** on Windows to see all shortcuts available in the Code tab. On Windows, use **Ctrl** in place of **Cmd** for the shortcuts below. Session cycling, the terminal toggle, and the view-mode toggle use **Ctrl** on every platform.

| Shortcut                              | Action                       |
|---------------------------------------|------------------------------|
| `Cmd` `/`                             | Show keyboard shortcuts      |
| `Cmd` `N`                             | New session                  |
| `Cmd` `W`                             | Close session                |
| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab`   | Next or previous session     |
| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Next or previous session     |
| `Esc`                                 | Stop Claude’s response       |
| `Cmd` `Shift` `D`                     | Toggle diff pane             |
| `Cmd` `Shift` `P`                     | Toggle preview pane          |
| `Cmd` `Shift` `S`                     | Select an element in preview |
| `Ctrl` `` ` ``                        | Toggle terminal pane         |
| `Cmd` `\`                             | Close focused pane           |
| `Cmd` `;`                             | Open side chat               |
| `Ctrl` `O`                            | Cycle view modes             |
| `Cmd` `Shift` `M`                     | Open permission mode menu    |
| `Cmd` `Shift` `I`                     | Open model menu              |
| `Cmd` `Shift` `E`                     | Open effort menu             |
| `1`–`9`                               | Select item in an open menu  |

These shortcuts apply only to the Code tab. The terminal-based [interactive mode shortcuts](/docs/en/interactive-mode#keyboard-shortcuts), such as `Shift+Tab` to cycle modes, do not apply in Desktop.


Check usage

Click the usage ring next to the model picker to see your current context window usage and your plan usage for the period. Context usage is per session; plan usage is shared across all your Claude Code surfaces.


Let Claude use your computer

Computer use lets Claude open your apps, control your screen, and work directly on your machine the way you would. Ask Claude to test a native app in a mobile simulator, interact with a desktop tool that has no CLI, or automate something that only works through a GUI.

Computer use is a research preview on macOS and Windows that requires a Pro or Max plan. It is not available on Team or Enterprise plans. The Claude Desktop app must be running.

Computer use is off by default. [Enable it in Settings](#enable-computer-use) before Claude can control your screen. On macOS, you also need to grant Accessibility and Screen Recording permissions.

Unlike the [sandboxed Bash tool](/docs/en/sandboxing), computer use runs on your actual desktop with access to whatever you approve. Claude checks each action and flags potential prompt injection from on-screen content, but the trust boundary is different. See the [computer use safety guide](https://support.claude.com/en/articles/14128542) for best practices.


When computer use applies

Claude has several ways to interact with an app or service, and computer use is the broadest and slowest. It tries the most precise tool first:

- If you have a [connector](#connect-external-tools) for a service, Claude uses the connector.
- If the task is a shell command, Claude uses Bash.
- If the task is browser work and you have [Claude in Chrome](/docs/en/chrome) set up, Claude uses that.
- If none of those apply, Claude uses computer use.

The [per-app access tiers](#app-permissions) reinforce this: browsers are capped at view-only, and terminals and IDEs at click-only, steering Claude toward the dedicated tool even when computer use is active. Screen control is reserved for things nothing else can reach, like native apps, hardware control panels, mobile simulators, or proprietary tools without an API.


Enable computer use

Computer use is off by default. If you ask Claude to do something that needs it while it’s off, Claude tells you it could do the task if you enable computer use in Settings.

1


Update the desktop app

Make sure you have the latest version of Claude Desktop. Download or update at [claude.com/download](https://claude.com/download), then restart the app.

2


Turn on the toggle

In the desktop app, go to **Settings \> General** (under **Desktop app**). Find the **Computer use** toggle and turn it on. On Windows, the toggle takes effect immediately and setup is complete. On macOS, continue to the next step.If you don’t see the toggle, confirm you’re on macOS or Windows with a Pro or Max plan, then update and restart the app.

3


Grant macOS permissions

On macOS, grant two system permissions before the toggle takes effect:

- **Accessibility**: lets Claude click, type, and scroll
- **Screen Recording**: lets Claude see what’s on your screen

The Settings page shows the current status of each permission. If either is denied, click the badge to open the relevant System Settings pane.


App permissions

The first time Claude needs to use an app, a prompt appears in your session. Click **Allow for this session** or **Deny**. Approvals last for the current session, or 30 minutes in [Dispatch-spawned sessions](#sessions-from-dispatch). The prompt also shows what level of control Claude gets for that app. These tiers are fixed by app category and can’t be changed:

| Tier         | What Claude can do                                       | Applies to                  |
|:-------------|:---------------------------------------------------------|:----------------------------|
| View only    | See the app in screenshots                               | Browsers, trading platforms |
| Click only   | Click and scroll, but not type or use keyboard shortcuts | Terminals, IDEs             |
| Full control | Click, type, drag, and use keyboard shortcuts            | Everything else             |

Apps with broad reach, like terminals, Finder or File Explorer, and System Settings or Settings, show an extra warning in the prompt so you know what approving them grants. You can configure two settings in **Settings \> General** (under **Desktop app**):

- **Denied apps**: add apps here to reject them without prompting. Claude may still affect a denied app indirectly through actions in an allowed app, but it can’t interact with the denied app directly.
- **Unhide apps when Claude finishes**: while Claude is working, your other windows are hidden so it interacts with only the approved app. When Claude finishes, hidden windows are restored unless you turn this setting off.


Manage sessions

Each session is an independent conversation with its own context and changes. You can run multiple sessions in parallel, branch off side chats, send work to the cloud, or let Dispatch start sessions for you from your phone.


Work in parallel with sessions

Click **+ New session** in the sidebar, or press **Cmd+N** on macOS or **Ctrl+N** on Windows, to work on multiple tasks in parallel. Press **Ctrl+Tab** and **Ctrl+Shift+Tab** to cycle through sessions in the sidebar. For Git repositories, each session gets its own isolated copy of your project using [Git worktrees](/docs/en/worktrees), so changes in one session don’t affect other sessions until you commit them. To view two sessions at once, hold **Cmd** on macOS or **Ctrl** on Windows and click a session in the sidebar. The session opens in a second pane alongside the one you already have open. While the split is active, clicking another sidebar session replaces whichever pane has focus. Press **Cmd+\\** on macOS or **Ctrl+\\** on Windows to close the focused pane and return to a single session. Worktrees 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. To have sessions archive themselves when their pull request merges or closes, turn on **Auto-archive after PR merge or close** in Settings → Claude Code. Auto-archive only applies to local sessions that have finished running. To include gitignored files like `.env` in new worktrees, create a [`.worktreeinclude` file](/docs/en/worktrees#copy-gitignored-files-into-worktrees) in your project root.

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, ask Claude in the [Cowork tab](https://claude.com/product/cowork) to help troubleshoot your setup.

Use the controls at the top of the sidebar to filter sessions by status, project, or environment, and to group sessions by project. To rename a session, click the session title in the toolbar at the top of the active session. To check context usage, see [Check usage](#check-usage). 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](/docs/en/how-claude-code-works#the-context-window) for details on how compaction works. The desktop app sends an OS notification when a Code session finishes a task and you aren’t currently viewing that session.


Ask a side question without derailing the session

A side chat lets you ask Claude a question that uses your session’s context but doesn’t add anything back to the main conversation. Use it when you want to understand a piece of code, check an assumption, or explore an idea without steering the session off course. Press **Cmd+;** on macOS or **Ctrl+;** on Windows to open a side chat, or type `/btw` in the prompt box. The side chat can read everything in the main thread up to that point. When you’re done, close the side chat and continue the main session where you left off. Side chats are available in local and SSH sessions.


Watch background tasks

The tasks pane shows the background work running inside the current session: subagents, background shell commands, and workflows. Open it from the **Views** menu or drag it into your layout. Click any entry to see its output in the subagent pane or stop it. To see what other sessions are doing, use the [sidebar](#work-in-parallel-with-sessions).


Run long-running tasks remotely

For large refactors, test suites, migrations, or other long-running tasks, select **Remote** instead of **Local** when starting a session. Remote sessions run on Anthropic’s cloud infrastructure and continue even if you close the app or shut down your computer. Check back anytime to see progress or steer Claude in a different direction. You can also monitor remote sessions from [claude.ai/code](https://claude.ai/code) or the Claude iOS app. Remote sessions also support multiple repositories. After selecting a cloud environment, click the **+** button next to the repo pill to add additional repositories to the session. Each repo gets its own branch selector. This is useful for tasks that span multiple codebases, such as updating a shared library and its consumers. See [Claude Code on the web](/docs/en/claude-code-on-the-web) for more on how remote sessions work.


Continue in another surface

The **Continue in** menu, accessible from the VS Code icon in the bottom right of the session toolbar, lets you move your session to another surface:

- **Claude Code on the Web**: sends your local session to continue running remotely. Desktop pushes your branch, generates a summary of the conversation, and creates a new remote session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions.
- **Your IDE**: opens your project in a supported IDE at the current working directory.


Sessions from Dispatch

[Dispatch](https://support.claude.com/en/articles/13947068) is a persistent conversation with Claude that lives in the [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use) tab. You message Dispatch a task, and it decides how to handle it. A task can end up as a Code session in two ways: you ask for one directly, such as “open a Claude Code session and fix the login bug”, or Dispatch decides the task is development work and spawns one on its own. Tasks that typically route to Code include fixing bugs, updating dependencies, running tests, or opening pull requests. Research, document editing, and spreadsheet work stay in Cowork. Either way, the Code session appears in the Code tab’s sidebar with a **Dispatch** badge. You get a push notification on your phone when it finishes or needs your approval. If you have [computer use](#let-claude-use-your-computer) enabled, Dispatch-spawned Code sessions can use it too. App approvals in those sessions expire after 30 minutes and re-prompt, rather than lasting the full session like regular Code sessions. For setup, pairing, and Dispatch settings, see the [Dispatch help article](https://support.claude.com/en/articles/13947068). Dispatch requires a Pro or Max plan and is not available on Team or Enterprise plans. Dispatch is one of several ways to work with Claude when you’re away from your terminal. See [Platforms and integrations](/docs/en/platforms#work-when-you-are-away-from-your-terminal) to compare it with Remote Control, Channels, Slack, and scheduled tasks.


Extend Claude Code

Connect external services, add reusable workflows, customize Claude’s behavior, and configure preview servers. To manage connectors, skills, and plugins in one place, click **Customize** in the sidebar.


Connect external tools

For local and [SSH](#ssh-sessions) sessions, click the **+** button next to the prompt box and select **Connectors** to add integrations like Google Calendar, Slack, GitHub, Linear, Notion, and more. You can add connectors before or during a session. The **+** button is not available in remote sessions, but [routines](/docs/en/routines) configure connectors at routine creation time. To manage or disconnect connectors, go to Settings → Connectors in the desktop app, or select **Manage connectors** from the Connectors menu in the prompt box. Once connected, Claude can read your calendar, send messages, create issues, and interact with your tools directly. You can ask Claude what connectors are configured in your session. Connectors are [MCP servers](/docs/en/mcp) with a graphical setup flow. Use them for quick integration with supported services. For integrations not listed in Connectors, add MCP servers manually via [settings files](/docs/en/mcp#installing-mcp-servers). You can also [create custom connectors](../14-Connectors/getting-started-with-custom-connectors-using-remote-mcp.md).


Use skills

[Skills](/docs/en/skills) extend what Claude can do. Claude loads them automatically when relevant, or you can invoke one directly: type `/` in the prompt box or click the **+** button and select **Slash commands** to browse what’s available. This includes [built-in commands](/docs/en/commands), your [custom skills](/docs/en/skills#create-your-first-skill), project skills from your codebase, and skills from any [installed plugins](/docs/en/plugins). Select one and it appears highlighted in the input field. Type your task after it and send as usual.


Install plugins

[Plugins](/docs/en/plugins) are reusable packages that add skills, agents, hooks, MCP servers, and LSP configurations to Claude Code. You can install plugins from the desktop app without using the terminal. For local and [SSH](#ssh-sessions) sessions, click the **+** button next to the prompt box and select **Plugins** to see your installed plugins and their skills. To add a plugin, select **Add plugin** from the submenu to open the plugin browser, which shows available plugins from your configured [marketplaces](/docs/en/plugin-marketplaces) including the official Anthropic marketplace. Select **Manage plugins** to enable, disable, or uninstall plugins. Plugins can be scoped to your user account, a specific project, or local-only. If your organization manages plugins centrally, those plugins are available in desktop sessions the same way they are in the CLI. Plugins are not available for remote sessions. For the full plugin reference including creating your own plugins, see [plugins](/docs/en/plugins).


Configure preview servers

Claude 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. To 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.

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "my-app",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "port": 3000
    }
  ]
}
```

You can define multiple configurations to run different servers from the same project, such as a frontend and an API. See the [examples](#examples) below.


Auto-verify changes

When `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. Auto-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.

```python
{
  "version": "0.0.1",
  "autoVerify": false,
  "configurations": [...]
}
```

When disabled, preview tools are still available and you can ask Claude to verify at any time. Auto-verify makes it automatic after every edit.


Configuration fields

Each entry in the `configurations` array accepts the following fields:

| Field               | Type       | Description                                                                                                                                                                                                                                                              |
|---------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `name`              | string     | A unique identifier for this server                                                                                                                                                                                                                                      |
| `runtimeExecutable` | string     | The command to run, such as `npm`, `yarn`, or `node`                                                                                                                                                                                                                     |
| `runtimeArgs`       | string\[\] | Arguments passed to `runtimeExecutable`, such as `["run", "dev"]`                                                                                                                                                                                                        |
| `port`              | number     | The port your server listens on. Defaults to 3000                                                                                                                                                                                                                        |
| `cwd`               | string     | Working directory relative to your project root. Defaults to the project root. Use `${workspaceFolder}` to reference the project root explicitly                                                                                                                         |
| `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. To pass secrets to your dev server, set them in the [local environment editor](#local-sessions) instead. |
| `autoPort`          | boolean    | How to handle port conflicts. See below                                                                                                                                                                                                                                  |
| `program`           | string     | A script to run with `node`. See [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable)                                                                                                                                               |
| `args`              | string\[\] | Arguments passed to `program`. Only used when `program` is set                                                                                                                                                                                                           |

##### When to use `program` vs `runtimeExecutable`

Use `runtimeExecutable` with `runtimeArgs` to start a dev server through a package manager. For example, `"runtimeExecutable": "npm"` with `"runtimeArgs": ["run", "dev"]` runs `npm run dev`. Use `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`.


Port conflicts

The `autoPort` field controls what happens when your preferred port is already in use:

- **`true`**: Claude finds and uses a free port automatically. Suitable for most dev servers.
- **`false`**: Claude fails with an error. Use this when your server must use a specific port, such as for OAuth callbacks or CORS allowlists.
- **Not set (default)**: Claude asks whether the server needs that exact port, then saves your answer.

When Claude picks a different port, it passes the assigned port to your server via the `PORT` environment variable.


Examples

These configurations show common setups for different project types:

- Next.js

- Multiple servers

- Node.js script

This configuration runs a Next.js app using Yarn on port 3000:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "web",
      "runtimeExecutable": "yarn",
      "runtimeArgs": ["dev"],
      "port": 3000
    }
  ]
}
```

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:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "frontend",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "cwd": "apps/web",
      "port": 3000,
      "autoPort": true
    },
    {
      "name": "api",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "start"],
      "cwd": "server",
      "port": 8080,
      "env": { "NODE_ENV": "development" },
      "autoPort": false
    }
  ]
}
```

To run a Node.js script directly instead of using a package manager command, use the `program` field:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "server",
      "program": "server.js",
      "args": ["--verbose"],
      "port": 4000
    }
  ]
}
```


Environment configuration

The environment you pick when [starting a session](#start-a-session) determines where Claude executes and how you connect:

- **Local**: runs on your machine with direct access to your files
- **Remote**: runs on Anthropic’s cloud infrastructure. Sessions continue even if you close the app.
- **SSH**: runs on a remote machine you connect to over SSH, such as your own servers, cloud VMs, or dev containers


Local sessions

The desktop app does not always inherit your full shell environment. On macOS, when you launch the app from the Dock or Finder, it reads your shell profile, such as `~/.zshrc` or `~/.bashrc`, to extract `PATH` and a fixed set of Claude Code variables, but other variables you export there are not picked up. On Windows, the app inherits user and system environment variables but does not read PowerShell profiles. To set environment variables for local sessions and dev servers on any platform, open the environment dropdown in the prompt box, hover over **Local**, and click the gear icon to open the local environment editor. Variables you save here are stored encrypted on your machine and apply to every local session and preview server you start. You can also add variables to the `env` key in your `~/.claude/settings.json` file, though these reach Claude sessions only and not dev servers. See [environment variables](/docs/en/env-vars) for the full list of supported variables. [Extended thinking](/docs/en/model-config#extended-thinking) is enabled by default, which improves performance on complex reasoning tasks but uses additional tokens. To disable thinking entirely, set `MAX_THINKING_TOKENS` to `0` in the local environment editor. On models with [adaptive reasoning](/docs/en/model-config#adjust-effort-level), any other `MAX_THINKING_TOKENS` value is ignored because adaptive reasoning controls thinking depth instead. On Opus 4.6 and Sonnet 4.6, set `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` to `1` to use a fixed thinking budget; Opus 4.7 always uses adaptive reasoning and has no fixed-budget mode.


Remote sessions

Remote sessions continue in the background even if you close the app. Usage counts toward your [subscription plan limits](/docs/en/costs) with no separate compute charges. You 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 [the cloud environment](/docs/en/claude-code-on-the-web#the-cloud-environment) for details on configuring network access and environment variables.


SSH sessions

SSH sessions let you run Claude Code on a remote machine while using the desktop app as your interface. This is useful for working with codebases that live on cloud VMs, dev containers, or servers with specific hardware or dependencies. To add an SSH connection, click the environment dropdown before starting a session and select **+ Add SSH connection**. The dialog asks for:

- **Name**: a friendly label for this connection
- **SSH Host**: `user@hostname` or a host defined in `~/.ssh/config`
- **SSH Port**: defaults to 22 if left empty, or uses the port from your SSH config
- **Identity File**: path to your private key, such as `~/.ssh/id_rsa`. Leave empty to use the default key or your SSH config.

Once 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. The remote machine must run Linux or macOS. Desktop installs Claude Code on the remote machine automatically the first time you connect. Once connected, SSH sessions support permission modes, connectors, plugins, and MCP servers.


Pre-configure SSH connections for your team

Administrators can distribute SSH connections to team members by adding `sshConfigs` to a [managed settings](/docs/en/settings#settings-precedence) file. Connections defined this way appear in each user’s environment dropdown automatically and are shown as managed, so users can select them but cannot edit or delete them in the app. The following example pre-configures a single connection that opens in `~/projects` on the remote host:

```python
{
  "sshConfigs": [
    {
      "id": "shared-dev-vm",
      "name": "Shared Dev VM",
      "sshHost": "user@dev.example.com",
      "sshPort": 22,
      "sshIdentityFile": "~/.ssh/id_ed25519",
      "startDirectory": "~/projects"
    }
  ]
}
```

Each entry requires `id`, `name`, and `sshHost`. The `sshPort`, `sshIdentityFile`, and `startDirectory` fields are optional. Users can also add `sshConfigs` to their own `~/.claude/settings.json`, which is where connections added through the dialog are stored.


Restrict which SSH hosts users can connect to

Administrators can limit Desktop’s SSH sessions to an approved set of hosts by adding `sshHostAllowlist` to a [managed settings](/docs/en/settings#settings-precedence) file. When set, users can only connect to hosts whose resolved hostname matches one of the patterns. Set it to an empty array to disable SSH sessions entirely. The following example allows connections to any host under `devboxes.example.com` and to a single named bastion host:

```python
{
  "sshHostAllowlist": ["*.devboxes.example.com", "bastion.example.com"]
}
```

Patterns are case-insensitive. `*` matches any host, and `*.example.com` matches `example.com` and any subdomain. Anything else is an exact match. The check runs against the hostname after `~/.ssh/config` resolution via `ssh -G`, so `Host` aliases and `ProxyCommand`/`ProxyJump` entries are permitted as long as the resolved `HostName` matches. `sshHostAllowlist` is read from managed settings only; values in user or project settings are ignored. Only the Claude Desktop app honors this setting; the Claude Code CLI and IDE extensions do not read it, and it does not restrict `ssh` commands run through the Bash tool. It governs which hosts the Desktop app connects to, not network egress, so pair it with your organization’s network or zero-trust controls if you need a hard boundary.


Enterprise configuration

Organizations on Team or Enterprise plans can manage desktop app behavior through admin console controls, managed settings files, and device management policies.


Admin console controls

These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code):

- **Code in the desktop**: control whether users in your organization can access Claude Code in the desktop app
- **Code in the web**: enable or disable [web sessions](/docs/en/claude-code-on-the-web) for your organization
- **Remote Control**: enable or disable [Remote Control](/docs/en/remote-control) for your organization
- **Disable Bypass permissions mode**: prevent users in your organization from enabling bypass permissions mode


Managed settings

Managed settings override project and user settings and apply when Desktop spawns CLI sessions. You can set these keys in your organization’s [managed settings](/docs/en/settings#settings-precedence) file or push them remotely through the admin console.

| Key                                        | Description                                                                                                                                                                                                                                                                                                             |
|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `permissions.disableBypassPermissionsMode` | set to `"disable"` to prevent users from enabling Bypass permissions mode.                                                                                                                                                                                                                                              |
| `disableAutoMode`                          | set to `"disable"` to prevent users from enabling [Auto](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) mode. Removes Auto from the mode selector. Also accepted under `permissions`.                                                                                                                      |
| `autoMode`                                 | customize what the auto mode classifier trusts and blocks across your organization. See [Configure auto mode](/docs/en/auto-mode-config).                                                                                                                                                                               |
| `sshConfigs`                               | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) that appear in the environment dropdown. Users cannot edit or delete managed connections.                                                                                                                                                 |
| `sshHostAllowlist`                         | restrict [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) to hosts whose resolved hostname matches one of these patterns. An empty array disables SSH sessions. Read from managed settings only.                                                                                                          |
| `managedMcpServers`                        | push MCP server configurations to all users in a third-party deployment. Each entry specifies a transport of `"http"`, `"sse"`, or `"stdio"`, connection details, and optionally a `toolPolicy` map that restricts which tools in that server users can invoke. Available in third-party (3P) Desktop deployments only. |

A managed settings file deployed to disk on each machine applies to Desktop sessions. Managed settings pushed remotely through the admin console currently reach CLI and IDE sessions only, so for Desktop deployments either distribute the file via MDM or use the [admin console controls](#admin-console-controls) above. `permissions.disableBypassPermissionsMode` and `disableAutoMode` also work in user and project settings, but placing them in managed settings prevents users from overriding them. `autoMode` is read from user settings, `.claude/settings.local.json`, and managed settings, but not from the checked-in `.claude/settings.json`: a cloned repo cannot inject its own classifier rules. For the complete list of managed-only settings including `allowManagedPermissionRulesOnly` and `allowManagedHooksOnly`, see [managed-only settings](/docs/en/permissions#managed-only-settings).


Device management policies

IT teams can manage the desktop app through MDM on macOS or group policy on Windows. Available policies include enabling or disabling the Claude Code feature, controlling auto-updates, and setting a custom deployment URL.

- **macOS**: configure via `com.anthropic.Claude` preference domain using tools like Jamf or Kandji
- **Windows**: configure via registry at `SOFTWARE\Policies\Claude`


Authentication and SSO

Enterprise organizations can require SSO for all users. See [authentication](/docs/en/authentication) for plan-level details and [Setting up SSO](../21-Account-Support/setting-up-single-sign-on-sso.md) for SAML and OIDC configuration.


Data handling

Claude Code processes your code locally in local sessions or on Anthropic’s cloud infrastructure in remote sessions. Conversations and code context are sent to Anthropic’s API for processing. See [data handling](/docs/en/data-usage) for details on data retention, privacy, and compliance.


Deployment

Desktop can be distributed through enterprise deployment tools:

- **macOS**: distribute via MDM such as Jamf or Kandji using the `.dmg` installer
- **Windows**: deploy via MSIX package or `.exe` installer. See [Deploy Claude Desktop for Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) for enterprise deployment options including silent installation

For network configuration such as proxy settings, firewall allowlisting, and LLM gateways, see [network configuration](/docs/en/network-config). For the full enterprise configuration reference, see the [enterprise configuration guide](../13-Enterprise-Admin/enterprise-configuration.md).


Coming from the CLI?

If you already use the Claude Code CLI, Desktop runs the same underlying engine with a graphical interface. You can run both simultaneously on the same machine, even on the same project. Each maintains separate session history, but they share configuration and project memory via CLAUDE.md files. To move a CLI session into Desktop, run `/desktop` in the terminal. Claude saves your session and opens it in the desktop app, then exits the CLI. This command is available on macOS and Windows only.

When to use Desktop vs CLI: use Desktop when you want to manage parallel sessions in one window, arrange panes side by side, or review changes visually. Use the CLI when you need scripting, automation, or prefer a terminal workflow.


CLI flag equivalents

This 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.

| CLI                                   | Desktop equivalent                                                                                                                       |
|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
| `--model sonnet`                      | Model dropdown next to the send button                                                                                                   |
| `--resume`, `--continue`              | Click a session in the sidebar                                                                                                           |
| `--permission-mode`                   | Mode selector next to the send button                                                                                                    |
| `--dangerously-skip-permissions`      | Bypass permissions mode. Enable in Settings → Claude Code → “Allow bypass permissions mode”. Enterprise admins can disable this setting. |
| `--add-dir`                           | Add multiple repos with the **+** button in remote sessions                                                                              |
| `--allowedTools`, `--disallowedTools` | No per-session equivalent. Permission rules in [settings files](/docs/en/settings) still apply.                                          |
| `--verbose`                           | [Verbose view mode](#switch-view-modes) in the Transcript view dropdown                                                                  |
| `--print`, `--output-format`          | Not available. Desktop is interactive only.                                                                                              |
| `ANTHROPIC_MODEL` env var             | Model dropdown next to the send button                                                                                                   |
| `MAX_THINKING_TOKENS` env var         | Set in the local environment editor. See [environment configuration](#environment-configuration).                                        |


Shared configuration

Desktop and CLI read the same configuration files, so your setup carries over:

- **[CLAUDE.md](/docs/en/memory)** and `CLAUDE.local.md` files in your project are used by both
- **[MCP servers](/docs/en/mcp)** configured in `~/.claude.json` or `.mcp.json` work in both
- **[Hooks](/docs/en/hooks)** and **[skills](/docs/en/skills)** defined in settings apply to both
- **[Settings](/docs/en/settings)** in `~/.claude.json` and `~/.claude/settings.json` are shared. Permission rules, allowed tools, and other settings in `settings.json` apply to Desktop sessions.
- **Models**: Sonnet, Opus, and Haiku are available in both. In Desktop, select the model from the dropdown next to the send button. You can change the model mid-session from the same dropdown.

**MCP servers: desktop chat app vs Claude Code**: MCP servers configured for the Claude Desktop chat app in `claude_desktop_config.json` are separate from Claude Code and will not appear in the Code tab. To use MCP servers in Claude Code, configure them in `~/.claude.json` or your project’s `.mcp.json` file. See [MCP configuration](/docs/en/mcp#installing-mcp-servers) for details.


Feature comparison

This table compares core capabilities between the CLI and Desktop. For a full list of CLI flags, see the [CLI reference](/docs/en/cli-reference).

| Feature                                                    | CLI                                                                 | Desktop                                                                                                                                                                                                               |
|------------------------------------------------------------|---------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Permission modes                                           | All modes including `dontAsk`                                       | Ask permissions, Auto accept edits, Plan mode, Auto, and Bypass permissions via Settings                                                                                                                              |
| `--dangerously-skip-permissions`                           | CLI flag                                                            | Bypass permissions mode. Enable in Settings → Claude Code → “Allow bypass permissions mode”                                                                                                                           |
| [Third-party providers](/docs/en/third-party-integrations) | Bedrock, Vertex, Foundry                                            | Anthropic’s API by default. Enterprise deployments can configure Vertex AI and gateway providers. See the [enterprise configuration guide](../13-Enterprise-Admin/enterprise-configuration.md). |
| [MCP servers](/docs/en/mcp)                                | Configure in settings files                                         | Connectors UI for local and SSH sessions, or settings files                                                                                                                                                           |
| [Plugins](/docs/en/plugins)                                | `/plugin` command                                                   | Plugin manager UI                                                                                                                                                                                                     |
| @mention files                                             | Text-based                                                          | With autocomplete; local and SSH sessions only                                                                                                                                                                        |
| File attachments                                           | Not available                                                       | Images, PDFs                                                                                                                                                                                                          |
| Session isolation                                          | [`--worktree`](/docs/en/cli-reference) flag                         | Automatic worktrees                                                                                                                                                                                                   |
| Multiple sessions                                          | Separate terminals                                                  | Sidebar tabs                                                                                                                                                                                                          |
| Recurring tasks                                            | Cron jobs, CI pipelines                                             | [Scheduled tasks](/docs/en/desktop-scheduled-tasks)                                                                                                                                                                   |
| Computer use                                               | [Enable via `/mcp`](/docs/en/computer-use) on macOS                 | [App and screen control](#let-claude-use-your-computer) on macOS and Windows                                                                                                                                          |
| Dispatch integration                                       | Not available                                                       | [Dispatch sessions](#sessions-from-dispatch) in the sidebar                                                                                                                                                           |
| Scripting and automation                                   | [`--print`](/docs/en/cli-reference), [Agent SDK](/docs/en/headless) | Not available                                                                                                                                                                                                         |


What’s not available in Desktop

The following features are only available in the CLI or VS Code extension:

- **Third-party providers**: Desktop connects to Anthropic’s API by default. Enterprise deployments can configure Vertex AI and gateway providers via [managed settings](../13-Enterprise-Admin/enterprise-configuration.md). For Bedrock or Foundry, use the [CLI](/docs/en/quickstart).
- **Linux**: the desktop app is available on macOS and Windows only. On Linux, use the [CLI](/docs/en/quickstart).
- **Inline code suggestions**: Desktop does not provide autocomplete-style suggestions. It works through conversational prompts and explicit code changes.
- **Agent teams**: multi-agent orchestration is available via the [CLI](/docs/en/agent-teams) and [Agent SDK](/docs/en/headless), not in Desktop.
- **Terminal-dialog commands**: built-in commands that open an interactive panel in the terminal, such as `/permissions`, `/config`, `/agents`, and `/doctor`, are not available in the Code tab and reply with `isn't available in this environment`. Edit [settings files](/docs/en/settings) directly to manage permission rules and configuration, or run the command from the standalone CLI.


Troubleshooting

The sections below cover issues specific to the desktop app. For runtime API errors that appear in the chat such as `API Error: 500`, `529 Overloaded`, `429`, or `Prompt is too long`, see the [Error reference](/docs/en/errors). Those errors and their fixes are the same across the CLI, desktop, and web.


Check your version

To see which version of the desktop app you’re running:

- **macOS**: click **Claude** in the menu bar, then **About Claude**
- **Windows**: click **Help**, then **About**

Click the version number to copy it to your clipboard.


403 or authentication errors in the Code tab

If you see `Error 403: Forbidden` or other authentication failures when using the Code tab:

1.  Sign out and back in from the app menu. This is the most common fix.
2.  Verify you have an active paid subscription: Pro, Max, Team, or Enterprise.
3.  If the CLI works but Desktop does not, quit the desktop app completely, not just close the window, then reopen and sign in again.
4.  Check your internet connection and proxy settings.


Blank or stuck screen on launch

If the app opens but shows a blank or unresponsive screen:

1.  Restart the app.
2.  Check for pending updates. The app auto-updates on launch.
3.  On Windows, check Event Viewer for crash logs under **Windows Logs → Application**.


”Failed to load session”

If you see `Failed to load session`, the selected folder may no longer exist, a Git repository may require Git LFS that isn’t installed, or file permissions may prevent access. Try selecting a different folder or restarting the app.


Session not finding installed tools

If Claude can’t find tools like `npm`, `node`, or other CLI commands, verify the tools work in your regular terminal, check that your shell profile properly sets up PATH, and restart the desktop app to reload environment variables.


Git and Git LFS errors

On 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. If 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.


MCP servers not working on Windows

If MCP server toggles don’t respond or servers fail to connect on Windows, check that the server is properly configured in your settings, restart the app, verify the server process is running in Task Manager, and review server logs for connection errors.


App won’t quit

- **macOS**: press Cmd+Q. If the app doesn’t respond, use Force Quit with Cmd+Option+Esc, select Claude, and click Force Quit.
- **Windows**: use Task Manager with Ctrl+Shift+Esc to end the Claude process.


Windows-specific issues

- **PATH not updated after install**: open a new terminal window. PATH updates only apply to new terminal sessions.
- **Concurrent installation error**: if you see an error about another installation in progress but there isn’t one, try running the installer as Administrator.


”Branch doesn’t exist yet” when opening in CLI

Remote sessions can create branches that don’t exist on your local machine. Click the branch name in the session toolbar to copy it, then fetch it locally:

```python
git fetch origin <branch-name>
git checkout <branch-name>
```


Still stuck?

- Search or file a bug on [GitHub Issues](https://github.com/anthropics/claude-code/issues)
- Visit the [Claude support center](https://support.claude.com/)

When 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.


---
## desktop-quickstart.md

# Get started with the desktop app

Install Claude Code on desktop and start your first coding session.

The desktop app gives you Claude Code with a graphical interface: visual diff review, live app preview, GitHub PR monitoring with auto-merge, parallel sessions with Git worktree isolation, scheduled tasks, and the ability to run tasks remotely. No terminal required.

## Downloads

- **macOS**: Universal build for Intel and Apple Silicon
- **Windows**: x64 and ARM64 installers
- Linux is not currently supported.

> Claude Code requires a Pro, Max, Team, or Enterprise subscription.

The desktop app has three tabs:

- **Chat**: General conversation with no file access, similar to claude.ai
- **Cowork**: An autonomous background agent that works on tasks in a cloud VM with its own environment
- **Code**: An interactive coding assistant with direct access to your local files

## Install

1. **Install and sign in**: Download Claude for your platform and run the installer. Launch and sign in with your Anthropic account.
2. **Open the Code tab**: Click the Code tab at the top center. If it prompts you to upgrade, you need a paid plan.

The desktop app includes Claude Code. You don't need to install Node.js or the CLI separately. To use `claude` from the terminal, install the CLI separately.

## Start your first session

1. **Choose an environment and folder**: Select **Local** to run Claude on your machine. Click **Select folder** and choose your project directory. You can also select **Remote** (Anthropic cloud) or **SSH** (remote machine).

2. **Choose a model**: Select from the dropdown next to the send button. You cannot change the model after the session starts.

3. **Tell Claude what to do**:
   - `Find a TODO comment and fix it`
   - `Add tests for the main function`
   - `Create a CLAUDE.md with instructions for this codebase`

4. **Review and accept changes**: By default, Claude proposes changes and waits for your approval before applying them. You'll see diff views showing exactly what will change, with Accept/Reject buttons.

## Now what?

- **Interrupt and steer**: Click the stop button or type your correction at any point
- **Give Claude more context**: Type `@filename` to pull a specific file, attach images and PDFs, or drag and drop files
- **Use skills**: Type `/` or click **+** → **Slash commands** to browse commands and skills
- **Review changes**: Click `+12 -1` indicators to open the diff view. Click **Review code** to have Claude evaluate diffs
- **Adjust permissions**: Ask permissions (default) requires approval before every edit. Auto accept edits auto-accepts file edits. Plan mode lets Claude map out an approach without touching files
- **Add plugins**: Click **+** → **Plugins** to browse and install plugins
- **Preview your app**: Click **Preview** to run your dev server in the desktop
- **Track pull requests**: After opening a PR, Claude monitors CI and can auto-fix failures or merge
- **Schedule tasks**: Set up scheduled tasks for recurring work (daily code review, dependency audit)
- **Scale up**: Open parallel sessions, send work to the cloud, or continue in another surface

## Coming from the CLI?

Desktop runs the same engine as the CLI with a graphical interface. You can run both simultaneously on the same project, and they share configuration (CLAUDE.md files, MCP servers, hooks, skills, and settings).

## See Also

- [Use Claude Code Desktop](desktop.md)
- [Troubleshooting](/en/desktop#troubleshooting)
- [Best practices](../10-Prompting-Guides/best-practices-for-claude-code-claude-code-docs-9686dc1633.md)
- [Common workflows](../02-Claude-Code-CLI/common-workflows-c909406123.md)


---
## desktop-scheduled-tasks.md

# Schedule recurring tasks in Claude Code Desktop

Set up scheduled tasks in Claude Code Desktop to run Claude automatically on a recurring basis for daily code reviews, dependency audits, or morning briefings.

By default, scheduled tasks start a new session automatically at a time and frequency you choose.

## Compare scheduling options

|                            | Cloud              | Desktop            | `/loop`            |
| :------------------------- | :----------------- | :----------------- | :----------------- |
| Runs on                    | Anthropic cloud    | Your machine       | Your machine       |
| Requires machine on        | No                 | Yes                | Yes                |
| Requires open session      | No                 | No                 | Yes                |
| Persistent across restarts | Yes                | Yes                | No                 |
| Access to local files      | No (fresh clone)   | Yes                | Yes                |
| Minimum interval           | 1 hour             | 1 minute           | 1 minute           |

The Schedule page supports two kinds of tasks:

- **Local tasks**: run on your machine with direct access to local files and tools. Desktop app must be open and computer awake.
- **Remote tasks**: run on Anthropic-managed cloud infrastructure. Keep running even when your computer is off.

## Create a scheduled task

Click **Schedule** in the sidebar, click **New task**, and choose **New local task**. Configure:

| Field       | Description                                               |
| ----------- | --------------------------------------------------------- |
| Name        | Identifier for the task (lowercase kebab-case)            |
| Description | Short summary shown in the task list                      |
| Prompt      | Instructions sent to Claude when the task runs            |
| Frequency   | How often the task runs                                   |

## Frequency options

- **Manual**: no schedule, only runs when you click **Run now**
- **Hourly**: runs every hour with a fixed offset of up to 10 minutes
- **Daily**: shows a time picker, defaults to 9:00 AM local
- **Weekdays**: same as Daily but skips Saturday and Sunday
- **Weekly**: shows a time and day picker

For custom intervals, ask Claude in any Desktop session.

## How scheduled tasks run

Desktop checks the schedule every minute while the app is open and starts a fresh session when a task is due. Each task gets a fixed delay of up to 10 minutes for staggering.

When a task fires:
- Desktop notification appears
- New session under **Scheduled** section in sidebar
- Claude can edit files, run commands, create commits, open PRs

Tasks only run while the desktop app is running and your computer is awake. Enable **Keep computer awake** in Settings to prevent idle-sleep.

## Missed runs

When the app starts or your computer wakes, Desktop checks whether each task missed any runs in the last seven days. If it did, exactly one catch-up run starts for the most recently missed time.

## Permissions for scheduled tasks

Each task has its own permission mode. Allow rules from `~/.claude/settings.json` also apply.

To avoid stalls, click **Run now** after creating a task, watch for permission prompts, and select "always allow" for each one.

## Manage scheduled tasks

From a task's detail page:

- **Run now**: start immediately
- **Toggle repeats**: pause/resume scheduled runs
- **Edit**: change prompt, frequency, folder, or settings
- **Review history**: see past runs
- **Review allowed permissions**: see and revoke tool approvals
- **Delete**: remove the task

Task prompts on disk: `~/.claude/scheduled-tasks/<task-name>/SKILL.md`

## See Also

- [Cloud scheduled tasks](../02-Claude-Code-CLI/web-scheduled-tasks.md)
- [Run prompts on a schedule](../02-Claude-Code-CLI/run-prompts-on-a-schedule-claude-code-docs.md) — session-scoped `/loop`
- [Claude Code GitHub Actions](../02-Claude-Code-CLI/claude-code-github-actions-claude-code-docs-0d633fbd8a.md)
- [Use Claude Code Desktop](desktop.md)


---
## desktop.md

# Use Claude Code Desktop

Get more out of Claude Code Desktop: computer use, Dispatch sessions from your phone, parallel sessions with Git isolation, visual diff review, app previews, PR monitoring, connectors, and enterprise configuration.

The Code tab within the Claude Desktop app lets you use Claude Code through a graphical interface instead of the terminal.

## Key capabilities

- **Visual diff review** with inline comments
- **Live app preview** with dev servers
- **Computer use** to open apps and control your screen on macOS and Windows
- **GitHub PR monitoring** with auto-fix and auto-merge
- **Parallel sessions** with automatic Git worktree isolation
- **Dispatch** integration: send a task from your phone, get a session here
- **Scheduled tasks** that run Claude on a recurring schedule
- **Connectors** for GitHub, Slack, Linear, and more
- Local, SSH, and cloud environments

## Start a session

Configure four things in the prompt area before sending your first message:

1. **Environment**: Local, Remote, or SSH
2. **Folder**: the project directory Claude will work in
3. **Model**: Opus, Sonnet, or Haiku (cannot change after session starts)
4. **Permission mode**: controls what Claude can do without asking

## Work with code

### Add files and context to prompts

- Type `@filename` to pull a specific file into conversation
- Attach images and PDFs using the attachment button
- Drag and drop files into the prompt

### Review changes with diff view

After Claude edits files, a `+12 -1` indicator appears. Click it to open the diff view:
- Review modifications file by file
- Comment on specific lines (Claude reads comments and revises)
- Click **Review code** for Claude to self-evaluate diffs

### Choose a permission mode

| Mode             | What it does                              |
| :--------------- | :---------------------------------------- |
| Ask permissions  | Default. Claude asks before every edit    |
| Auto accept      | Auto-accepts file edits                   |
| Plan mode        | Claude plans without editing              |
| Auto mode        | Everything runs with safety checks        |
| Bypass           | No permission prompts (containers only)   |

### Preview your app

Click **Preview** dropdown to run your dev server in the desktop. Claude can view the running app, test endpoints, inspect logs, and iterate.

## Let Claude use your computer

Computer use is available on macOS and Windows (Pro and Max plans). Enable in **Settings > General** under Desktop app.

Claude can open apps, click, type, and see your screen. Each app requires per-session approval.

## Monitor pull request status

After opening a PR, Claude monitors CI check results. You can enable:
- **Auto-fix**: Claude automatically fixes CI failures
- **Auto-merge**: Claude merges the PR once all checks pass

## Manage sessions

### Work in parallel with sessions

Open parallel sessions from the sidebar. Each session can use its own Git worktree for isolation.

### Run long-running tasks remotely

Send work to Anthropic's cloud so it continues even if you close the app. Remote sessions work against a fresh clone of your repository.

### Continue in another surface

Transfer a session to the web, CLI, or mobile app to continue working elsewhere.

## Extend Claude Code

### Install plugins

Click **+** → **Plugins** to browse and install plugins that add skills, agents, MCP servers, and more.

### Connect external tools

Use connectors for GitHub, Slack, Linear, and more. Available in **Settings > Connectors**.

### Sessions from Dispatch

Pair the Claude mobile app with Desktop. When you message a task from your phone, Desktop spawns a session to handle it.

## SSH sessions

Connect to remote machines over SSH. Claude Code must be installed on the remote machine.

## Environment configuration

### Enterprise settings

Admins can configure:
- Allowed models and permission modes
- MCP server allowlists
- Network and proxy settings
- Feature flags

## Coming from the CLI

Desktop runs the same engine as the CLI with a graphical interface. They share configuration (CLAUDE.md, MCP servers, hooks, skills, settings).

Key differences:
- Desktop adds diff viewer, app preview, computer use (Windows), Dispatch
- CLI has Agent SDK, third-party providers, headless mode
- Both can run simultaneously on the same project

## Troubleshooting

### 403 or authentication errors

Sign out and sign back in. Check your subscription is active.

### Code tab not appearing

Ensure you have a Pro, Max, Team, or Enterprise subscription.

### Session hangs or stops responding

Try creating a new session. If persistent, restart the desktop app.

## See Also

- [Get started with Desktop](desktop-quickstart.md)
- [Desktop scheduled tasks](desktop-scheduled-tasks.md)
- [Permission modes](../02-Claude-Code-CLI/permission-modes.md)
- [Best practices](../10-Prompting-Guides/best-practices-for-claude-code-claude-code-docs-9686dc1633.md)


---
## get-started-with-the-desktop-app-claude-code-docs-9959b44e94.md

# Get started with the desktop app


Install Claude Code on desktop and start your first coding session


> ## Documentation Index
>
> Fetch the complete documentation index at: <https://code.claude.com/docs/llms.txt>
>
> Use this file to discover all available pages before exploring further.

The desktop app gives you Claude Code with a graphical interface built for running multiple sessions side by side: a sidebar for managing parallel work, a drag-and-drop layout with an integrated terminal and file editor, visual diff review, live app preview, GitHub PR monitoring with auto-merge, and scheduled tasks. No terminal required.

## Download for macOS

Universal build for Intel and Apple Silicon

## Download for Windows

For x64 processors

For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/docs/en/quickstart) instead.

Claude Code requires a [Pro, Max, Team, or Enterprise subscription](https://claude.com/pricing?utm_source=claude_code&utm_medium=docs&utm_content=desktop_quickstart_pricing).

This page walks through installing the app and starting your first session. If you’re already set up, see [Use Claude Code Desktop](/docs/en/desktop) for the full reference. The desktop app has three tabs:

- **Chat**: General conversation with no file access, similar to claude.ai.
- **Cowork**: An autonomous background agent that works on tasks in a cloud VM with its own environment. It can run independently while you do other work.
- **Code**: An interactive coding assistant with direct access to your local files. You review and approve each change in real time.

Chat and Cowork are covered in the [Claude Desktop support articles](https://support.claude.com/en/collections/16163169-claude-desktop). This page focuses on the **Code** tab.


Install

1


Install and sign in

Download the installer for your platform from the links above and run it. Launch Claude from your Applications folder on macOS or the Start menu on Windows, then sign in with your Anthropic account.

2


Open the Code tab

Click the **Code** tab at the top center. If clicking Code prompts you to upgrade, you need to [subscribe to a paid plan](https://claude.com/pricing?utm_source=claude_code&utm_medium=docs&utm_content=desktop_quickstart_upgrade) first. If it prompts you to sign in online, complete the sign-in and restart the app. If you see a 403 error, see [authentication troubleshooting](/docs/en/desktop#403-or-authentication-errors-in-the-code-tab).

The desktop app includes Claude Code. You don’t need to install Node.js or the CLI separately. To use `claude` from the terminal, install the CLI separately. See [Get started with the CLI](/docs/en/quickstart).


Start your first session

With the Code tab open, choose a project and give Claude something to do.

1


Choose an environment and folder

Select **Local** to run Claude on your machine using your files directly. Click **Select folder** and choose your project directory.

Start with a small project you know well. It’s the fastest way to see what Claude Code can do. On Windows, [Git](https://git-scm.com/downloads/win) must be installed for local sessions to work. Most Macs include Git by default.

You can also select:

- **Remote**: Run sessions on Anthropic’s cloud infrastructure that continue even if you close the app. Remote sessions use the same infrastructure as [Claude Code on the web](/docs/en/claude-code-on-the-web).
- **SSH**: Connect to a remote machine over SSH, such as your own servers, cloud VMs, or dev containers. Desktop installs Claude Code on the remote machine automatically the first time you connect.

2


Choose a model

Select a model from the dropdown next to the send button. See [models](/docs/en/model-config#available-models) for a comparison of Opus, Sonnet, and Haiku. You can change the model later from the same dropdown.

3


Tell Claude what to do

Type what you want Claude to do:

- `Find a TODO comment and fix it`
- `Add tests for the main function`
- `Create a CLAUDE.md with instructions for this codebase`

A [session](/docs/en/desktop#work-in-parallel-with-sessions) is a conversation with Claude about your code. Each session tracks its own context and changes, so you can work on multiple tasks without them interfering with each other.

4


Review and accept changes

By default, the Code tab starts in [Ask permissions mode](/docs/en/desktop#choose-a-permission-mode), where Claude proposes changes and waits for your approval before applying them. You’ll see:

1.  A [diff view](/docs/en/desktop#review-changes-with-diff-view) showing exactly what will change in each file
2.  Accept/Reject buttons to approve or decline each change
3.  Real-time updates as Claude works through your request

If you reject a change, Claude will ask how you’d like to proceed differently. Your files aren’t modified until you accept.


Now what?

You’ve made your first edit. For the full reference on everything Desktop can do, see [Use Claude Code Desktop](/docs/en/desktop). Here are some things to try next. **Interrupt and steer.** You can interrupt Claude at any point. If it’s going down the wrong path, click the stop button or type your correction and press **Enter**. Claude stops what it’s doing and adjusts based on your input. You don’t have to wait for it to finish or start over. **Give Claude more context.** Type `@filename` in the prompt box to pull a specific file into the conversation, attach images and PDFs using the attachment button, or drag and drop files directly into the prompt. The more context Claude has, the better the results. See [Add files and context](/docs/en/desktop#add-files-and-context-to-prompts). **Use skills for repeatable tasks.** Type `/` or click **+** → **Slash commands** to browse [built-in commands](/docs/en/commands), [custom skills](/docs/en/skills), and plugin skills. Skills are reusable prompts you can invoke whenever you need them, like code review checklists or deployment steps. **Review changes before committing.** After Claude edits files, a `+12 -1` indicator appears. Click it to open the [diff view](/docs/en/desktop#review-changes-with-diff-view), review modifications file by file, and comment on specific lines. Claude reads your comments and revises. Click **Review code** to have Claude evaluate the diffs itself and leave inline suggestions. **Adjust how much control you have.** Your [permission mode](/docs/en/desktop#choose-a-permission-mode) controls the balance. Ask permissions (default) requires approval before every edit. Auto accept edits auto-accepts file edits for faster iteration. Plan mode lets Claude map out an approach without touching any files, which is useful before a large refactor. **Add plugins for more capabilities.** Click the **+** button next to the prompt box and select **Plugins** to browse and install [plugins](/docs/en/desktop#install-plugins) that add skills, agents, MCP servers, and more. **Arrange your workspace.** Drag the chat, diff, terminal, file, and preview panes into whatever layout you want. Open the terminal with **Ctrl+\`** to run commands alongside your session, or click a file path to open it in the file pane. See [Arrange your workspace](/docs/en/desktop#arrange-your-workspace). **Preview your app.** Click the **Preview** dropdown to run your dev server directly in the desktop. Claude can view the running app, test endpoints, inspect logs, and iterate on what it sees. See [Preview your app](/docs/en/desktop#preview-your-app). **Track your pull request.** After opening a PR, Claude Code monitors CI check results and can automatically fix failures or merge the PR once all checks pass. See [Monitor pull request status](/docs/en/desktop#monitor-pull-request-status). **Put Claude on a schedule.** Set up [scheduled tasks](/docs/en/desktop-scheduled-tasks) to run Claude automatically on a recurring basis: a daily code review every morning, a weekly dependency audit, or a briefing that pulls from your connected tools. **Scale up when you’re ready.** Open [parallel sessions](/docs/en/desktop#work-in-parallel-with-sessions) from the sidebar to work on multiple tasks at once, each in its own Git worktree, and open the [tasks pane](/docs/en/desktop#watch-background-tasks) to watch the subagents and background commands a session has running. Open a [side chat](/docs/en/desktop#ask-a-side-question-without-derailing-the-session) to ask a question without derailing the main thread. Send [long-running work to the cloud](/docs/en/desktop#run-long-running-tasks-remotely) so it continues even if you close the app, or [continue a session on the web or in your IDE](/docs/en/desktop#continue-in-another-surface) if a task takes longer than expected. [Connect external tools](/docs/en/desktop#extend-claude-code) like GitHub, Slack, and Linear to bring your workflow together.


Coming from the CLI?

Desktop runs the same engine as the CLI with a graphical interface. You can run both simultaneously on the same project, and they share configuration (CLAUDE.md files, MCP servers, hooks, skills, and settings). For a full comparison of features, flag equivalents, and what’s not available in Desktop, see [CLI comparison](/docs/en/desktop#coming-from-the-cli).


What’s next

- [Use Claude Code Desktop](/docs/en/desktop): permission modes, parallel sessions, diff view, connectors, and enterprise configuration
- [Troubleshooting](/docs/en/desktop#troubleshooting): solutions to common errors and setup issues
- [Best practices](/docs/en/best-practices): tips for writing effective prompts and getting the most out of Claude Code
- [Common workflows](/docs/en/common-workflows): tutorials for debugging, refactoring, testing, and more


---
## getting-started-with-local-mcp-servers-on-claude-desktop.md

4.  Getting Started with Local MCP Servers on Claude Desktop

# Getting Started with Local MCP Servers on Claude Desktop


The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. With the introduction of desktop extensions, installing and managing local MCP servers has become significantly easier.

## Desktop Extensions

Desktop extensions provide a streamlined way to install and manage local MCP servers through single-click installable packages. Instead of manually configuring JSON files and managing dependencies, you can now install local MCP servers on your computer as easily as browser extensions.

**Note:** We’re building a directory of desktop extensions – if you’re a developer hoping to add an extension you built to the directory, complete our [desktop extensions interest form](https://docs.google.com/forms/d/14_Dmcig4z8NeRMB_e7TOyrKzuZ88-BLYdLvS6LPhiZU/viewform?edit_requested=true) to share more information with us.

## Installing desktop extensions from the directory

1.  Navigate to Settings \> Extensions on Claude Desktop.

2.  Click “Browse extensions” to view our directory and click on any Anthropic-reviewed tools you want to use. Click "Install" on your desired extension.

3.  Configure any required settings (like API keys) through the user-friendly interface.

4.  The extension will automatically be available in your conversations.

## Installing custom desktop extensions

1.  Navigate to Settings \> Extensions on Claude Desktop.

2.  Click “Advanced settings” and find the **Extension Developer** section.

3.  Click “Install Extension…”

4.  Select the .mcpb file and follow the prompts to install.

## Admin Controls for Desktop Extensions

Owners and Primary Owners of Team and Enterprise plans can manage team access to desktop extensions using two controls:

1.  Enable or disable public desktop extensions depending on your organization’s security standards.

2.  Upload custom desktop extensions and make them available to your team for one-click install.

These controls allow organizations to fully customize their registries by adding only the extensions the team needs to access, and removing any others.

### Enabling/disabling specific extensions on Team and Enterprise plans

Owners and Primary Owners of Team and Enterprise organizations can manage which desktop extensions are enabled for your organization and accessible to other members via Claude Desktop. See [Enabling and using the desktop extension allowlist](https://support.claude.com/en/articles/12592343-enabling-and-using-the-desktop-extension-allowlist)

for specific instructions.

### Create and upload custom extensions for your organization

Custom desktop extensions uploads allow Team and Enterprise plans to leverage organization-specific workflows that aren’t available in the public directory. After creating a custom desktop extension, Owners and Primary Owners can navigate to Settings \> Extensions within Claude Desktop and click “Advanced settings” to access the **Extension Developer** section:


Click “Install Extension…” and select the .mcpb file. Follow the prompts to install and configure your custom desktop extension. For more in-depth information, please refer to our [desktop extension developer documentation](https://github.com/anthropics/mcpb).

## Enterprise Policy Controls

**Note:** Enterprise policy controls at the user-machine level will override any in-app controls (blocklist and allowlist). If you want to use an in-app control, ensure `isDesktopExtensionEnabled` and `isDesktopExtensionDirectoryEnabled` are not set to "false" so the allowlist can populate the available registry.

For controlling desktop extensions through system policies, please refer to our [desktop enterprise configuration documentation](../13-Enterprise-Admin/enterprise-configuration.md).

## Troubleshooting desktop extension installation issues

### Extension won't install

- Ensure you're running the latest version of Claude Desktop.

- Check that the extension file isn't corrupted by re-downloading it.

- Verify you have sufficient disk space for the installation.

### Extension appears installed but tools aren't available

- Restart Claude Desktop to refresh the extension registry.

- Check the extension's configuration settings for missing required fields.

- Verify any API keys or authentication credentials are entered correctly.

### Extension configuration issues

- Navigate to Settings \> Extensions and click on the extension to review its settings.

- Ensure all required configuration fields are completed.

- Check that file paths (if applicable) point to existing directories you have access to.

### Permission or security errors

- On macOS, check System Preferences \> Security & Privacy if you receive security warnings.

- On Windows, ensure Claude Desktop has necessary permissions to access required directories.

- For enterprise environments, verify that desktop extensions are enabled through your organization's policies.

## Developer FAQ

### How do I check if my MCP servers are properly connected in Claude Desktop?

Click the "+" button on bottom the chat box within Claude Desktop, then select "Connectors." This will show you connected MCP servers and their tools. Alternatively, you can visit Developer settings (under **Desktop app**) to see connection status and look at the logs for any MCP servers.

### How do I convert my existing MCP server to a desktop extension?

1.  Add a manifest.json file to your MCP server directory with the required metadata.

2.  Package it using the `mcpb pack` command.

3.  See the [MCPB documentation](https://github.com/anthropics/mcpb) for detailed instructions.

### What programming languages are supported for desktop extensions?

Desktop extensions support Node.js, Python, and binary MCP servers. Claude Desktop includes a built-in Node.js environment, so Node.js installation isn't required.

### How do I handle sensitive configuration like API keys?

Mark configuration fields as "sensitive": true in your manifest.json. Claude Desktop will automatically encrypt these values using the operating system's secure storage (Keychain on macOS, Credential Manager on Windows).

### Can I distribute my custom desktop extension privately?

Yes, you can share .mcpb files directly with specific users or teams. For broader distribution, you can submit extensions to the official directory.

### How do I debug issues with my desktop extension?

Enable debug logging in Claude Desktop settings, check the extension logs in the Extensions settings panel, and refer to the MCP debugging guide for protocol-specific troubleshooting.

### What happens when my extension needs updates?

Extensions from the official directory update automatically by default. For privately distributed extensions, users will need to install updated .mcpb files manually.

## Interested in learning more about MCP?

For more in-depth information on building your own MCP clients and servers, we recommend reviewing the following resources:

- [MCP Quickstart Guide](../06-MCP-Tools/Tutorials/what-is-the-model-context-protocol-mcp-model-context-protocol.md) - A step-by-step tutorial perfect for getting started with basic MCP integration.

- [Model Context Protocol Github](https://github.com/modelcontextprotocol) - Contains the complete technical documentation, code examples, and implementation guides.

- [Guide to debugging MCP integrations](https://modelcontextprotocol.io/docs/tools/debugging) - Troubleshooting tips and solutions for common implementation challenges.

If you need further guidance, visit our guide on [How to Get Support](https://support.claude.com/en/articles/9015913-how-to-get-support) for additional support options.


---
## how-can-i-uninstall-claude-for-android.md

4.  How can I uninstall Claude for Android?

# How can I uninstall Claude for Android?


To uninstall the Claude app from your Android device, hold down on the app from your screen until you see the menu options. Click on “App Info.” From the next series of options, select “Uninstall.”

Note that if you have an active Claude Pro subscription and would like to uninstall the app, your subscription will not be automatically canceled. To cancel your subscription, follow the cancellation instructions [here](https://support.anthropic.com/en/articles/9612898-how-can-i-cancel-my-claude-pro-subscription-on-claude-for-android).


---
## how-do-i-install-claude-for-android.md

# How do I install Claude for Android?


You can install the Claude app onto your device by navigating to the Play Store and searching for “Claude by Anthropic”, or by navigating directly to our [Play Store listing](https://play.google.com/store/apps/details?id=com.anthropic.claude). Click on “Install” from the app listing to prompt your download.


---
## how-to-update-claude-for-android.md

# How to update Claude for Android


If you aren’t seeing the latest features on Claude for Android, you may need to [update your mobile app manually by following these instructions from Google](https://support.google.com/googleplay/answer/113412?hl=en):

1.  Open the Google Play Store app .

2.  At the top right, tap the profile icon.

3.  Tap “Manage apps & device.”

4.  Under **Updates available**, tap “See details.”

5.  Tap “Update” next to Claude for Android.


---
## installing-claude-for-ios.md

# Installing Claude for iOS


## How do I install the Claude for iOS app?

You can install the Claude app onto your iOS device by navigating to the App Store and searching for “Claude by Anthropic”, or by navigating directly to our [App Store listing](https://apps.apple.com/us/app/claude/id6473753684). Click on “Get” from the app listing to prompt your download.

## Why can’t I find Claude for iOS in the App Store?

If you’re unable to locate Claude for iOS in your App Store, you may be located in an [unsupported region](https://support.claude.com/en/articles/8461763-where-can-i-access-claude), using an unsupported device, or using an unsupported version of iOS.

## What versions of iOS are supported?

We currently support iOS version 17.0 and above.

## How do I uninstall the Claude for iOS app?

To uninstall the Claude for iOS from your device, hold down on the app from your home screen until you see the menu options. Click on “Remove App.” From the next series of options, select “Delete App.”

Note that if you have an active paid Claude subscription and would like to uninstall the app, your subscription will not be automatically canceled. To cancel your subscription, follow the instructions here: [How do I cancel my paid Claude subscription?](https://support.claude.com/en/articles/8325617-how-do-i-cancel-my-paid-claude-subscription)


---
## schedule-recurring-tasks-in-claude-code-desktop-claude-code-docs-fda20a50de.md

# Schedule recurring tasks in Claude Code Desktop


Set up scheduled tasks in Claude Code Desktop to run Claude automatically on a recurring basis for daily code reviews, dependency audits, or morning briefings.


> ## Documentation Index
>
> Fetch the complete documentation index at: <https://code.claude.com/docs/llms.txt>
>
> Use this file to discover all available pages before exploring further.

Scheduled tasks start a new session automatically at a time and frequency you choose. Use them for recurring work like daily code reviews, dependency update checks, or morning briefings that pull from your calendar and inbox. The Desktop app’s **Routines** page lets you create both local scheduled tasks and remote [routines](/docs/en/routines). A local task runs on your machine with direct access to your files and tools, but only fires while the app is open and your computer is awake. A remote routine runs on Anthropic-managed cloud infrastructure even when your computer is off, and can also fire on API calls or GitHub events. This page covers local scheduled tasks; for remote routines and their trigger options, see [Routines](/docs/en/routines).


Compare scheduling options

Claude Code offers three ways to schedule recurring or one-off work:

|                            | [Cloud](/docs/en/routines)     | [Desktop](/docs/en/desktop-scheduled-tasks) | [`/loop`](/docs/en/scheduled-tasks) |
|:---------------------------|:-------------------------------|:--------------------------------------------|:------------------------------------|
| Runs on                    | Anthropic cloud                | Your machine                                | Your machine                        |
| Requires machine on        | No                             | Yes                                         | Yes                                 |
| Requires open session      | No                             | No                                          | Yes                                 |
| Persistent across restarts | Yes                            | Yes                                         | Restored on `--resume` if unexpired |
| Access to local files      | No (fresh clone)               | Yes                                         | Yes                                 |
| MCP servers                | Connectors configured per task | [Config files](/docs/en/mcp) and connectors | Inherits from session               |
| Permission prompts         | No (runs autonomously)         | Configurable per task                       | Inherits from session               |
| Customizable schedule      | Via `/schedule` in the CLI     | Yes                                         | Yes                                 |
| Minimum interval           | 1 hour                         | 1 minute                                    | 1 minute                            |

Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

By default, scheduled tasks run against whatever state your working directory is in, including uncommitted changes. Enable the worktree toggle when creating the task to give each run its own isolated Git worktree, the same way [parallel sessions](/docs/en/desktop#work-in-parallel-with-sessions) work.


Create a scheduled task

Click **Routines** in the sidebar, then click **New routine** and choose **Local**. Configure these fields:

| Field        | Description                                                                                                                                                                                                                                                                    |
|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Name         | Identifier for the task. Converted to lowercase kebab-case and used as the folder name on disk. Must be unique across your tasks.                                                                                                                                              |
| Description  | Short summary shown in the task list.                                                                                                                                                                                                                                          |
| Instructions | What Claude should do when the task runs. Write this the same way you’d write any message in the prompt box. The instructions input includes pickers for the permission mode and model, and below it you select the working folder and whether to run in an isolated worktree. |
| Schedule     | How often the task runs. See [schedule options](#schedule-options) below.                                                                                                                                                                                                      |

A folder is required before you can save the task. If you haven’t trusted that folder yet, Desktop prompts you to trust it before saving. You can also create a task by describing what you want in any session. For example, “set up a daily code review that runs every morning at 9am” creates a recurring task, and “remind me at 3pm tomorrow to check the deploy” creates a one-time task that disables itself after it fires.


Schedule options

Pick a preset from the Schedule control:

- **Manual**: no schedule, only runs when you click **Run now**. Useful for saving a prompt you trigger on demand
- **Hourly**: runs every hour
- **Daily**: shows a time picker, defaults to 9:00 AM local time
- **Weekdays**: same as Daily but skips Saturday and Sunday
- **Weekly**: shows a time picker and a day picker

For intervals the picker doesn’t offer, such as every 15 minutes, the first of each month, or a single run at a specific future time, ask Claude in any Desktop session to set the schedule. Use plain language; for example, “schedule a task to run all the tests every 6 hours.”


How scheduled tasks run

Scheduled tasks run on your machine. Desktop checks the schedule every minute while the app is open and starts a fresh session when a task is due, independent of any manual sessions you have open. Each task gets a small delay of a few minutes after the scheduled time to stagger API traffic. The delay is deterministic: the same task always starts at the same offset. When a task fires, you get a desktop notification and a new session appears under a **Scheduled** section in the sidebar. Open it to see what Claude did, review changes, or respond to permission prompts. The session works like any other: Claude can edit files, run commands, create commits, and open pull requests. Tasks only run while the desktop app is running and your computer is awake. If your computer sleeps through a scheduled time, the run is skipped. To prevent idle-sleep, enable **Keep computer awake** in Settings under **Desktop app → General**. Closing the laptop lid still puts it to sleep. For tasks that need to run even when your computer is off, or that should trigger on an API call or GitHub event, create a remote [routine](/docs/en/routines) instead.


Missed runs

When the app starts or your computer wakes, Desktop checks whether each task missed any runs in the last seven days. If it did, Desktop starts exactly one catch-up run for the most recently missed time and discards anything older. A daily task that missed six days runs once on wake. Desktop shows a notification when a catch-up run starts. Keep this in mind when writing prompts. A task scheduled for 9am might run at 11pm if your computer was asleep all day. If timing matters, add guardrails to the prompt itself, for example: “Only review today’s commits. If it’s after 5pm, skip the review and just post a summary of what was missed.”


Permissions for scheduled tasks

Each task has its own permission mode, which you set when creating or editing the task. Allow rules from `~/.claude/settings.json` also apply to scheduled task sessions. If a task runs in Ask mode and needs to run a tool it doesn’t have permission for, the run stalls until you approve it. The session stays open in the sidebar so you can answer later. To avoid stalls, click **Run now** after creating a task, watch for permission prompts, and select “always allow” for each one. Future runs of that task auto-approve the same tools without prompting. You can review and revoke these approvals from the task’s detail page.


Manage scheduled tasks

Click a task in the **Routines** list to open its detail page. From here you can:

- **Run now**: start the task immediately without waiting for the next scheduled time
- **Status**: toggle between Active and Paused to pause or resume scheduled runs without deleting the task
- **Edit**: change the instructions, schedule, folder, or other settings
- **Review history**: see every past run, including skipped runs. Hover a skipped entry to see why: your computer was asleep, the previous run was still in progress, or other scheduled tasks were already running. Click **Show more** to load older entries.
- **Review allowed permissions**: see and revoke saved tool approvals for this task from the **Always allowed** panel
- **Delete**: remove the task and archive all sessions it created. An **Also delete files on disk** checkbox appears in the confirmation dialog; check it to also remove the task’s `SKILL.md` file and associated data from `~/.claude/scheduled-tasks/`.

You can also list, create, edit, and pause tasks by asking Claude in any Desktop session. For example, “pause my dependency-audit task” or “show me my scheduled tasks.” To delete a task, use the **Delete** button on its detail page. A scheduled task can also modify its own schedule or prompt from within a running session using the `update_scheduled_task` MCP tool. This lets a task reschedule itself based on what it finds, for example, rescheduling a code review to run earlier when it detects a release branch has been created. To edit a task’s prompt on disk, open `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (or under [`CLAUDE_CONFIG_DIR`](/docs/en/env-vars) if set). The file uses YAML frontmatter for `name` and `description`, with the prompt as the body. Changes take effect on the next run. Schedule, folder, model, and enabled state are not in this file: change them through the Edit form or ask Claude.


Related resources

- [Routines](/docs/en/routines): run tasks on Anthropic-managed infrastructure on a schedule, via API call, or in response to GitHub events, even when your computer is off
- [Run prompts on a schedule](/docs/en/scheduled-tasks): session-scoped scheduling with `/loop` in the CLI
- [Claude Code GitHub Actions](/docs/en/github-actions): run Claude on a schedule in CI instead of on your machine
- [Use Claude Code Desktop](/docs/en/desktop): the full Desktop app guide


---
## use-claude-code-desktop-claude-code-docs-dc0e6ba558.md

# Use Claude Code Desktop


Get more out of Claude Code Desktop: parallel sessions with Git isolation, drag-and-drop pane layout, integrated terminal and file editor, side chats, computer use, Dispatch sessions from your phone, visual diff review, app previews, PR monitoring, connectors, and enterprise configuration.


The Claude Desktop app has three tabs: **Chat** for conversations, **Cowork** for [Dispatch and longer agentic work](https://claude.com/product/cowork), and **Code** for software development. This page is the reference for the Code tab.

## Download for macOS

Universal build for Intel and Apple Silicon

## Download for Windows

For x64 processors

For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs). Linux is not supported. After installing, launch Claude, sign in, and click the **Code** tab. The first time you open it on Windows, you need [Git for Windows](https://git-scm.com/downloads/win) installed; restart the app after installing it. For a walkthrough of your first session, see the [Get started guide](/docs/en/desktop-quickstart). In the Code tab, each conversation is a **session**: it has its own chat history, project folder, and code changes, independent of any other session. The sidebar lists your sessions and lets you run several in parallel. Within a session you can:

- [Review and comment on diffs](#review-changes-with-diff-view), then [watch the resulting PR through CI](#monitor-pull-request-status)
- [Preview your running app](#preview-your-app) in an embedded browser while Claude verifies its own changes
- [Arrange panes](#arrange-your-workspace) for the chat, diff, preview, terminal, and file editor side by side
- Ask a [side question](#ask-a-side-question-without-derailing-the-session) that uses the session’s context without derailing it
- [Connect external tools](#connect-external-tools) like GitHub, Slack, and Linear
- Let Claude [open apps and control your screen](#let-claude-use-your-computer)
- Run on your machine, in the [cloud](#run-long-running-tasks-remotely), or over [SSH](#ssh-sessions)

For [scheduled recurring work](/docs/en/desktop-scheduled-tasks), [keyboard shortcuts](#keyboard-shortcuts), or [sending tasks from your phone](#sessions-from-dispatch), see the linked pages and sections. If you already use the terminal-based CLI, see the [CLI comparison](#coming-from-the-cli) for what carries over.


Start a session

Before you send your first message, configure four things in the prompt area:

- **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).
- **Project folder**: select the folder or repository Claude works in. For remote sessions, you can add [multiple repositories](#run-long-running-tasks-remotely).
- **Model**: pick a [model](/docs/en/model-config#available-models) from the dropdown next to the send button. You can change this during the session.
- **Permission mode**: choose how much autonomy Claude has from the [mode selector](#choose-a-permission-mode). You can change this during the session.

Type your task and press **Enter** to start. Each session tracks its own context and changes independently.


Work with code

Give Claude the right context, control how much it does on its own, and review what it changed.


Use the prompt box

Type what you want Claude to do and press **Enter** to send. Claude reads your project files, makes changes, and runs commands based on your [permission mode](#choose-a-permission-mode). You can interrupt Claude at any point: click the stop button or type your correction and press **Enter**. Claude stops what it’s doing and adjusts based on your input. The **+** button next to the prompt box gives you access to file attachments, [skills](#use-skills), [connectors](#connect-external-tools), and [plugins](#install-plugins).


Add files and context to prompts

The prompt box supports two ways to bring in external context:

- **@mention files**: type `@` followed by a filename to add a file to the conversation context. Claude can then read and reference that file. @mention is not available in remote sessions.
- **Attach files**: attach images, PDFs, and other files to your prompt using the attachment button, or drag and drop files directly into the prompt. This is useful for sharing screenshots of bugs, design mockups, or reference documents.


Choose a permission mode

Permission 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.

| Mode | Settings key | Behavior |
|----|----|----|
| **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. |
| **Auto accept edits** | `acceptEdits` | Claude auto-accepts file edits and common filesystem commands like `mkdir`, `touch`, and `mv`, but still asks before running other terminal commands. Use this when you trust file changes and want faster iteration. |
| **Plan mode** | `plan` | Claude reads files and runs commands to explore, then proposes a plan without editing your source code. Good for complex tasks where you want to review the approach first. |
| **Auto** | `auto` | Claude executes all actions with background safety checks that verify alignment with your request. Reduces permission prompts while maintaining oversight. Enable in your Settings → Claude Code. See [availability requirements](#auto-mode-availability) below. |
| **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. |

The `dontAsk` permission mode is available only in the [CLI](/docs/en/permission-modes#allow-only-pre-approved-tools-with-dontask-mode). Auto mode is a research preview available on Max, Team, Enterprise, and API plans. It is not available on Pro plans or third-party providers. On Team, Enterprise, and API plans it requires Claude Sonnet 4.6, Opus 4.6, or Opus 4.7. On Max plans it requires Claude Opus 4.7.

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](/docs/en/best-practices#explore-first-then-plan-then-code) for more on this workflow.

Remote 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. Enterprise admins can restrict which permission modes are available. See [enterprise configuration](#enterprise-configuration) for details.


Preview your app

Claude 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. The preview pane can also open static HTML files, PDFs, images, and videos from your project. Click an HTML, PDF, image, or video path in the chat to open it in preview. From the preview pane, you can:

- Interact with your running app directly in the embedded browser
- Watch Claude verify its own changes automatically: it takes screenshots, inspects the DOM, clicks elements, fills forms, and fixes issues it finds
- Start or stop servers from the **Preview** dropdown in the session toolbar
- 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
- Edit the server configuration or stop all servers at once

Claude 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. To clear saved session data, toggle **Persist preview sessions** off in Settings → Claude Code. To disable preview entirely, toggle off **Preview** in Settings → Claude Code.


Review changes with diff view

After Claude makes changes to your code, the diff view lets you review modifications file by file before creating a pull request. When Claude changes files, a diff stats indicator appears showing the number of lines added and removed, such as `+12 -1`. Click this indicator to open the diff viewer, which displays a file list on the left and the changes for each file on the right. To comment on specific lines, click any line in the diff to open a comment box. Type your feedback and press **Enter** to add the comment. After adding comments to multiple lines, submit all comments at once:

- **macOS**: press **Cmd+Enter**
- **Windows**: press **Ctrl+Enter**

Claude reads your comments and makes the requested changes, which appear as a new diff you can review.


Review your code

In 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. The 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.


Monitor pull request status

After 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.

- **Auto-fix**: when enabled, Claude automatically attempts to fix failing CI checks by reading the failure output and iterating.
- **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.

Use 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. To archive the session automatically once the PR merges or closes, turn on [auto-archive](#work-in-parallel-with-sessions) in Settings → Claude Code.

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.


Arrange your workspace

The Code tab is built around panes you can arrange in any layout: chat, diff, preview, terminal, file, plan, tasks, and subagent. Drag a pane by its header to reposition it, or drag a pane edge to resize it. Press **Cmd+\\** on macOS or **Ctrl+\\** on Windows to close the focused pane. Open additional panes from the **Views** menu in the session toolbar.

The pane layout, terminal, file editor, and view modes in this section require Claude Desktop v1.2581.0 or later. Open **Claude → Check for Updates** on macOS or **Help → Check for Updates** on Windows to update.


Run commands in the terminal

The integrated terminal lets you run commands alongside your session without switching to another app. Open it from the **Views** menu or press **Ctrl+\`** on macOS or Windows. The terminal opens in your session’s working directory and shares the same environment as Claude, so commands like `npm test` or `git status` see the same files Claude is editing. The terminal is available in local sessions only.


Open and edit files

Click a file path in the chat or diff viewer to open it in the file pane. HTML, PDF, image, and video paths open in the [preview pane](#preview-your-app) instead. Make spot edits and click **Save** to write them back. If the file changed on disk since you opened it, the pane warns you and lets you override or discard. Click **Discard** to revert your edits, or click the path in the pane header to copy the absolute path. The file pane is available in local and SSH sessions. For remote sessions, ask Claude to make the change.


Open files in other apps

Right-click any file path in the chat, diff viewer, or file pane to open a context menu:

- **Attach as context**: add the file to your next prompt
- **Open in**: open the file in an installed editor such as VS Code, Cursor, or Zed
- **Show in Finder** on macOS, **Show in Explorer** on Windows: open the containing folder
- **Copy path**: copy the absolute path to your clipboard


Switch view modes

View modes control how much detail appears in the chat transcript. Switch modes from the **Transcript view** dropdown next to the send button, or press **Ctrl+O** on macOS or Windows to cycle through them.

| Mode | What it shows |
|----|----|
| **Normal** | Tool calls collapsed into summaries, with full text responses |
| **Verbose** | Every tool call, file read, and intermediate step Claude takes |
| **Summary** | Only Claude’s final responses and the changes it made |

Use Verbose when debugging why Claude took a particular action. Use Summary when you’re running multiple sessions and want to scan results quickly.


Keyboard shortcuts

Press **Cmd+/** on macOS or **Ctrl+/** on Windows to see all shortcuts available in the Code tab. On Windows, use **Ctrl** in place of **Cmd** for the shortcuts below. Session cycling, the terminal toggle, and the view-mode toggle use **Ctrl** on every platform.

| Shortcut                              | Action                       |
|---------------------------------------|------------------------------|
| `Cmd` `/`                             | Show keyboard shortcuts      |
| `Cmd` `N`                             | New session                  |
| `Cmd` `W`                             | Close session                |
| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab`   | Next or previous session     |
| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Next or previous session     |
| `Esc`                                 | Stop Claude’s response       |
| `Cmd` `Shift` `D`                     | Toggle diff pane             |
| `Cmd` `Shift` `P`                     | Toggle preview pane          |
| `Cmd` `Shift` `S`                     | Select an element in preview |
| `Ctrl` `` ` ``                        | Toggle terminal pane         |
| `Cmd` `\`                             | Close focused pane           |
| `Cmd` `;`                             | Open side chat               |
| `Ctrl` `O`                            | Cycle view modes             |
| `Cmd` `Shift` `M`                     | Open permission mode menu    |
| `Cmd` `Shift` `I`                     | Open model menu              |
| `Cmd` `Shift` `E`                     | Open effort menu             |
| `1`–`9`                               | Select item in an open menu  |

These shortcuts apply only to the Code tab. The terminal-based [interactive mode shortcuts](/docs/en/interactive-mode#keyboard-shortcuts), such as `Shift+Tab` to cycle modes, do not apply in Desktop.


Check usage

Click the usage ring next to the model picker to see your current context window usage and your plan usage for the period. Context usage is per session; plan usage is shared across all your Claude Code surfaces.


Let Claude use your computer

Computer use lets Claude open your apps, control your screen, and work directly on your machine the way you would. Ask Claude to test a native app in a mobile simulator, interact with a desktop tool that has no CLI, or automate something that only works through a GUI.

Computer use is a research preview on macOS and Windows that requires a Pro or Max plan. It is not available on Team or Enterprise plans. The Claude Desktop app must be running.

Computer use is off by default. [Enable it in Settings](#enable-computer-use) before Claude can control your screen. On macOS, you also need to grant Accessibility and Screen Recording permissions.

Unlike the [sandboxed Bash tool](/docs/en/sandboxing), computer use runs on your actual desktop with access to whatever you approve. Claude checks each action and flags potential prompt injection from on-screen content, but the trust boundary is different. See the [computer use safety guide](https://support.claude.com/en/articles/14128542) for best practices.


When computer use applies

Claude has several ways to interact with an app or service, and computer use is the broadest and slowest. It tries the most precise tool first:

- If you have a [connector](#connect-external-tools) for a service, Claude uses the connector.
- If the task is a shell command, Claude uses Bash.
- If the task is browser work and you have [Claude in Chrome](/docs/en/chrome) set up, Claude uses that.
- If none of those apply, Claude uses computer use.

The [per-app access tiers](#app-permissions) reinforce this: browsers are capped at view-only, and terminals and IDEs at click-only, steering Claude toward the dedicated tool even when computer use is active. Screen control is reserved for things nothing else can reach, like native apps, hardware control panels, mobile simulators, or proprietary tools without an API.


Enable computer use

Computer use is off by default. If you ask Claude to do something that needs it while it’s off, Claude tells you it could do the task if you enable computer use in Settings.

1


Update the desktop app

Make sure you have the latest version of Claude Desktop. Download or update at [claude.com/download](https://claude.com/download), then restart the app.

2


Turn on the toggle

In the desktop app, go to **Settings \> General** (under **Desktop app**). Find the **Computer use** toggle and turn it on. On Windows, the toggle takes effect immediately and setup is complete. On macOS, continue to the next step.If you don’t see the toggle, confirm you’re on macOS or Windows with a Pro or Max plan, then update and restart the app.

3


Grant macOS permissions

On macOS, grant two system permissions before the toggle takes effect:

- **Accessibility**: lets Claude click, type, and scroll
- **Screen Recording**: lets Claude see what’s on your screen

The Settings page shows the current status of each permission. If either is denied, click the badge to open the relevant System Settings pane.


App permissions

The first time Claude needs to use an app, a prompt appears in your session. Click **Allow for this session** or **Deny**. Approvals last for the current session, or 30 minutes in [Dispatch-spawned sessions](#sessions-from-dispatch). The prompt also shows what level of control Claude gets for that app. These tiers are fixed by app category and can’t be changed:

| Tier | What Claude can do | Applies to |
|:---|:---|:---|
| View only | See the app in screenshots | Browsers, trading platforms |
| Click only | Click and scroll, but not type or use keyboard shortcuts | Terminals, IDEs |
| Full control | Click, type, drag, and use keyboard shortcuts | Everything else |

Apps with broad reach, like terminals, Finder or File Explorer, and System Settings or Settings, show an extra warning in the prompt so you know what approving them grants. You can configure two settings in **Settings \> General** (under **Desktop app**):

- **Denied apps**: add apps here to reject them without prompting. Claude may still affect a denied app indirectly through actions in an allowed app, but it can’t interact with the denied app directly.
- **Unhide apps when Claude finishes**: while Claude is working, your other windows are hidden so it interacts with only the approved app. When Claude finishes, hidden windows are restored unless you turn this setting off.


Manage sessions

Each session is an independent conversation with its own context and changes. You can run multiple sessions in parallel, branch off side chats, send work to the cloud, or let Dispatch start sessions for you from your phone.


Work in parallel with sessions

Click **+ New session** in the sidebar, or press **Cmd+N** on macOS or **Ctrl+N** on Windows, to work on multiple tasks in parallel. Press **Ctrl+Tab** and **Ctrl+Shift+Tab** to cycle through sessions in the sidebar. For Git repositories, each session gets its own isolated copy of your project using [Git worktrees](/docs/en/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), so changes in one session don’t affect other sessions until you commit them. Worktrees 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. To have sessions archive themselves when their pull request merges or closes, turn on **Auto-archive after PR merge or close** in Settings → Claude Code. Auto-archive only applies to local sessions that have finished running. To include gitignored files like `.env` in new worktrees, create a [`.worktreeinclude` file](/docs/en/common-workflows#copy-gitignored-files-to-worktrees) in your project root.

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, ask Claude in the [Cowork tab](https://claude.com/product/cowork) to help troubleshoot your setup.

Use the controls at the top of the sidebar to filter sessions by status, project, or environment, and to group sessions by project. To rename a session, click the session title in the toolbar at the top of the active session. To check context usage, see [Check usage](#check-usage). 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](/docs/en/how-claude-code-works#the-context-window) for details on how compaction works.


Ask a side question without derailing the session

A side chat lets you ask Claude a question that uses your session’s context but doesn’t add anything back to the main conversation. Use it when you want to understand a piece of code, check an assumption, or explore an idea without steering the session off course. Press **Cmd+;** on macOS or **Ctrl+;** on Windows to open a side chat, or type `/btw` in the prompt box. The side chat can read everything in the main thread up to that point. When you’re done, close the side chat and continue the main session where you left off. Side chats are available in local and SSH sessions.


Watch background tasks

The tasks pane shows the background work running inside the current session: subagents, background shell commands, and workflows. Open it from the **Views** menu or drag it into your layout. Click any entry to see its output in the subagent pane or stop it. To see what other sessions are doing, use the [sidebar](#work-in-parallel-with-sessions).


Run long-running tasks remotely

For large refactors, test suites, migrations, or other long-running tasks, select **Remote** instead of **Local** when starting a session. Remote sessions run on Anthropic’s cloud infrastructure and continue even if you close the app or shut down your computer. Check back anytime to see progress or steer Claude in a different direction. You can also monitor remote sessions from [claude.ai/code](https://claude.ai/code) or the Claude iOS app. Remote sessions also support multiple repositories. After selecting a cloud environment, click the **+** button next to the repo pill to add additional repositories to the session. Each repo gets its own branch selector. This is useful for tasks that span multiple codebases, such as updating a shared library and its consumers. See [Claude Code on the web](/docs/en/claude-code-on-the-web) for more on how remote sessions work.


Continue in another surface

The **Continue in** menu, accessible from the VS Code icon in the bottom right of the session toolbar, lets you move your session to another surface:

- **Claude Code on the Web**: sends your local session to continue running remotely. Desktop pushes your branch, generates a summary of the conversation, and creates a new remote session with the full context. You can then choose to archive the local session or keep it. This requires a clean working tree, and is not available for SSH sessions.
- **Your IDE**: opens your project in a supported IDE at the current working directory.


Sessions from Dispatch

[Dispatch](https://support.claude.com/en/articles/13947068) is a persistent conversation with Claude that lives in the [Cowork](https://claude.com/product/cowork#dispatch-and-computer-use) tab. You message Dispatch a task, and it decides how to handle it. A task can end up as a Code session in two ways: you ask for one directly, such as “open a Claude Code session and fix the login bug”, or Dispatch decides the task is development work and spawns one on its own. Tasks that typically route to Code include fixing bugs, updating dependencies, running tests, or opening pull requests. Research, document editing, and spreadsheet work stay in Cowork. Either way, the Code session appears in the Code tab’s sidebar with a **Dispatch** badge. You get a push notification on your phone when it finishes or needs your approval. If you have [computer use](#let-claude-use-your-computer) enabled, Dispatch-spawned Code sessions can use it too. App approvals in those sessions expire after 30 minutes and re-prompt, rather than lasting the full session like regular Code sessions. For setup, pairing, and Dispatch settings, see the [Dispatch help article](https://support.claude.com/en/articles/13947068). Dispatch requires a Pro or Max plan and is not available on Team or Enterprise plans. Dispatch is one of several ways to work with Claude when you’re away from your terminal. See [Platforms and integrations](/docs/en/platforms#work-when-you-are-away-from-your-terminal) to compare it with Remote Control, Channels, Slack, and scheduled tasks.


Extend Claude Code

Connect external services, add reusable workflows, customize Claude’s behavior, and configure preview servers. To manage connectors, skills, and plugins in one place, click **Customize** in the sidebar.


Connect external tools

For local and [SSH](#ssh-sessions) sessions, click the **+** button next to the prompt box and select **Connectors** to add integrations like Google Calendar, Slack, GitHub, Linear, Notion, and more. You can add connectors before or during a session. The **+** button is not available in remote sessions, but [routines](/docs/en/routines) configure connectors at routine creation time. To manage or disconnect connectors, go to Settings → Connectors in the desktop app, or select **Manage connectors** from the Connectors menu in the prompt box. Once connected, Claude can read your calendar, send messages, create issues, and interact with your tools directly. You can ask Claude what connectors are configured in your session. Connectors are [MCP servers](/docs/en/mcp) with a graphical setup flow. Use them for quick integration with supported services. For integrations not listed in Connectors, add MCP servers manually via [settings files](/docs/en/mcp#installing-mcp-servers). You can also [create custom connectors](../14-Connectors/getting-started-with-custom-connectors-using-remote-mcp.md).


Use skills

[Skills](/docs/en/skills) extend what Claude can do. Claude loads them automatically when relevant, or you can invoke one directly: type `/` in the prompt box or click the **+** button and select **Slash commands** to browse what’s available. This includes [built-in commands](/docs/en/commands), your [custom skills](/docs/en/skills#create-your-first-skill), project skills from your codebase, and skills from any [installed plugins](/docs/en/plugins). Select one and it appears highlighted in the input field. Type your task after it and send as usual.


Install plugins

[Plugins](/docs/en/plugins) are reusable packages that add skills, agents, hooks, MCP servers, and LSP configurations to Claude Code. You can install plugins from the desktop app without using the terminal. For local and [SSH](#ssh-sessions) sessions, click the **+** button next to the prompt box and select **Plugins** to see your installed plugins and their skills. To add a plugin, select **Add plugin** from the submenu to open the plugin browser, which shows available plugins from your configured [marketplaces](/docs/en/plugin-marketplaces) including the official Anthropic marketplace. Select **Manage plugins** to enable, disable, or uninstall plugins. Plugins can be scoped to your user account, a specific project, or local-only. If your organization manages plugins centrally, those plugins are available in desktop sessions the same way they are in the CLI. Plugins are not available for remote sessions. For the full plugin reference including creating your own plugins, see [plugins](/docs/en/plugins).


Configure preview servers

Claude 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. To 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.

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "my-app",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "port": 3000
    }
  ]
}
```

You can define multiple configurations to run different servers from the same project, such as a frontend and an API. See the [examples](#examples) below.


Auto-verify changes

When `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. Auto-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.

```python
{
  "version": "0.0.1",
  "autoVerify": false,
  "configurations": [...]
}
```

When disabled, preview tools are still available and you can ask Claude to verify at any time. Auto-verify makes it automatic after every edit.


Configuration fields

Each entry in the `configurations` array accepts the following fields:

| Field | Type | Description |
|----|----|----|
| `name` | string | A unique identifier for this server |
| `runtimeExecutable` | string | The command to run, such as `npm`, `yarn`, or `node` |
| `runtimeArgs` | string\[\] | Arguments passed to `runtimeExecutable`, such as `["run", "dev"]` |
| `port` | number | The port your server listens on. Defaults to 3000 |
| `cwd` | string | Working directory relative to your project root. Defaults to the project root. Use `${workspaceFolder}` to reference the project root explicitly |
| `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. To pass secrets to your dev server, set them in the [local environment editor](#local-sessions) instead. |
| `autoPort` | boolean | How to handle port conflicts. See below |
| `program` | string | A script to run with `node`. See [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |
| `args` | string\[\] | Arguments passed to `program`. Only used when `program` is set |

##### When to use `program` vs `runtimeExecutable`

Use `runtimeExecutable` with `runtimeArgs` to start a dev server through a package manager. For example, `"runtimeExecutable": "npm"` with `"runtimeArgs": ["run", "dev"]` runs `npm run dev`. Use `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`.


Port conflicts

The `autoPort` field controls what happens when your preferred port is already in use:

- **`true`**: Claude finds and uses a free port automatically. Suitable for most dev servers.
- **`false`**: Claude fails with an error. Use this when your server must use a specific port, such as for OAuth callbacks or CORS allowlists.
- **Not set (default)**: Claude asks whether the server needs that exact port, then saves your answer.

When Claude picks a different port, it passes the assigned port to your server via the `PORT` environment variable.


Examples

These configurations show common setups for different project types:

- Next.js

- Multiple servers

- Node.js script

This configuration runs a Next.js app using Yarn on port 3000:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "web",
      "runtimeExecutable": "yarn",
      "runtimeArgs": ["dev"],
      "port": 3000
    }
  ]
}
```

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:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "frontend",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "cwd": "apps/web",
      "port": 3000,
      "autoPort": true
    },
    {
      "name": "api",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "start"],
      "cwd": "server",
      "port": 8080,
      "env": { "NODE_ENV": "development" },
      "autoPort": false
    }
  ]
}
```

To run a Node.js script directly instead of using a package manager command, use the `program` field:

```python
{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "server",
      "program": "server.js",
      "args": ["--verbose"],
      "port": 4000
    }
  ]
}
```


Environment configuration

The environment you pick when [starting a session](#start-a-session) determines where Claude executes and how you connect:

- **Local**: runs on your machine with direct access to your files
- **Remote**: runs on Anthropic’s cloud infrastructure. Sessions continue even if you close the app.
- **SSH**: runs on a remote machine you connect to over SSH, such as your own servers, cloud VMs, or dev containers


Local sessions

The desktop app does not always inherit your full shell environment. On macOS, when you launch the app from the Dock or Finder, it reads your shell profile, such as `~/.zshrc` or `~/.bashrc`, to extract `PATH` and a fixed set of Claude Code variables, but other variables you export there are not picked up. On Windows, the app inherits user and system environment variables but does not read PowerShell profiles. To set environment variables for local sessions and dev servers on any platform, open the environment dropdown in the prompt box, hover over **Local**, and click the gear icon to open the local environment editor. Variables you save here are stored encrypted on your machine and apply to every local session and preview server you start. You can also add variables to the `env` key in your `~/.claude/settings.json` file, though these reach Claude sessions only and not dev servers. See [environment variables](/docs/en/env-vars) for the full list of supported variables. [Extended thinking](/docs/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` to `0` in the local environment editor. On models with [adaptive reasoning](/docs/en/model-config#adjust-effort-level), any other `MAX_THINKING_TOKENS` value is ignored because adaptive reasoning controls thinking depth instead. On Opus 4.6 and Sonnet 4.6, set `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` to `1` to use a fixed thinking budget; Opus 4.7 always uses adaptive reasoning and has no fixed-budget mode.


Remote sessions

Remote sessions continue in the background even if you close the app. Usage counts toward your [subscription plan limits](/docs/en/costs) with no separate compute charges. You 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 [the cloud environment](/docs/en/claude-code-on-the-web#the-cloud-environment) for details on configuring network access and environment variables.


SSH sessions

SSH sessions let you run Claude Code on a remote machine while using the desktop app as your interface. This is useful for working with codebases that live on cloud VMs, dev containers, or servers with specific hardware or dependencies. To add an SSH connection, click the environment dropdown before starting a session and select **+ Add SSH connection**. The dialog asks for:

- **Name**: a friendly label for this connection
- **SSH Host**: `user@hostname` or a host defined in `~/.ssh/config`
- **SSH Port**: defaults to 22 if left empty, or uses the port from your SSH config
- **Identity File**: path to your private key, such as `~/.ssh/id_rsa`. Leave empty to use the default key or your SSH config.

Once 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. The remote machine must run Linux or macOS. Desktop installs Claude Code on the remote machine automatically the first time you connect. Once connected, SSH sessions support permission modes, connectors, plugins, and MCP servers.


Pre-configure SSH connections for your team

Administrators can distribute SSH connections to team members by adding `sshConfigs` to a [managed settings](/docs/en/settings#settings-precedence) file. Connections defined this way appear in each user’s environment dropdown automatically and are shown as managed, so users can select them but cannot edit or delete them in the app. The following example pre-configures a single connection that opens in `~/projects` on the remote host:

```python
{
  "sshConfigs": [
    {
      "id": "shared-dev-vm",
      "name": "Shared Dev VM",
      "sshHost": "user@dev.example.com",
      "sshPort": 22,
      "sshIdentityFile": "~/.ssh/id_ed25519",
      "startDirectory": "~/projects"
    }
  ]
}
```

Each entry requires `id`, `name`, and `sshHost`. The `sshPort`, `sshIdentityFile`, and `startDirectory` fields are optional. Users can also add `sshConfigs` to their own `~/.claude/settings.json`, which is where connections added through the dialog are stored.


Enterprise configuration

Organizations on Team or Enterprise plans can manage desktop app behavior through admin console controls, managed settings files, and device management policies.


Admin console controls

These settings are configured through the [admin settings console](https://claude.ai/admin-settings/claude-code):

- **Code in the desktop**: control whether users in your organization can access Claude Code in the desktop app
- **Code in the web**: enable or disable [web sessions](/docs/en/claude-code-on-the-web) for your organization
- **Remote Control**: enable or disable [Remote Control](/docs/en/remote-control) for your organization
- **Disable Bypass permissions mode**: prevent users in your organization from enabling bypass permissions mode


Managed settings

Managed settings override project and user settings and apply when Desktop spawns CLI sessions. You can set these keys in your organization’s [managed settings](/docs/en/settings#settings-precedence) file or push them remotely through the admin console.

| Key | Description |
|----|----|
| `permissions.disableBypassPermissionsMode` | set to `"disable"` to prevent users from enabling Bypass permissions mode. |
| `disableAutoMode` | set to `"disable"` to prevent users from enabling [Auto](/docs/en/permission-modes#eliminate-prompts-with-auto-mode) mode. Removes Auto from the mode selector. Also accepted under `permissions`. |
| `autoMode` | customize what the auto mode classifier trusts and blocks across your organization. See [Configure auto mode](/docs/en/auto-mode-config). |
| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) that appear in the environment dropdown. Users cannot edit or delete managed connections. |

A managed settings file deployed to disk on each machine applies to Desktop sessions. Managed settings pushed remotely through the admin console currently reach CLI and IDE sessions only, so for Desktop deployments either distribute the file via MDM or use the [admin console controls](#admin-console-controls) above. `permissions.disableBypassPermissionsMode` and `disableAutoMode` also work in user and project settings, but placing them in managed settings prevents users from overriding them. `autoMode` is read from user settings, `.claude/settings.local.json`, and managed settings, but not from the checked-in `.claude/settings.json`: a cloned repo cannot inject its own classifier rules. For the complete list of managed-only settings including `allowManagedPermissionRulesOnly` and `allowManagedHooksOnly`, see [managed-only settings](/docs/en/permissions#managed-only-settings).


Device management policies

IT teams can manage the desktop app through MDM on macOS or group policy on Windows. Available policies include enabling or disabling the Claude Code feature, controlling auto-updates, and setting a custom deployment URL.

- **macOS**: configure via `com.anthropic.Claude` preference domain using tools like Jamf or Kandji
- **Windows**: configure via registry at `SOFTWARE\Policies\Claude`


Authentication and SSO

Enterprise organizations can require SSO for all users. See [authentication](/docs/en/authentication) for plan-level details and [Setting up SSO](../21-Account-Support/setting-up-single-sign-on-sso.md) for SAML and OIDC configuration.


Data handling

Claude Code processes your code locally in local sessions or on Anthropic’s cloud infrastructure in remote sessions. Conversations and code context are sent to Anthropic’s API for processing. See [data handling](/docs/en/data-usage) for details on data retention, privacy, and compliance.


Deployment

Desktop can be distributed through enterprise deployment tools:

- **macOS**: distribute via MDM such as Jamf or Kandji using the `.dmg` installer
- **Windows**: deploy via MSIX package or `.exe` installer. See [Deploy Claude Desktop for Windows](https://support.claude.com/en/articles/12622703-deploy-claude-desktop-for-windows) for enterprise deployment options including silent installation

For network configuration such as proxy settings, firewall allowlisting, and LLM gateways, see [network configuration](/docs/en/network-config). For the full enterprise configuration reference, see the [enterprise configuration guide](../13-Enterprise-Admin/enterprise-configuration.md).


Coming from the CLI?

If you already use the Claude Code CLI, Desktop runs the same underlying engine with a graphical interface. You can run both simultaneously on the same machine, even on the same project. Each maintains separate session history, but they share configuration and project memory via CLAUDE.md files. To move a CLI session into Desktop, run `/desktop` in the terminal. Claude saves your session and opens it in the desktop app, then exits the CLI. This command is available on macOS and Windows only.

When to use Desktop vs CLI: use Desktop when you want to manage parallel sessions in one window, arrange panes side by side, or review changes visually. Use the CLI when you need scripting, automation, or prefer a terminal workflow.


CLI flag equivalents

This 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.

| CLI | Desktop equivalent |
|----|----|
| `--model sonnet` | Model dropdown next to the send button |
| `--resume`, `--continue` | Click a session in the sidebar |
| `--permission-mode` | Mode selector next to the send button |
| `--dangerously-skip-permissions` | Bypass permissions mode. Enable in Settings → Claude Code → “Allow bypass permissions mode”. Enterprise admins can disable this setting. |
| `--add-dir` | Add multiple repos with the **+** button in remote sessions |
| `--allowedTools`, `--disallowedTools` | No per-session equivalent. Permission rules in [settings files](/docs/en/settings) still apply. |
| `--verbose` | [Verbose view mode](#switch-view-modes) in the Transcript view dropdown |
| `--print`, `--output-format` | Not available. Desktop is interactive only. |
| `ANTHROPIC_MODEL` env var | Model dropdown next to the send button |
| `MAX_THINKING_TOKENS` env var | Set in the local environment editor. See [environment configuration](#environment-configuration). |


Shared configuration

Desktop and CLI read the same configuration files, so your setup carries over:

- **[CLAUDE.md](/docs/en/memory)** and `CLAUDE.local.md` files in your project are used by both
- **[MCP servers](/docs/en/mcp)** configured in `~/.claude.json` or `.mcp.json` work in both
- **[Hooks](/docs/en/hooks)** and **[skills](/docs/en/skills)** defined in settings apply to both
- **[Settings](/docs/en/settings)** in `~/.claude.json` and `~/.claude/settings.json` are shared. Permission rules, allowed tools, and other settings in `settings.json` apply to Desktop sessions.
- **Models**: Sonnet, Opus, and Haiku are available in both. In Desktop, select the model from the dropdown next to the send button. You can change the model mid-session from the same dropdown.

**MCP servers: desktop chat app vs Claude Code**: MCP servers configured for the Claude Desktop chat app in `claude_desktop_config.json` are separate from Claude Code and will not appear in the Code tab. To use MCP servers in Claude Code, configure them in `~/.claude.json` or your project’s `.mcp.json` file. See [MCP configuration](/docs/en/mcp#installing-mcp-servers) for details.


Feature comparison

This table compares core capabilities between the CLI and Desktop. For a full list of CLI flags, see the [CLI reference](/docs/en/cli-reference).

| Feature | CLI | Desktop |
|----|----|----|
| Permission modes | All modes including `dontAsk` | Ask permissions, Auto accept edits, Plan mode, Auto, and Bypass permissions via Settings |
| `--dangerously-skip-permissions` | CLI flag | Bypass permissions mode. Enable in Settings → Claude Code → “Allow bypass permissions mode” |
| [Third-party providers](/docs/en/third-party-integrations) | Bedrock, Vertex, Foundry | Anthropic’s API by default. Enterprise deployments can configure Vertex AI and gateway providers. See the [enterprise configuration guide](../13-Enterprise-Admin/enterprise-configuration.md). |
| [MCP servers](/docs/en/mcp) | Configure in settings files | Connectors UI for local and SSH sessions, or settings files |
| [Plugins](/docs/en/plugins) | `/plugin` command | Plugin manager UI |
| @mention files | Text-based | With autocomplete; local and SSH sessions only |
| File attachments | Not available | Images, PDFs |
| Session isolation | [`--worktree`](/docs/en/cli-reference) flag | Automatic worktrees |
| Multiple sessions | Separate terminals | Sidebar tabs |
| Recurring tasks | Cron jobs, CI pipelines | [Scheduled tasks](/docs/en/desktop-scheduled-tasks) |
| Computer use | [Enable via `/mcp`](/docs/en/computer-use) on macOS | [App and screen control](#let-claude-use-your-computer) on macOS and Windows |
| Dispatch integration | Not available | [Dispatch sessions](#sessions-from-dispatch) in the sidebar |
| Scripting and automation | [`--print`](/docs/en/cli-reference), [Agent SDK](/docs/en/headless) | Not available |


What’s not available in Desktop

The following features are only available in the CLI or VS Code extension:

- **Third-party providers**: Desktop connects to Anthropic’s API by default. Enterprise deployments can configure Vertex AI and gateway providers via [managed settings](../13-Enterprise-Admin/enterprise-configuration.md). For Bedrock or Foundry, use the [CLI](/docs/en/quickstart).
- **Linux**: the desktop app is available on macOS and Windows only.
- **Inline code suggestions**: Desktop does not provide autocomplete-style suggestions. It works through conversational prompts and explicit code changes.
- **Agent teams**: multi-agent orchestration is available via the [CLI](/docs/en/agent-teams) and [Agent SDK](/docs/en/headless), not in Desktop.


Troubleshooting

The sections below cover issues specific to the desktop app. For runtime API errors that appear in the chat such as `API Error: 500`, `529 Overloaded`, `429`, or `Prompt is too long`, see the [Error reference](/docs/en/errors). Those errors and their fixes are the same across the CLI, desktop, and web.


Check your version

To see which version of the desktop app you’re running:

- **macOS**: click **Claude** in the menu bar, then **About Claude**
- **Windows**: click **Help**, then **About**

Click the version number to copy it to your clipboard.


403 or authentication errors in the Code tab

If you see `Error 403: Forbidden` or other authentication failures when using the Code tab:

1.  Sign out and back in from the app menu. This is the most common fix.
2.  Verify you have an active paid subscription: Pro, Max, Team, or Enterprise.
3.  If the CLI works but Desktop does not, quit the desktop app completely, not just close the window, then reopen and sign in again.
4.  Check your internet connection and proxy settings.


Blank or stuck screen on launch

If the app opens but shows a blank or unresponsive screen:

1.  Restart the app.
2.  Check for pending updates. The app auto-updates on launch.
3.  On Windows, check Event Viewer for crash logs under **Windows Logs → Application**.


”Failed to load session”

If you see `Failed to load session`, the selected folder may no longer exist, a Git repository may require Git LFS that isn’t installed, or file permissions may prevent access. Try selecting a different folder or restarting the app.


Session not finding installed tools

If Claude can’t find tools like `npm`, `node`, or other CLI commands, verify the tools work in your regular terminal, check that your shell profile properly sets up PATH, and restart the desktop app to reload environment variables.


Git and Git LFS errors

On 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. If 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.


MCP servers not working on Windows

If MCP server toggles don’t respond or servers fail to connect on Windows, check that the server is properly configured in your settings, restart the app, verify the server process is running in Task Manager, and review server logs for connection errors.


App won’t quit

- **macOS**: press Cmd+Q. If the app doesn’t respond, use Force Quit with Cmd+Option+Esc, select Claude, and click Force Quit.
- **Windows**: use Task Manager with Ctrl+Shift+Esc to end the Claude process.


Windows-specific issues

- **PATH not updated after install**: open a new terminal window. PATH updates only apply to new terminal sessions.
- **Concurrent installation error**: if you see an error about another installation in progress but there isn’t one, try running the installer as Administrator.


”Branch doesn’t exist yet” when opening in CLI

Remote sessions can create branches that don’t exist on your local machine. Click the branch name in the session toolbar to copy it, then fetch it locally:

```python
git fetch origin <branch-name>
git checkout <branch-name>
```


Still stuck?

- Search or file a bug on [GitHub Issues](https://github.com/anthropics/claude-code/issues)
- Visit the [Claude support center](https://support.claude.com/)

When 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.


---
## using-claude-app-intents-shortcuts-and-widgets-on-ios.md

4.  Using Claude App Intents, Shortcuts, and Widgets on iOS

# Using Claude App Intents, Shortcuts, and Widgets on iOS


The features described in this guide are available on iOS 18 and above.

Claude for iOS supports multiple powerful features: the Claude widget, the "Analyze Photo with Claude" control, the "Ask Claude" App Intent, and the ability to use this intent within iOS Shortcuts. This guide will explain these features and show you how to make the most of them.

## Ask Claude Intent

The "Ask Claude" intent is a standalone feature that lets you interact with Claude directly from:

- Spotlight search

- Siri

- The Share menu

- Any app that supports iOS intents

You can use this intent on its own to quickly ask Claude questions or give it tasks without opening the Claude app. For example, you can:

- Select text and use the Share menu to send it directly to Claude

- Ask Siri to "Ask Claude” and it will prompt you for a message

- Type "Ask Claude" in Spotlight search to quickly send a query

## Using Ask Claude With Shortcuts

While the "Ask Claude" intent is powerful on its own, you can also use it as a building block within the Shortcuts app to create more complex workflows. Shortcuts allow you to:

- Chain multiple "Ask Claude" actions together

- Combine Claude's capabilities with other apps and actions

- Create automated workflows

- Process Claude's responses in various ways

## Creating Your First Claude Shortcut

There are many customizable workflows you can set up within the Shortcuts app. Let's look at an example of a brief but useful shortcut that helps you summarize text:

1.  Open the Shortcuts app on your iOS device

2.  Tap the "+" button to create a new shortcut

3.  Add the "Share" action and select your preferred input type

4.  Add the "Ask Claude" action

5.  In the "Ask Claude" action, create a prompt like: "Please summarize the following text: \[Shortcut Input\]"

6.  Name your shortcut (e.g., "Summarize with Claude")

7.  Optional: Add the shortcut to your Share Sheet for easy access

Now you can select text anywhere in iOS, tap the Share button, and choose your "Summarize with Claude" shortcut to get an instant summary.

When using "Ask Claude" intent and in shortcuts, the default model you see when opening the Claude app will be used.

More information on setting up shortcuts on your iOS device can be found [here](https://support.apple.com/guide/shortcuts/welcome/ios).

**Note:** When using the "Ask Claude" intent, messages to Claude will count towards your overall usage limit.

## Adding the Claude Widget

The Claude widget provides quick access to chat and voice features directly from your Home Screen or Today View. The widget includes buttons for:

- Starting a new chat

- Instantly opening the app in dictation mode

- Taking a photo to share with Claude

### Add the Claude widget to your Home Screen

1.  From the Home Screen, touch and hold a widget or an empty area until the apps jiggle

2.  Tap Edit in the upper-left corner

3.  Tap Add Widget

4.  Search for and select Claude

5.  Tap Add Widget

6.  Tap Done

### To add the Claude widget to your Today View

Swipe right from the Home Screen or Lock Screen, then follow the same steps as adding to the Home Screen.

### Using the Widget

- Tap the chat button to start a new conversation with Claude.

- Tap the microphone button to instantly open the app in dictation mode, allowing you to start speaking to Claude right away.

- Tap the camera button to take a photo and share it with Claude for analysis.

**Note:** Like the "Ask Claude" intent, interactions started through the widget will count toward your usage limit.

## The Analyze Photo with Claude Control

The "Analyze Photo with Claude" control lets you quickly send images to Claude for analysis directly from Control Center or your Lock Screen.

### Adding to Control Center

1.  Open Control Center (swipe down from the top-right corner on iPhones with Face ID, or swipe up from the bottom on iPhones with a Home button)

2.  Tap the Add button (plus sign) at the top left of Control Center to begin editing

3.  Tap "Add a Control" at the bottom of the screen to open the controls gallery

4.  Find and tap "Analyze Photo with Claude" to add it to Control Center

5.  You can rearrange its position by dragging it to your preferred location

6.  When finished, close Control Center by swiping up from the bottom center of the screen

Once added, you can quickly access it from Control Center by swiping down from the top-right corner of the screen.

More information on using and setting up controls via Control Center can be found [here](https://support.apple.com/guide/iphone/use-and-customize-control-center-iph59095ec58/ios).

### Adding to Your Lock Screen

1.  On your Lock Screen, touch and hold until the customization screen appears

2.  Tap "Customize"

3.  Select the lock screen you want to modify

4.  Remove one of the controls at the bottom of the screen using the Remove button (minus sign), then tap the Add button (plus sign) to open the controls gallery

5.  From the available controls menu, scroll or search for "Analyze Photo with Claude"

6.  Tap to select it

7.  Tap "Done" to save your changes

You can now quickly access the "Analyze Photo with Claude" control without needing to unlock your device or open the Claude app first.


---
## using-dictation-on-claude-mobile.md

# Using dictation on Claude Mobile


Dictation is currently available for users on free, Pro, and Team plans

Dictation allows you to speak your prompts instead of typing them when using Claude for iOS or Android.

## Getting started

1.  Open Claude for iOS or Android.

2.  Start a new chat with Claude.

3.  Tap the microphone icon on the right side of the chat input field.

    - If this is your first time using dictation, you'll need to select your preferred language. You can change this later in Settings.

4.  Dictate your prompt.

5.  Tap the arrow icon to send your prompt.

    - To cancel without sending, tap the "X" icon.

Your prompt will automatically appear as text in the chat window. Claude will respond to your prompt in text format.

## Supported languages

Dictation is currently available in these languages:

- English

- French

- German

- Hindi

- Italian

- Japanese

- Korean

- Portuguese

- Russian

- Spanish

- Turkish

- Ukrainian

## Changing your language settings

To change your speech input language:

1.  Tap your initials in the upper right corner.

2.  Select “Speech Input Language.”

3.  Choose your preferred language from the dropdown.

## Data privacy

After converting your speech input to text, we will delete your audio recording. We will not retain a copy of your speech input or use it for training our generative models.

Learn more about our privacy practices by visiting our [Privacy Policy](https://www.anthropic.com/legal/privacy) and [Privacy Center](https://privacy.anthropic.com/en/).


---
## using-the-claude-widget-on-android.md

# Using the Claude Widget on Android


The Claude Android widget is available on Android 8.0 Oreo and above.

The Claude Android widget provides quick and convenient access to core features directly from your home screen, allowing you to start new chats, capture images, and use voice dictation with a single tap.

## Adding the Claude Widget

The Claude widget puts Claude's key features right on your home screen. To add it:

1.  Touch and hold an empty area on your home screen

2.  Tap "Widgets"

3.  Find and tap "Claude"

4.  Drag the widget to your desired location

5.  Release to place it

6.  Optional: Drag the edges of the widget to resize it

## Widget Features

The widget offers three quick-access buttons:

- A primary chat button (with Claude's spark icon) to start a new conversation

- A camera button for capturing and sharing images with Claude

- A microphone button for voice dictation

## Using the Widget

### Starting a Chat

Tap the main chat button (with the spark icon) to instantly start a new conversation with Claude.

### Taking Photos

Tap the camera button to start a new chat and immediately open your camera. You can capture an image and share it with Claude for analysis.

### Voice Dictation

Tap the microphone button to start a new chat and begin voice dictation. The first time you use this feature, you'll see a brief explanation about how automatic recording works. You may also need to grant voice permissions if you haven't already done so.

**Note:** All interactions started through the widget will count toward your usage limit.


---
## what-versions-of-android-are-supported.md

4.  What versions of Android are supported?

# What versions of Android are supported?


We currently support Android 8.0 Oreo and above.


---
## why-can-t-i-find-claude-for-android-in-the-play-store.md

4.  Why can’t I find Claude for Android in the Play Store?

# Why can’t I find Claude for Android in the Play Store?


If you’re unable to locate the Claude app in your Play Store, you may be located in an [unsupported region](https://support.anthropic.com/en/articles/8461763-where-can-i-access-claude-ai), using an unsupported device, or using an unsupported version of Android.
