Skip to main content
Claude Code on desktop is currently in preview.
Claude Code is an AI coding assistant that works directly with your codebase. Unlike Claude.ai chat, it can read your project files, edit code, run terminal commands, and understand how different parts of your code connect. You watch changes happen in real time. You can use Claude Code through the terminal (CLI) or through the desktop app described here. Both provide the same core capabilities. The desktop app adds a graphical interface and visual session management. The desktop app has three tabs:
  • Chat: A conversational interface for general questions and tasks (like Claude.ai)
  • Cowork: An autonomous agent that works on tasks in the background
  • Code: An AI coding assistant that reads and edits your project files directly
This documentation covers the Code tab. For the chat interface, see the Claude Desktop support articles.

Installation and setup

1

Download the app

Download Claude for your platform. You’ll need an Anthropic account (sign up at claude.ai if you don’t have one).For Windows ARM64, download here. Local sessions are not available on ARM64 devices, so use remote sessions instead.Linux is not currently supported.
2

Open the app and sign in

Launch Claude from your Applications folder (macOS) or Start menu (Windows). Sign in with your Anthropic account.
3

Select the Code tab

Click the Code tab in the top left. If clicking Code prompts you to sign in online, complete the sign-in and restart the app.

Getting started

If you already use the CLI, you can skip to How Desktop relates to CLI for a quick overview of differences.
1

Choose a folder and environment

Select Local to run Claude on your machine using your files directly. This is the best choice for getting started. Click Select folder and choose your project directory.You can also run remote sessions that continue in the cloud even if you close the app.
2

Start a session

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

Review and accept changes

By default, Code is in Ask mode, where Claude proposes changes and waits for your approval before applying them. You’ll see:
  1. A 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.
The sections below cover commands, permission modes, parallel sessions, and ways to extend Claude Code with custom workflows and integrations.

What you can do

Claude Code can edit files, run terminal commands, and understand how your code connects. Try prompts like:
  • Fix the bug in the login function
  • Run the tests and fix any failures
  • How does the authentication flow work?
You can rename, resume, and archive sessions through the sidebar.

Choose a permission mode

Control how Claude works using the mode selector next to the send button:
  • Ask (recommended for new users): Claude asks for your approval before each file edit or command. You see a diff view and can accept or reject each change.
  • Code: Claude auto-accepts file edits but still asks before running terminal commands. Use this when you trust file changes and want faster iteration.
  • Plan: Claude creates a detailed plan for your approval before making any changes. Good for complex tasks where you want to review the approach first.
To stop Claude mid-task, click the stop button. Remote sessions only support Code and Plan modes because they continue running in the background without requiring your active participation. See permission modes for details on how these work internally.

Work in parallel with sessions

Click + New session in the sidebar to work on multiple tasks in parallel. For Git repositories, each session gets its own isolated copy of your project using worktrees, so changes in one session don’t affect another until you commit them. Worktrees are stored in ~/.claude-worktrees/ by default.
Session isolation requires Git. Without Git, sessions in the same directory edit the same files, so changes in one session are immediately visible in others.
To include files listed in your .gitignore (like .env) in new worktrees, create a .worktreeinclude file in your project root listing the file patterns to copy. To manage a session, click its dropdown in the sidebar to rename it, archive it, or check context usage. When context fills up, Claude automatically summarizes the conversation. You can also ask Claude to compact if you want to free up space earlier.

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. Remote sessions support Code and Plan modes. See Claude Code on the web for details on configuring remote environments.

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 (for example, +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 send. In the full diff view, press Enter to accept each comment, then Cmd+Enter to send them all. Claude reads your comments and makes the requested changes, which appear as a new diff you can review.

Extend Claude Code

You can extend Claude Code with custom commands, automated workflows, and external integrations.

Connect external tools

For local sessions, click the button before starting and select Connectors to add integrations like Google Calendar, Slack, GitHub, Linear, Notion, and more. Connectors must be configured before the session starts and are only available for local sessions. 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 (Model Context Protocol) servers with built-in setup. You can also create custom connectors or add MCP servers manually via configuration files.

Create custom skills

Skills are reusable prompts that extend Claude’s capabilities. For example, you could create a review skill that runs your standard code review checklist, or a deploy skill that walks through your deployment steps. Skills are defined as markdown files in .claude/skills/ and can include instructions, context, and even call other tools. Ask Claude what skills are available or to run a specific skill. Claude can also help you create a skill if you describe what you want, or see skills to learn how to write them yourself.

Automate workflows with hooks

Hooks run shell commands automatically in response to Claude Code events. For example, you could run a linter after every file edit, auto-format code, or send notifications when tasks complete. Hooks are configured in your settings files. See hooks for available events and configuration examples.

Environment configuration

When starting a session, you choose between Local (runs on your machine) or Remote (runs on Anthropic’s cloud). Local sessions inherit environment variables from your shell. If you need additional variables, set them in your shell profile (~/.zshrc, ~/.bashrc) and restart the desktop app. See environment variables for the full list of supported variables. Extended thinking is enabled by default, which improves performance on complex reasoning tasks but uses additional tokens. The thinking process runs in the background but isn’t displayed in the Desktop interface. To disable it or adjust the budget, set MAX_THINKING_TOKENS in your shell profile (use 0 to disable). Remote sessions run on Anthropic’s cloud infrastructure and continue even if you close the app. Usage counts toward your subscription plan limits with no separate compute charges. See Claude Code on the web for details on configuring remote environments.

How Desktop relates to 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 (CLAUDE.md files).

CLI flag equivalents

If you’re used to CLI flags, the table below shows the Desktop equivalent for each. Some flags have no Desktop equivalent because they’re designed for scripting or automation.
CLIDesktop equivalent
--model sonnet menu > Model (before starting session)
--resume, --continueClick a session in the sidebar
--allowedTools, --disallowedToolsNot available in Desktop
--dangerously-skip-permissionsNot available in Desktop
--printNot available (Desktop is interactive)

Shared configuration

Desktop and CLI read the same configuration files, so your setup carries over:
  • CLAUDE.md and CLAUDE.local.md files in your project are used by both
  • MCP servers configured in ~/.claude.json or .mcp.json work in both
  • Hooks and skills defined in settings apply to both
  • Settings in ~/.claude.json and ~/.claude/settings.json are shared
  • Models (Sonnet, Opus, Haiku) are available in both (Desktop requires selecting before starting a session)
MCP servers configured for the Claude Desktop chat app (in claude_desktop_config.json) are separate from Claude Code. To use MCP servers in Claude Code, configure them in ~/.claude.json or your project’s .mcp.json file. See MCP configuration for details.

What’s different

Desktop adds:
  • Graphical interface with visual session management
  • Built-in connectors for common integrations
  • Automatic session isolation for Git repositories (each session gets its own worktree)
CLI adds:

Troubleshooting

Solutions to common issues with the Claude desktop app. For CLI issues, see CLI troubleshooting.

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.

”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:
git fetch origin <branch-name>
git checkout <branch-name>

“Failed to load session” error

This error can occur for several reasons:
  • The selected folder no longer exists or is inaccessible
  • A Git repository requires Git LFS but it’s not installed (see Git LFS errors)
  • File permissions prevent access to the project directory
Try selecting a different folder or restarting the desktop app.

App won’t quit

If the desktop app doesn’t close properly:
  • macOS: Press Cmd+Q. If the app doesn’t respond, use Force Quit (Cmd+Option+Esc, select Claude, click Force Quit).
  • Windows: Use Task Manager (Ctrl+Shift+Esc) to end the Claude process.

Windows installation issues

If the installer fails silently or doesn’t complete properly:
  1. PATH not updated: After installation, open a new terminal window. The PATH updates only apply to new terminal sessions.
  2. Concurrent installation error: If you see an error about another installation in progress but there isn’t one, try running the installer as Administrator.

Session not finding installed tools

If Claude can’t find tools like npm, node, or other CLI commands:
  1. Verify the tools work in your regular terminal
  2. Check that your shell profile (~/.zshrc, ~/.bashrc) properly sets up PATH
  3. Restart the desktop app to reload environment variables

MCP servers not working (Windows)

If MCP server toggles don’t respond or servers fail to connect on Windows:
  1. Check that the MCP server is properly configured in your settings
  2. Restart the desktop app after making changes
  3. Verify the MCP server process is running (check Task Manager)
  4. Review the server logs for connection errors

Git LFS errors

If you see “Git LFS is required by this repository but is not installed,” your repository uses Git Large File Storage for large binary files. Install Git LFS before opening this repository:
  1. Install Git LFS from git-lfs.com
  2. Run git lfs install in your terminal
  3. Restart the desktop app

Enterprise configuration

Organizations can disable local Claude Code use in the desktop application with the isClaudeCodeForDesktopEnabled enterprise policy option. Additionally, Claude Code on the web can be disabled in your admin settings.