One read of Claude Code CLIclaude-code-20261022T180701Z
220 pages moved out of 228 read.
Pages moved
220
significant first
Pages read
228
in this capture
Captured
18:07 UTC
Corpus hash
237d0503e095
corpus-hash
What this read moved
201-220 of 220, page 9 of 9This capture is too large to show at once. Changes 201-220 of 220 are below, significant first; the rest are on the following screens.
whats-new/2026-w24 Changed · +5 / -5 lines
from line 2
22
33> Move a session to a new directory with /cd, let subagents spawn their own subagents, and troubleshoot a broken configuration with safe mode.
44
5Releases [v2.1.166 → v2.1.176](/docs/en/changelog#2-1-166)
5Releases [v2.1.166 → v2.1.176](/docs/en/changelog.md#2-1-166)
663 features · June 8–12
77
88Move a session with /cd
from line 16
1616> /cd ../other-project
1717```
1818
19[Commands reference](/docs/en/commands#all-commands)
19[Commands reference](/docs/en/commands.md#all-commands)
2020
2121Subagents can spawn subagents
2222v2.1.172
from line 29
2929> /agents
3030```
3131
32[Spawn nested subagents](/docs/en/sub-agents#let-subagents-spawn-their-own-subagents)
32[Spawn nested subagents](/docs/en/sub-agents.md#let-subagents-spawn-their-own-subagents)
3333
3434Troubleshoot with safe mode
3535v2.1.169
from line 42
4242claude --safe-mode
4343```
4444
45[Test against a clean configuration](/docs/en/debug-your-config#test-against-a-clean-configuration)
45[Test against a clean configuration](/docs/en/debug-your-config.md#test-against-a-clean-configuration)
4646
4747Other wins
4848
4949[`fallbackModel`](/docs/en/model-config#fallback-model-chains) configures up to three fallback models tried in order when the primary is overloaded or unavailable, and `--fallback-model` now applies to interactive sessions tooSession titles are now generated in the language of your conversation; pin a specific one with the `language` setting`claude agents --json` adds `--all` to include completed sessions plus new `id` and `state` fields, and no longer omits blocked or newly dispatched sessionsBrowsing a marketplace's plugins in `/plugin` now has a search barNew `disableBundledSkills` setting and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` hide bundled skills, workflows, and built-in commands from the modelDeny rules accept a glob in the tool-name position, so `"*"` denies all tools, and unknown tool names in deny rules now warn at startupAgent messaging is hardened: messages relayed via `SendMessage` from other agents no longer carry user authority, and auto mode blocks themAmazon Bedrock reads the AWS region from `~/.aws` config files when `AWS_REGION` is unset, and `/status` shows where the region came fromNew `enforceAvailableModels` managed setting makes the `availableModels` allowlist also constrain the Default modelClaude in Chrome browser tools now load in a single batched call instead of one per tool`claude update` announces the target version before downloading instead of going silentNew `footerLinksRegexes` setting adds regex-matched link badges to the footer row
5050
51[Full changelog for v2.1.166–v2.1.176 →](/docs/en/changelog#2-1-166)
51[Full changelog for v2.1.166–v2.1.176 →](/docs/en/changelog.md#2-1-166)
5252
whats-new/2026-w25 Changed · +5 / -5 lines
from line 2
22
33> Publish a live, shareable page from your session with Artifacts, match tool parameters in deny and ask rules, and set any setting from the prompt with /config.
44
5Releases [v2.1.178 → v2.1.183](/docs/en/changelog#2-1-178)
5Releases [v2.1.178 → v2.1.183](/docs/en/changelog.md#2-1-178)
663 features · June 15–19
77
88Artifacts
from line 17
1717Make an artifact that walks through this PR with the diff annotated inline.
1818```
1919
20[Create an artifact](/docs/en/artifacts#create-an-artifact)
20[Create an artifact](/docs/en/artifacts.md#create-an-artifact)
2121
2222Match by input parameter
2323v2.1.178
from line 34
3434}
3535```
3636
37[Match by input parameter](/docs/en/permissions#match-by-input-parameter)
37[Match by input parameter](/docs/en/permissions.md#match-by-input-parameter)
3838
3939Set any setting from the prompt
4040v2.1.181
from line 47
4747/config thinking=false
4848```
4949
50[Commands reference](/docs/en/commands#all-commands)
50[Commands reference](/docs/en/commands.md#all-commands)
5151
5252Other wins
5353
5454Auto mode now blocks destructive git commands (`git reset --hard`, `git clean -fd`, `git stash drop`) when you didn't ask to discard local work, and blocks `terraform destroy` unless you asked for the specific stackSet the new `attribution.sessionUrl` setting to `false` to omit the claude.ai session link from commits and PRs in web and Remote Control sessionsIn the `/config` interface, Enter and Space both change the selected setting, and Esc now saves and closes instead of revertingNew `sandbox.allowAppleEvents` opt-in setting lets sandboxed commands send Apple Events on macOSPoint `CLAUDE_CLIENT_PRESENCE_FILE` at a marker file to suppress mobile push notifications while you're at the machineLong paragraphs now stream line by line instead of waiting for the first line breakAPI connection drops mid-thinking now retry automatically instead of showing "Connection closed while thinking"With `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` set, every session has one implicit team, so you spawn teammates directly with the Agent tool's `name` parameterSkills in nested `.claude/skills` directories load when working on files there; on a name clash the nested skill appears as `<dir>:<name>` so both stay availableFixed prompt caching not reading on a custom `ANTHROPIC_BASE_URL` and on Microsoft FoundryFixed Write and Edit producing zero-byte or truncated files on network drives and cloud-synced folders
5555
56[Full changelog for v2.1.178–v2.1.183 →](/docs/en/changelog#2-1-178)
56[Full changelog for v2.1.178–v2.1.183 →](/docs/en/changelog.md#2-1-178)
5757
whats-new/2026-w26 Changed · +4 / -4 lines
from line 2
22
33> Authenticate MCP servers from your shell with claude mcp login, get a response to shell mode command output with the ! prefix, and resume a conversation from before /clear with /rewind.
44
5Releases [v2.1.185 → v2.1.193](/docs/en/changelog#2-1-185)
5Releases [v2.1.185 → v2.1.193](/docs/en/changelog.md#2-1-185)
662 features · June 22–26
77
88Authenticate MCP servers from the CLI
from line 16
1616claude mcp login sentry
1717```
1818
19[Authenticate from the command line](/docs/en/mcp#authenticate-from-the-command-line)
19[Authenticate from the command line](/docs/en/mcp.md#authenticate-from-the-command-line)
2020
2121Shell mode responds to command output
2222v2.1.186
from line 29
2929> ! npm test
3030```
3131
32[Shell mode with the ! prefix](/docs/en/interactive-mode#shell-mode-with-prefix)
32[Shell mode with the ! prefix](/docs/en/interactive-mode.md#shell-mode-with-prefix)
3333
3434Other wins
3535
3636`/rewind` can now resume a conversation from before `/clear` was runNew `sandbox.credentials` setting blocks sandboxed commands from reading credential files and secret environment variablesOrg-configured model restrictions now apply to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL`, with a "restricted by your organization's settings" message when a restricted model is selectedNew `autoMode.classifyAllShell` setting routes all Bash and PowerShell commands through the auto-mode classifier, and denial reasons now show in the transcript, the denial toast, and `/permissions`New `claude_code.assistant_response` OpenTelemetry log event carries the model's response text; deployments that already log prompt content start receiving it on upgrade, so set `OTEL_LOG_ASSISTANT_RESPONSES=0` to keep prompts onlyBackground subagents now surface permission prompts in the main session instead of auto-denying; the dialog shows which agent is asking, and Esc denies only that tool`/install-github-app` can now install only the GitHub App and skip the Actions workflow and secret stepsHosts you allow in the sandbox network permission dialog are remembered for the rest of the session instead of re-prompting on every connectionStreaming responses use about 37% less CPU, and long-session memory growth from the terminal output cache is reduced`/review <pr>` now uses the same review engine as `/code-review medium`Bash mode `!` commands get live file path autocomplete
3737
38[Full changelog for v2.1.185–v2.1.193 →](/docs/en/changelog#2-1-185)
38[Full changelog for v2.1.185–v2.1.193 →](/docs/en/changelog.md#2-1-185)
3939
whats-new/2026-w27 Changed · +8 / -8 lines
from line 2
22
33> Claude Sonnet 5 becomes the default model, Claude in Chrome reaches general availability, subagents run in the background by default, Claude Desktop arrives on Linux in beta, and /radio tunes into Claude FM.
44
5Releases [v2.1.195 → v2.1.201](/docs/en/changelog#2-1-195)
5Releases [v2.1.195 → v2.1.201](/docs/en/changelog.md#2-1-195)
665 features · June 29 – July 3
77
88Claude Sonnet 5
from line 16
1616> /model claude-sonnet-5
1717```
1818
19[Model configuration](/docs/en/model-config#available-models)
19[Model configuration](/docs/en/model-config.md#available-models)
2020
2121Claude in Chrome is generally available
2222v2.1.198
from line 23
2323
2424The Chrome integration is out of preview for everyone on a direct Anthropic plan. Claude Code drives your browser through the Claude in Chrome extension: it opens tabs, clicks through pages, fills forms, reads console logs, and shares your login state, so it can test the app it builds without you switching contexts.
2525
26[Use Claude Code with Chrome](/docs/en/chrome)
26[Use Claude Code with Chrome](/docs/en/chrome.md)
2727
2828Subagents run in the background by default
2929v2.1.198
from line 30
3030
3131Claude now keeps working while subagents run and picks up their results when they finish, instead of pausing the conversation to wait. Claude still runs a subagent in the foreground when it needs the result before continuing, and background subagents surface every permission prompt in your main session. Pin a subagent's behavior with the `background` frontmatter field.
3232
33[Run subagents in foreground or background](/docs/en/sub-agents#run-subagents-in-foreground-or-background)
33[Run subagents in foreground or background](/docs/en/sub-agents.md#run-subagents-in-foreground-or-background)
3434
3535Claude Desktop on Linux
3636Desktop
from line 37
3737
3838The Claude desktop app is now available on Ubuntu 22.04+ and Debian 12+ in beta, on x86\_64 and arm64. You get the same Chat, Cowork, and Claude Code experience as macOS and Windows: parallel sessions, visual diff review, an integrated terminal and editor, and live app preview. Installs from Anthropic's apt repository, so updates arrive through regular package updates.
3939
40[Claude Desktop on Linux](/docs/en/desktop-linux)
40[Claude Desktop on Linux](/docs/en/desktop-linux.md)
4141
4242/radio
4343CLI
from line 52
5252> /radio
5353```
5454
55[All commands](/docs/en/commands#all-commands)
55[All commands](/docs/en/commands.md#all-commands)
5656
5757Other wins
5858
59[Artifacts](/docs/en/artifacts) are now generally available and included on Pro and Max plans, joining Team and EnterpriseAdmins can set an [organization default model](/docs/en/model-config#organization-default-model) in the org console; it shows as "Org default" in `/model` when you haven't picked a model yourselfStacked skill invocations like `/skill-a /skill-b do XYZ` now load all leading skills (up to 5), not only the first`AskUserQuestion` dialogs no longer auto-continue by default; opt into an idle timeout via `/config`The "default" permission mode is now named "Manual" across the CLI, `--help`, VS Code, and JetBrains; `--permission-mode manual` is accepted alongside `default`New `/dataviz` skill gives chart and dashboard design guidance, with a runnable color-palette validatorThe built-in Explore agent now inherits the main session's model (capped at Opus) instead of running on HaikuBackground agents launched from `claude agents` now commit, push, and open a draft PR when they finish code work in a worktree, instead of stopping to askHook matchers with hyphenated identifiers like `code-reviewer` now exact-match instead of substring-matching; use `mcp__brave-search__.*` to match all tools from a hyphenated MCP serverTransient server rate-limit errors unrelated to your usage limit are now retried automatically with backoff for subscribers instead of failing the turnThe streaming idle watchdog is now on by default for all providers: it aborts and retries when a response stream produces no events for 5 minutes (`CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable)
59[Artifacts](/docs/en/artifacts.md) are now generally available and included on Pro and Max plans, joining Team and EnterpriseAdmins can set an [organization default model](/docs/en/model-config.md#organization-default-model) in the org console; it shows as "Org default" in `/model` when you haven't picked a model yourselfStacked skill invocations like `/skill-a /skill-b do XYZ` now load all leading skills (up to 5), not only the first`AskUserQuestion` dialogs no longer auto-continue by default; opt into an idle timeout via `/config`The "default" permission mode is now named "Manual" across the CLI, `--help`, VS Code, and JetBrains; `--permission-mode manual` is accepted alongside `default`New `/dataviz` skill gives chart and dashboard design guidance, with a runnable color-palette validatorThe built-in Explore agent now inherits the main session's model (capped at Opus) instead of running on HaikuBackground agents launched from `claude agents` now commit, push, and open a draft PR when they finish code work in a worktree, instead of stopping to askHook matchers with hyphenated identifiers like `code-reviewer` now exact-match instead of substring-matching; use `mcp__brave-search__.*` to match all tools from a hyphenated MCP serverTransient server rate-limit errors unrelated to your usage limit are now retried automatically with backoff for subscribers instead of failing the turnThe streaming idle watchdog is now on by default for all providers: it aborts and retries when a response stream produces no events for 5 minutes (`CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable)
6060
61[Full changelog for v2.1.195–v2.1.201 →](/docs/en/changelog#2-1-195)
61[Full changelog for v2.1.195–v2.1.201 →](/docs/en/changelog.md#2-1-195)
6262
whats-new/2026-w28 Changed · +4 / -4 lines
from line 2
22
33> Browse external sites from the Desktop app's built-in browser, run a full setup checkup with /doctor, and pick up auto mode transcript protections and agent view upgrades.
44
5Releases [v2.1.202 → v2.1.206](/docs/en/changelog#2-1-202)
5Releases [v2.1.202 → v2.1.206](/docs/en/changelog.md#2-1-202)
662 features · July 6–10
77
88In-app browser on Desktop
from line 12
1212
1313<video autoPlay muted loop playsInline src="https://mintcdn.com/claude-code/x358isu_VzLnyTEN/images/whats-new/desktop-browser.mp4?fit=max&auto=format&n=x358isu_VzLnyTEN&q=85&s=8033e85a1cb0a37870a79e702c18f4e4" />
1414
15[Browse external sites](/docs/en/desktop#browse-external-sites)
15[Browse external sites](/docs/en/desktop.md#browse-external-sites)
1616
1717/doctor is a full setup checkup
1818v2.1.205
from line 25
2525> /doctor
2626```
2727
28[All commands](/docs/en/commands#all-commands)
28[All commands](/docs/en/commands.md#all-commands)
2929
3030Other wins
3131
3232Auto mode now blocks tampering with session transcript files, and asks before running `rm -rf` on a variable it can't resolve from context`/cd` now suggests directory paths as you type, matching `/add-dir``/commit-push-pr` auto-allows `git push` to the repo's configured push remote in addition to `origin`Gateway: `/login` now supports Anthropic-operated public gateway endpoints`EnterWorktree` asks for confirmation before entering a git worktree outside the project's `.claude/worktrees/` directoryBackground agents upgrade to a new version in the background right after a Claude Code update, instead of paying a slow stale-session upgrade when you attachAgent view rows now show a colored state word and a classifier-written headline instead of raw tool call text, and sessions that edit, merge, comment on, or push to an existing PR link it in `claude agents`Auto-update binary downloads now stream to disk instead of buffering in memory, cutting the updater's peak memory usage by roughly 400 MBBackground task notifications now explicitly state that no human input has occurred, preventing fabricated in-transcript approvals from being acted onImproved `/code-review` findings quality on Opus 4.8 across all effort levels
3333
34[Full changelog for v2.1.202–v2.1.206 →](/docs/en/changelog#2-1-202)
34[Full changelog for v2.1.202–v2.1.206 →](/docs/en/changelog.md#2-1-202)
3535
whats-new/2026-w29 Changed · +5 / -5 lines
from line 2
22
33> Pull live data into published artifacts through MCP connectors, and use Claude Code with a screen reader in the new screen reader mode.
44
5Releases [v2.1.207 → v2.1.212](/docs/en/changelog#2-1-207)
5Releases [v2.1.207 → v2.1.212](/docs/en/changelog.md#2-1-207)
662 features · July 13–17
77
88Artifacts call your MCP connectors
from line 18
1818Build a dashboard artifact of open pull requests that pulls the live list through my GitHub connector when the page loads.
1919```
2020
21[Pull live data with MCP connectors](/docs/en/artifacts#pull-live-data-with-mcp-connectors)
21[Pull live data with MCP connectors](/docs/en/artifacts.md#pull-live-data-with-mcp-connectors)
2222
2323Screen reader mode
2424CLI
from line 31
3131claude --ax-screen-reader
3232```
3333
34[Turn on screen reader mode](/docs/en/accessibility#turn-on-screen-reader-mode)
34[Turn on screen reader mode](/docs/en/accessibility.md#turn-on-screen-reader-mode)
3535
3636Other wins
3737
38`/fork` now copies your conversation into a new background session with its own row in `claude agents` while you keep working; the in-session forked subagent it used to launch is now `/subtask`[Auto mode](/docs/en/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry) no longer needs the `CLAUDE_CODE_ENABLE_AUTO_MODE` opt-in on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry; administrators can turn it off with `disableAutoMode`MCP tool calls that run longer than two minutes now move to the background automatically so the session stays usable; tune or disable the threshold with `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`New `claude auto-mode reset` restores the default auto-mode configuration, and `--yes` skips the confirmation promptNew [corporate launcher](/docs/en/corporate-launcher) support: `CLAUDE_CODE_PROCESS_WRAPPER` or the `processWrapper` setting runs the processes Claude Code starts from its own binary, such as the background service and agent view sessions, through a required wrapper executable`vimInsertModeRemaps` setting maps two-key insert-mode sequences such as `jj` to Escape in vim mode`--forward-subagent-text` and `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` include subagent text and thinking blocks in [stream-json output](/docs/en/headless)Session-wide caps stop runaway loops: WebSearch calls and subagent spawns each default to 200, tunable with `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` and `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION`"Always allow" permission rules save at the repository root, so approvals granted in a git worktree persist across sessions and worktreesAmazon Bedrock, Google Cloud's Agent Platform, and Claude Platform on AWS now default to Claude Opus 4.8The collapsed tool summary line shows a live elapsed-time counter, so long-running tool calls visibly tick instead of looking stuck
38`/fork` now copies your conversation into a new background session with its own row in `claude agents` while you keep working; the in-session forked subagent it used to launch is now `/subtask`[Auto mode](/docs/en/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry) no longer needs the `CLAUDE_CODE_ENABLE_AUTO_MODE` opt-in on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry; administrators can turn it off with `disableAutoMode`MCP tool calls that run longer than two minutes now move to the background automatically so the session stays usable; tune or disable the threshold with `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`New `claude auto-mode reset` restores the default auto-mode configuration, and `--yes` skips the confirmation promptNew [corporate launcher](/docs/en/corporate-launcher.md) support: `CLAUDE_CODE_PROCESS_WRAPPER` or the `processWrapper` setting runs the processes Claude Code starts from its own binary, such as the background service and agent view sessions, through a required wrapper executable`vimInsertModeRemaps` setting maps two-key insert-mode sequences such as `jj` to Escape in vim mode`--forward-subagent-text` and `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` include subagent text and thinking blocks in [stream-json output](/docs/en/headless.md)Session-wide caps stop runaway loops: WebSearch calls and subagent spawns each default to 200, tunable with `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` and `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION`"Always allow" permission rules save at the repository root, so approvals granted in a git worktree persist across sessions and worktreesAmazon Bedrock, Google Cloud's Agent Platform, and Claude Platform on AWS now default to Claude Opus 4.8The collapsed tool summary line shows a live elapsed-time counter, so long-running tool calls visibly tick instead of looking stuck
3939
40[Full changelog for v2.1.207–v2.1.212 →](/docs/en/changelog#2-1-207)
40[Full changelog for v2.1.207–v2.1.212 →](/docs/en/changelog.md#2-1-207)
4141
whats-new/2026-w30 Changed · +7 / -7 lines
from line 2
22
33> Opus 5 becomes the default Opus model, Claude Code Desktop adds an iOS Simulator pane, and the Claude Security plugin scans your code for vulnerabilities.
44
5Releases [v2.1.214 → v2.1.219](/docs/en/changelog#2-1-214)
5Releases [v2.1.214 → v2.1.219](/docs/en/changelog.md#2-1-214)
663 features · July 20–24
77
88Claude Opus 5
99new model
1010
11Claude Opus 5 is the new default Opus model in Claude Code. It's the default on Max, Team Premium, Enterprise pay-as-you-go, and the Anthropic API, and on Claude Platform on AWS, Amazon Bedrock, and Google Cloud's Agent Platform. On the Anthropic API and on Max, Team, and Enterprise plans, Opus 5 runs with a [1M-token context window](/docs/en/model-config#extended-context); on Amazon Bedrock and Google Cloud's Agent Platform, select the 1M model variant. Fast mode moves to Opus 5 at \$10/\$50 per MTok. Requires v2.1.219 or later.
11Claude Opus 5 is the new default Opus model in Claude Code. It's the default on Max, Team Premium, Enterprise pay-as-you-go, and the Anthropic API, and on Claude Platform on AWS, Amazon Bedrock, and Google Cloud's Agent Platform. On the Anthropic API and on Max, Team, and Enterprise plans, Opus 5 runs with a [1M-token context window](/docs/en/model-config.md#extended-context); on Amazon Bedrock and Google Cloud's Agent Platform, select the 1M model variant. Fast mode moves to Opus 5 at \$10/\$50 per MTok. Requires v2.1.219 or later.
1212
1313<video autoPlay muted loop playsInline src="https://mintcdn.com/claude-code/N3yEaTYPXMXFrF6k/images/whats-new/opus-5.mp4?fit=max&auto=format&n=N3yEaTYPXMXFrF6k&q=85&s=8536b1cb3180e539008f39930403e47b" />
1414
from line 18
1818> /model claude-opus-5
1919```
2020
21[Model configuration](/docs/en/model-config#available-models)
21[Model configuration](/docs/en/model-config.md#available-models)
2222
2323iOS Simulator in Claude Code Desktop
2424Desktop
from line 33
3333> Build the app and run it in the simulator to check the onboarding flow.
3434```
3535
36[Test iOS apps in the simulator](/docs/en/desktop-ios-simulator#run-your-app-in-the-simulator)
36[Test iOS apps in the simulator](/docs/en/desktop-ios-simulator.md#run-your-app-in-the-simulator)
3737
3838Claude Security plugin
3939plugin
from line 46
4646> /plugin install claude-security@claude-plugins-official
4747```
4848
49[Scan and fix your codebase](/docs/en/claude-security#scan-and-fix-your-codebase)
49[Scan and fix your codebase](/docs/en/claude-security.md#scan-and-fix-your-codebase)
5050
5151Other wins
5252
53[`/code-review`](/docs/en/code-review-local) now runs as a background subagent with its own context window, so review work stays out of your conversation and the findings arrive when it completes`/verify`, `/code-review`, and `/deep-research` run only when you invoke them; Claude no longer launches them on its own[Emoji shortcodes](/docs/en/interactive-mode#emoji-shortcodes) autocomplete in the prompt input: type `:heart:` to insert an emoji, or two or more characters after `:` for suggestions; turn it off with `emojiCompletionEnabled`Skills with `context: fork` [run in the background](/docs/en/skills#run-skills-in-a-subagent) by default, and `background: false` in the skill's frontmatter waits for the result in the same turnA session runs up to 20 subagents concurrently by default; change the [limit](/docs/en/sub-agents#concurrent-subagent-limit) with `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS``--max-budget-usd` now enforces the cap on subagents: once spend reaches it, Claude can't start more and running background subagents stopNew [`sandbox.filesystem.disabled`](/docs/en/sandboxing#disable-filesystem-isolation) setting skips filesystem isolation while keeping network egress controlIn auto mode, the checks for dangerous `rm` commands, background jobs, and suspicious Windows paths no longer open permission dialogs; the auto-mode classifier adjudicates them insteadBash permission checks fail closed on more shell forms, including file-descriptor redirects, Zsh variable subscripts in `[[ ]]` comparisons, `help` and `man` invocations that could run unsafe options, and commands over 10,000 characters[Fast mode](/docs/en/fast-mode) no longer supports Opus 4.7: `/fast` now applies to Opus 5 and Opus 4.8Long-running tool calls emit a periodic progress heartbeat instead of going silent
53[`/code-review`](/docs/en/code-review-local) now runs as a background subagent with its own context window, so review work stays out of your conversation and the findings arrive when it completes`/verify`, `/code-review`, and `/deep-research` run only when you invoke them; Claude no longer launches them on its own[Emoji shortcodes](/docs/en/interactive-mode.md#emoji-shortcodes) autocomplete in the prompt input: type `:heart:` to insert an emoji, or two or more characters after `:` for suggestions; turn it off with `emojiCompletionEnabled`Skills with `context: fork` [run in the background](/docs/en/skills.md#run-skills-in-a-subagent) by default, and `background: false` in the skill's frontmatter waits for the result in the same turnA session runs up to 20 subagents concurrently by default; change the [limit](/docs/en/sub-agents.md#concurrent-subagent-limit) with `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS``--max-budget-usd` now enforces the cap on subagents: once spend reaches it, Claude can't start more and running background subagents stopNew [`sandbox.filesystem.disabled`](/docs/en/sandboxing#disable-filesystem-isolation) setting skips filesystem isolation while keeping network egress controlIn auto mode, the checks for dangerous `rm` commands, background jobs, and suspicious Windows paths no longer open permission dialogs; the auto-mode classifier adjudicates them insteadBash permission checks fail closed on more shell forms, including file-descriptor redirects, Zsh variable subscripts in `[[ ]]` comparisons, `help` and `man` invocations that could run unsafe options, and commands over 10,000 characters[Fast mode](/docs/en/fast-mode.md) no longer supports Opus 4.7: `/fast` now applies to Opus 5 and Opus 4.8Long-running tool calls emit a periodic progress heartbeat instead of going silent
5454
55[Full changelog for v2.1.214–v2.1.219 →](/docs/en/changelog#2-1-214)
55[Full changelog for v2.1.214–v2.1.219 →](/docs/en/changelog.md#2-1-214)
5656
whats-new/2026-w32 Changed · +6 / -6 lines
from line 2
22
33> Claude Code sessions message each other, self-hosted environments run cloud sessions on your infrastructure, and auto mode becomes the default permission mode.
44
5Releases [v2.1.220 → v2.1.224](/docs/en/changelog#2-1-220)
5Releases [v2.1.220 → v2.1.224](/docs/en/changelog.md#2-1-220)
663 features · August 3–7
77
88Cross-session messaging
from line 20
2020
2121The other session shows a `Message from` row once Claude has read the message; press `Ctrl+O` to expand it. To see which sessions Claude can reach, run `/list-agents`.
2222
23[Message another session](/docs/en/cross-session-messaging#message-another-session)
23[Message another session](/docs/en/cross-session-messaging.md#message-another-session)
2424
2525Self-hosted environments
2626v2.1.224
from line 37
3737
3838The environment shows **Healthy** in admin settings once the runner registers.
3939
40[Self-hosted environments quickstart](/docs/en/self-hosted-environments-quickstart#set-up-an-environment-and-runner)
40[Self-hosted environments quickstart](/docs/en/self-hosted-environments-quickstart.md#set-up-an-environment-and-runner)
4141
4242Auto mode becomes the default
4343CLI
from line 56
5656
5757New sessions then show `auto mode on` in the status bar.
5858
59[Auto mode requirements and controls](/docs/en/permission-modes#eliminate-prompts-with-auto-mode)
59[Auto mode requirements and controls](/docs/en/permission-modes.md#eliminate-prompts-with-auto-mode)
6060
6161Other wins
6262
63The VS Code extension gets [Focus view](/docs/en/vs-code#extension-settings), which hides tool activity behind one expandable row per turn; toggle it from the command menu or with `Ctrl+Alt+F` (`Ctrl+Option+F` on Mac)Sandbox credential files accept [`mode: "mask"`](/docs/en/sandboxing#mask-credential-files) on Linux and WSL2, so sandboxed commands read a sentinel copy while the sandbox proxy substitutes the real value on egress; credential masking also gains `extract`, JWT-aware `decode`, and AWS SigV4 re-signing optionsMarketplaces can distribute a plugin as a [zip archive](/docs/en/plugins/marketplace-reference#archive-plugin-source) with the new `archive` source, downloaded over HTTPS with an optional SHA-256 pin, so installs work without git or npm`/review` is now an alias of [`/code-review`](/docs/en/code-review-local), and `/code-review` with no effort level reuses the level you typed lastA session you copy with [`/fork`](/docs/en/agent-view#copy-the-session-with-%2Ffork) now makes its code changes in a worktree of its own instead of the original session's checkoutPlugins you install from [`/plugin`](/docs/en/plugins/install#install-a-plugin) activate in the current session when it's safe to do so; the install summary reports `Plugin is now active.` or tells you to run `/reload-plugins`[Background sessions](/docs/en/agent-view#how-file-edits-are-isolated) that changed code in a worktree now commit and push before finishing, open a draft pull request only when the task calls for one, and follow the git instructions in your `CLAUDE.md`The 200-subagent-per-session cap is removed, so long-running sessions no longer refuse new subagents; the [concurrency](/docs/en/sub-agents#concurrent-subagent-limit) and depth limits still applyA repository's checked-in settings can no longer turn on [Remote Control auto-connect](/docs/en/remote-control#enable-remote-control-for-all-sessions); set `remoteControlAtStartup` in your user or managed settings instead, and project and local settings can only turn it off[Worktree isolation](/docs/en/worktrees#how-claude-code-enforces-isolation) now blocks not only file edits but also Bash commands and git redirects that reach the main checkout, in every session type and in the session's subagentsA Bash command can no longer hide part of itself from permission checks, and tab or invisible-Unicode padding no longer hides part of a command from the approval dialogPreToolUse auto-allow hooks no longer bypass tool restrictions in Claude Code's internal side tasks such as summaries and compactionThe [Ultraplan](/docs/en/ultraplan) research preview is removed, including the `/ultraplan` command and the `ultraplan` keyword; use plan mode or Claude Code on the web instead
63The VS Code extension gets [Focus view](/docs/en/vs-code.md#extension-settings), which hides tool activity behind one expandable row per turn; toggle it from the command menu or with `Ctrl+Alt+F` (`Ctrl+Option+F` on Mac)Sandbox credential files accept [`mode: "mask"`](/docs/en/sandboxing#mask-credential-files) on Linux and WSL2, so sandboxed commands read a sentinel copy while the sandbox proxy substitutes the real value on egress; credential masking also gains `extract`, JWT-aware `decode`, and AWS SigV4 re-signing optionsMarketplaces can distribute a plugin as a [zip archive](/docs/en/plugins/marketplace-reference.md#archive-plugin-source) with the new `archive` source, downloaded over HTTPS with an optional SHA-256 pin, so installs work without git or npm`/review` is now an alias of [`/code-review`](/docs/en/code-review-local), and `/code-review` with no effort level reuses the level you typed lastA session you copy with [`/fork`](/docs/en/agent-view#copy-the-session-with-%2Ffork) now makes its code changes in a worktree of its own instead of the original session's checkoutPlugins you install from [`/plugin`](/docs/en/plugins/install#install-a-plugin) activate in the current session when it's safe to do so; the install summary reports `Plugin is now active.` or tells you to run `/reload-plugins`[Background sessions](/docs/en/agent-view.md#how-file-edits-are-isolated) that changed code in a worktree now commit and push before finishing, open a draft pull request only when the task calls for one, and follow the git instructions in your `CLAUDE.md`The 200-subagent-per-session cap is removed, so long-running sessions no longer refuse new subagents; the [concurrency](/docs/en/sub-agents.md#concurrent-subagent-limit) and depth limits still applyA repository's checked-in settings can no longer turn on [Remote Control auto-connect](/docs/en/remote-control.md#enable-remote-control-for-all-sessions); set `remoteControlAtStartup` in your user or managed settings instead, and project and local settings can only turn it off[Worktree isolation](/docs/en/worktrees.md#how-claude-code-enforces-isolation) now blocks not only file edits but also Bash commands and git redirects that reach the main checkout, in every session type and in the session's subagentsA Bash command can no longer hide part of itself from permission checks, and tab or invisible-Unicode padding no longer hides part of a command from the approval dialogPreToolUse auto-allow hooks no longer bypass tool restrictions in Claude Code's internal side tasks such as summaries and compactionThe [Ultraplan](/docs/en/ultraplan) research preview is removed, including the `/ultraplan` command and the `ultraplan` keyword; use plan mode or Claude Code on the web instead
6464
65[Full changelog for v2.1.220–v2.1.224 →](/docs/en/changelog#2-1-220)
65[Full changelog for v2.1.220–v2.1.224 →](/docs/en/changelog.md#2-1-220)
6666
whats-new/2026-w33 Changed · +6 / -6 lines
from line 2
22
33> Claude Code Desktop auto-continues after a usage limit resets, fork mode turns on by default, and GitLab merge requests and marketplaces join GitHub.
44
5Releases [v2.1.225 → v2.1.233](/docs/en/changelog#2-1-225)
5Releases [v2.1.225 → v2.1.233](/docs/en/changelog.md#2-1-225)
663 features · August 10–14
77
88Auto-continue after a usage limit on Desktop
from line 14
1414
1515The next time a session-limit card appears, check **Auto-continue when limits reset** and leave the session open. The card shows `Auto-resuming at` followed by the reset time, and the turn picks up on its own once the limit resets.
1616
17[What to do when you hit a usage limit](/docs/en/errors#youve-hit-your-session-limit)
17[What to do when you hit a usage limit](/docs/en/errors.md#youve-hit-your-session-limit)
1818
1919Fork mode on by default
2020v2.1.232
from line 29
2929
3030The fork appears in the panel below your prompt and its result arrives in your conversation when it finishes. To turn fork mode off, set `CLAUDE_CODE_FORK_SUBAGENT=0`.
3131
32[Turn fork mode on or off](/docs/en/sub-agents#turn-fork-mode-on-or-off)
32[Turn fork mode on or off](/docs/en/sub-agents.md#turn-fork-mode-on-or-off)
3333
3434GitLab merge requests and marketplaces
3535v2.1.232
from line 44
4444
4545When `origin` is on gitlab.com, Claude Code fetches `merge-requests/42/head` and opens the session on that branch in its own worktree.
4646
47[Branch a worktree from a pull or merge request](/docs/en/worktrees#branch-from-a-pull-request)
47[Branch a worktree from a pull or merge request](/docs/en/worktrees.md#branch-from-a-pull-request)
4848
4949Other wins
5050
51Type `@` in the prompt to [mention another Claude session](/docs/en/cross-session-messaging#message-another-session) by name, and Claude messages it directly with `SendMessage`; a bare name that matches exactly one live session now delivers without a confirmation stepInteractive sessions on one machine keep [unique names](/docs/en/cross-session-messaging#see-which-sessions-claude-can-reach): if you start or rename a session with a name another live session already uses, Claude Code gives yours a `name-word-word` variant and tells youPlugin marketplaces accept [`command` sources](/docs/en/plugins/marketplace-reference#command-plugin-source): a local command prints the plugin directory, which Claude Code re-resolves each session and applies without a restartOn Linux and WSL, set [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/en/tools-reference#memory-limit-on-linux-and-wsl) to a size such as `4G` to cap the memory Bash and PowerShell tool commands can useThe task-tracking tools, such as `TaskCreate`, `TaskUpdate`, and `TodoWrite`, are [no longer available on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and later models in those families](/docs/en/tools-reference#task-tool-availability); set `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` to re-enable them[`/code-review`](/docs/en/code-review-local) at high, xhigh, and max effort now runs in a background agent like the other levels[`/plugin install plugin@marketplace`](/docs/en/plugins/install#install-a-plugin) refreshes the marketplace first, so newly published plugins install without a manual marketplace updateSettings accept [`additionalMarketplaces` and `allowedMarketplaces`](/docs/en/settings-reference#marketplace-key-aliases) as aliases for `extraKnownMarketplaces` and `strictKnownMarketplaces`On newer models, Claude can [overwrite an existing file with the Write tool](/docs/en/tools-reference#write-tool-behavior) without reading it first this session, matching the Edit tool's rules; older models require the readThe VS Code extension can [organize the sessions list into groups](/docs/en/vs-code#organize-sessions-into-groups): right-click to create, rename, or delete a group, and Cmd/Ctrl- or Shift-click to move several sessions at onceIf your organization routes Claude Code through a [Claude apps gateway with spend limits](/docs/en/claude-apps-gateway-spend-limits), Claude Code shows the limit period, its reset time, and the operator's message when you reach the limit
51Type `@` in the prompt to [mention another Claude session](/docs/en/cross-session-messaging.md#message-another-session) by name, and Claude messages it directly with `SendMessage`; a bare name that matches exactly one live session now delivers without a confirmation stepInteractive sessions on one machine keep [unique names](/docs/en/cross-session-messaging.md#see-which-sessions-claude-can-reach): if you start or rename a session with a name another live session already uses, Claude Code gives yours a `name-word-word` variant and tells youPlugin marketplaces accept [`command` sources](/docs/en/plugins/marketplace-reference#command-plugin-source): a local command prints the plugin directory, which Claude Code re-resolves each session and applies without a restartOn Linux and WSL, set [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/en/tools-reference#memory-limit-on-linux-and-wsl) to a size such as `4G` to cap the memory Bash and PowerShell tool commands can useThe task-tracking tools, such as `TaskCreate`, `TaskUpdate`, and `TodoWrite`, are [no longer available on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and later models in those families](/docs/en/tools-reference.md#task-tool-availability); set `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` to re-enable them[`/code-review`](/docs/en/code-review-local) at high, xhigh, and max effort now runs in a background agent like the other levels[`/plugin install plugin@marketplace`](/docs/en/plugins/install#install-a-plugin) refreshes the marketplace first, so newly published plugins install without a manual marketplace updateSettings accept [`additionalMarketplaces` and `allowedMarketplaces`](/docs/en/settings-reference#marketplace-key-aliases) as aliases for `extraKnownMarketplaces` and `strictKnownMarketplaces`On newer models, Claude can [overwrite an existing file with the Write tool](/docs/en/tools-reference.md#write-tool-behavior) without reading it first this session, matching the Edit tool's rules; older models require the readThe VS Code extension can [organize the sessions list into groups](/docs/en/vs-code.md#organize-sessions-into-groups): right-click to create, rename, or delete a group, and Cmd/Ctrl- or Shift-click to move several sessions at onceIf your organization routes Claude Code through a [Claude apps gateway with spend limits](/docs/en/claude-apps-gateway-spend-limits.md), Claude Code shows the limit period, its reset time, and the operator's message when you reach the limit
5252
53[Full changelog for v2.1.225–v2.1.233 →](/docs/en/changelog#2-1-225)
53[Full changelog for v2.1.225–v2.1.233 →](/docs/en/changelog.md#2-1-225)
5454
whats-new/2026-w34 Changed · +6 / -6 lines
from line 2
22
33> Draft editable UI artboards with the /design skill, set the Concise output style, and start a Claude Code session on your machine from your phone.
44
5Releases [v2.1.234 → v2.1.239](/docs/en/changelog#2-1-234)
5Releases [v2.1.234 → v2.1.239](/docs/en/changelog.md#2-1-234)
663 features · August 17–21
77
88/design
from line 20
2020
2121Claude prints a link to the published canvas. Open it, pick an artboard, and tell Claude which option to implement.
2222
23[Where artifacts are available](/docs/en/artifacts#availability)
23[Where artifacts are available](/docs/en/artifacts.md#availability)
2424
2525Concise output style
2626v2.1.237
from line 39
3939
4040Run `/clear` or start a new session, and Claude's replies lead with the result.
4141
42[Built-in output styles](/docs/en/output-styles#built-in-output-styles)
42[Built-in output styles](/docs/en/output-styles.md#built-in-output-styles)
4343
4444Start a session on your machine from your phone
4545mobile
from line 56
5656
5757Your machine appears as a device card at the top of the Code tab. Tap it to pick a directory and start a session there.
5858
59[Start a Remote Control session](/docs/en/remote-control#start-a-remote-control-session)
59[Start a Remote Control session](/docs/en/remote-control.md#start-a-remote-control-session)
6060
6161Other wins
6262
63Claude Code now continues your session automatically when a claude.ai usage limit resets; turn it off from the **Continue automatically at usage limit** row in `/config`The optional [`spellcheck` setting](/docs/en/interactive-mode#check-spelling-as-you-type) underlines misspelled words in the prompt input as you type, using your installed `aspell`, `hunspell`, or `ispell`On a branch with an open GitLab merge request, with the `glab` CLI authenticated through `glab auth login`, the footer shows an [`MR !N` badge](/docs/en/interactive-mode#gitlab-merge-requests) colored by whether the merge request is a draft, open, or mergeableChange the effort level from your phone or claude.ai/code and it [applies to the session on your machine](/docs/en/remote-control#what-connected-devices-see); Remote Control sessions hosted by Desktop or VS Code also show connected devices the session's current permission modeYou can open [`/permissions`](/docs/en/permissions#manage-permissions) or run `/add-dir <path>` while Claude is working; permission rule changes apply to the rest of the current turnWhen background tasks keep a [`/goal`](/docs/en/goal#background-work-defers-evaluation) waiting, Claude checks in on them after 30 minutes instead of waiting indefinitely and keeps checking in, at longer intervals while the session sits idle; set `CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0` to opt outYour own prompts now render markdown in the transcript, with highlighted code blocks, inline code, and lists, the same way replies doThe new [`ANTHROPIC_DEFAULT_MODEL`](/docs/en/model-config#set-a-default-model-for-new-sessions) environment variable sets the model new sessions start on; a `/model` pick still overrides it and persists across restartsWith the `notify_when_idle` input on `SendMessage`, Claude can ask another Claude Code session on the same machine to [send one notice when it next goes idle](/docs/en/cross-session-messaging#get-a-notice-when-another-session-goes-idle)Set [`keybindingFlavor`](/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace) to `"readline"` to make `Ctrl+W` in the prompt delete back to the previous whitespace, as Bash does, instead of stopping at punctuation such as `/`On native Windows, your Claude Code sessions can now [message each other](/docs/en/cross-session-messaging#availability) with `SendMessage` and find each other with `ListAgents`, as on macOS and LinuxSelf-hosted runners accept `--defer-shutdown-max-min`, which [keeps serving attached sessions](/docs/en/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal) for a set number of minutes after SIGTERMSelf-hosted runners accept `--proxy-authorization-command` or `--proxy-authorization-file` to supply a fresh `Proxy-Authorization` header for [egress proxies that require one](/docs/en/self-hosted-environments-deploy#authenticate-to-an-egress-proxy)
63Claude Code now continues your session automatically when a claude.ai usage limit resets; turn it off from the **Continue automatically at usage limit** row in `/config`The optional [`spellcheck` setting](/docs/en/interactive-mode#check-spelling-as-you-type) underlines misspelled words in the prompt input as you type, using your installed `aspell`, `hunspell`, or `ispell`On a branch with an open GitLab merge request, with the `glab` CLI authenticated through `glab auth login`, the footer shows an [`MR !N` badge](/docs/en/interactive-mode#gitlab-merge-requests) colored by whether the merge request is a draft, open, or mergeableChange the effort level from your phone or claude.ai/code and it [applies to the session on your machine](/docs/en/remote-control.md#what-connected-devices-see); Remote Control sessions hosted by Desktop or VS Code also show connected devices the session's current permission modeYou can open [`/permissions`](/docs/en/permissions#manage-permissions) or run `/add-dir <path>` while Claude is working; permission rule changes apply to the rest of the current turnWhen background tasks keep a [`/goal`](/docs/en/goal#background-work-defers-evaluation) waiting, Claude checks in on them after 30 minutes instead of waiting indefinitely and keeps checking in, at longer intervals while the session sits idle; set `CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0` to opt outYour own prompts now render markdown in the transcript, with highlighted code blocks, inline code, and lists, the same way replies doThe new [`ANTHROPIC_DEFAULT_MODEL`](/docs/en/model-config#set-a-default-model-for-new-sessions) environment variable sets the model new sessions start on; a `/model` pick still overrides it and persists across restartsWith the `notify_when_idle` input on `SendMessage`, Claude can ask another Claude Code session on the same machine to [send one notice when it next goes idle](/docs/en/cross-session-messaging.md#get-a-notice-when-another-session-goes-idle)Set [`keybindingFlavor`](/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace) to `"readline"` to make `Ctrl+W` in the prompt delete back to the previous whitespace, as Bash does, instead of stopping at punctuation such as `/`On native Windows, your Claude Code sessions can now [message each other](/docs/en/cross-session-messaging.md#availability) with `SendMessage` and find each other with `ListAgents`, as on macOS and LinuxSelf-hosted runners accept `--defer-shutdown-max-min`, which [keeps serving attached sessions](/docs/en/self-hosted-environments-deploy.md#defer-the-drain-past-the-first-signal) for a set number of minutes after SIGTERMSelf-hosted runners accept `--proxy-authorization-command` or `--proxy-authorization-file` to supply a fresh `Proxy-Authorization` header for [egress proxies that require one](/docs/en/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy)
6464
65[Full changelog for v2.1.234–v2.1.239 →](/docs/en/changelog#2-1-234)
65[Full changelog for v2.1.234–v2.1.239 →](/docs/en/changelog.md#2-1-234)
6666
whats-new/2026-w35 Changed · +6 / -6 lines
from line 2
22
33> Resume terminal sessions in the Claude Code Desktop app, review feedback reports that Claude drafts for you, and start a session in restricted mode.
44
5Releases [v2.1.240 → v2.1.250](/docs/en/changelog#2-1-240)
5Releases [v2.1.240 → v2.1.250](/docs/en/changelog.md#2-1-240)
663 features · August 24–28
77
88Resume terminal sessions in the Desktop app
from line 20
2020
2121Select a session and press `Enter`. The conversation opens in the app where you left off.
2222
23[Move between the CLI and Desktop](/docs/en/desktop#coming-from-the-cli)
23[Move between the CLI and Desktop](/docs/en/desktop.md#coming-from-the-cli)
2424
2525Claude-drafted feedback
2626CLI
from line 37
3737
3838Select a draft, then edit, send, or discard it. To turn drafting off, set **Claude-drafted feedback** to `off` in `/config`.
3939
40[SendFeedback tool behavior](/docs/en/tools-reference#sendfeedback-tool-behavior)
40[SendFeedback tool behavior](/docs/en/tools-reference.md#sendfeedback-tool-behavior)
4141
4242Restricted mode
4343v2.1.248
from line 52
5252
5353To give Claude one of the removed tools back, list it in `--tools` together with the other built-in tools you want, for example `--tools "Bash,Read,Edit"`. `--tools` is an allowlist, and its `default` preset doesn't restore the removed tools.
5454
55[CLI flags](/docs/en/cli-reference#cli-flags)
55[CLI flags](/docs/en/cli-reference.md#cli-flags)
5656
5757Other wins
5858
59Set the new [`modelPicker`](/docs/en/settings-reference#modelpicker) setting to extend or replace the `/model` picker's built-in list with your own ordered, labeled entries, including Amazon Bedrock or Google Cloud's Agent Platform model IDsSet [`promptCacheTtl`](/docs/en/prompt-caching#choose-the-ttl-yourself) to `1h` to keep a one-hour prompt cache on the main conversation when you use an API key or a cloud provider; `subagentPromptCacheTtl` sets the TTL for subagents and all other requests outside the main conversationOn Pro, Max, Team, and Enterprise plans, [`/usage`](/docs/en/costs#plan-usage-breakdown) adds a Loops breakdown: run count, total tokens, tokens per run, and last run for the `/loop` and scheduled tasks that used the most tokensOrganizations on contracted rates can set the [`modelPricing`](/docs/en/costs#report-spend-at-your-contracted-rates) managed setting so `/usage`, the status line, and OpenTelemetry report cost at those rates instead of list price`/login` offers **Sign in with your Console account** under the **Anthropic Console account** option, so members of Console organizations that don't allow API keys can sign in without creating oneRun `/permissions` and open the new [**Auto mode** tab](/docs/en/auto-mode-config#edit-rules-from-permissions) to view and edit auto mode classifier rules without opening a settings fileWhen auto mode is available, Bash permission prompts in the Manual and `acceptEdits` permission modes offer a [**Yes, and switch to auto mode**](/docs/en/permission-modes#switch-permission-modes) option; select it to approve the command and switch the session to auto modeAfter you [move a session with `/cd`](/docs/en/permissions#move-the-session-to-another-directory), the new directory's project settings, hooks, `.mcp.json` servers, skills, and subagents take effect immediately instead of on the next `--resume`In non-interactive sessions, including `-p` runs, Agent SDK runs, and cloud sessions, Claude Code [continues a response](/docs/en/errors#the-response-above-may-be-incomplete) that a server error, dropped connection, or stall cut off mid-stream, when the partial response contains text and no tool callsA subagent that stops at its `maxTurns` limit returns its output marked as partial, with a hint that Claude can [continue it with `SendMessage`](/docs/en/sub-agents#resume-subagents), instead of appearing finishedOn Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry, sessions on the same machine can now [message each other](/docs/en/cross-session-messaging#availability), `/loop` can [choose its own interval](/docs/en/scheduled-tasks#let-claude-choose-the-interval), and `/model` and `/effort` apply immediately instead of after the turn endsThe native installer and auto-updater download a zstd-compressed build, about 75 MB instead of 340 MB on Linux x64, and native builds load code on demand, using roughly 40 to 70 MB less memory per session
59Set the new [`modelPicker`](/docs/en/settings-reference#modelpicker) setting to extend or replace the `/model` picker's built-in list with your own ordered, labeled entries, including Amazon Bedrock or Google Cloud's Agent Platform model IDsSet [`promptCacheTtl`](/docs/en/prompt-caching#choose-the-ttl-yourself) to `1h` to keep a one-hour prompt cache on the main conversation when you use an API key or a cloud provider; `subagentPromptCacheTtl` sets the TTL for subagents and all other requests outside the main conversationOn Pro, Max, Team, and Enterprise plans, [`/usage`](/docs/en/costs#plan-usage-breakdown) adds a Loops breakdown: run count, total tokens, tokens per run, and last run for the `/loop` and scheduled tasks that used the most tokensOrganizations on contracted rates can set the [`modelPricing`](/docs/en/costs#report-spend-at-your-contracted-rates) managed setting so `/usage`, the status line, and OpenTelemetry report cost at those rates instead of list price`/login` offers **Sign in with your Console account** under the **Anthropic Console account** option, so members of Console organizations that don't allow API keys can sign in without creating oneRun `/permissions` and open the new [**Auto mode** tab](/docs/en/auto-mode-config.md#edit-rules-from-permissions) to view and edit auto mode classifier rules without opening a settings fileWhen auto mode is available, Bash permission prompts in the Manual and `acceptEdits` permission modes offer a [**Yes, and switch to auto mode**](/docs/en/permission-modes.md#switch-permission-modes) option; select it to approve the command and switch the session to auto modeAfter you [move a session with `/cd`](/docs/en/permissions#move-the-session-to-another-directory), the new directory's project settings, hooks, `.mcp.json` servers, skills, and subagents take effect immediately instead of on the next `--resume`In non-interactive sessions, including `-p` runs, Agent SDK runs, and cloud sessions, Claude Code [continues a response](/docs/en/errors.md#the-response-above-may-be-incomplete) that a server error, dropped connection, or stall cut off mid-stream, when the partial response contains text and no tool callsA subagent that stops at its `maxTurns` limit returns its output marked as partial, with a hint that Claude can [continue it with `SendMessage`](/docs/en/sub-agents#resume-subagents), instead of appearing finishedOn Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry, sessions on the same machine can now [message each other](/docs/en/cross-session-messaging.md#availability), `/loop` can [choose its own interval](/docs/en/scheduled-tasks.md#let-claude-choose-the-interval), and `/model` and `/effort` apply immediately instead of after the turn endsThe native installer and auto-updater download a zstd-compressed build, about 75 MB instead of 340 MB on Linux x64, and native builds load code on demand, using roughly 40 to 70 MB less memory per session
6060
61[Full changelog for v2.1.240–v2.1.250 →](/docs/en/changelog#2-1-240)
61[Full changelog for v2.1.240–v2.1.250 →](/docs/en/changelog.md#2-1-240)
6262
whats-new/2026-w36 Changed · +8 / -8 lines
from line 2
22
33> Switch to Claude Fable 5.1, let computer use run in the background on Desktop, and watch Claude's edits in a live /diff panel.
44
5Releases [v2.1.251 → v2.1.261](/docs/en/changelog#2-1-251)
5Releases [v2.1.251 → v2.1.261](/docs/en/changelog.md#2-1-251)
664 features · August 31 – September 4
77
88Claude Fable 5.1
from line 18
1818
1919On the Anthropic API, the picker lists Fable only once the server reports it available for your organization, but typing `/model fable` checks with the server directly.
2020
21[Work with Fable](/docs/en/model-config#work-with-fable)
21[Work with Fable](/docs/en/model-config.md#work-with-fable)
2222
2323Computer use runs in the background on Desktop
2424Desktop
from line 27
2727
2828
2929
30[Let Claude use your computer](/docs/en/desktop#let-claude-use-your-computer)
30[Let Claude use your computer](/docs/en/desktop.md#let-claude-use-your-computer)
3131
3232Live diff panel in fullscreen rendering
3333v2.1.260
from line 44
4444
4545Run `/diff` again or click the `✕` in its header to close it.
4646
47[Diff panel](/docs/en/interactive-mode#diff-panel)
47[Diff panel](/docs/en/interactive-mode.md#diff-panel)
4848
4949Find unused skills with /skill-doctor
5050CLI
5151
52`/skill-doctor` shows what each of your skills costs in context and how often it gets used, so you can decide which ones to turn off. Every skill in the [skill listing](/docs/en/skills#skill-descriptions-are-cut-short) adds to your context on every turn, whether or not Claude ever uses it. Requires v2.1.252 or later and isn't available in sessions that skip [feature-flag fetching](/docs/en/env-vars#features-that-need-feature-flag-fetching).
52`/skill-doctor` shows what each of your skills costs in context and how often it gets used, so you can decide which ones to turn off. Every skill in the [skill listing](/docs/en/skills.md#skill-descriptions-are-cut-short) adds to your context on every turn, whether or not Claude ever uses it. Requires v2.1.252 or later and isn't available in sessions that skip [feature-flag fetching](/docs/en/env-vars.md#features-that-need-feature-flag-fetching).
5353
5454Run it in an interactive session to open the report in the `/plugin` manager's **Stats** tab:
5555
from line 59
5959
6060In non-interactive mode with `-p`, Claude Code prints the report as text instead.
6161
62[Find unused skills](/docs/en/skills#find-unused-skills)
62[Find unused skills](/docs/en/skills.md#find-unused-skills)
6363
6464Other wins
6565
66A [`PreModelSwitch`](/docs/en/hooks#premodelswitch) hook can block a model switch you request, and a [`PostModelSwitch`](/docs/en/hooks#postmodelswitch) hook can add context for Claude after the session's model changes[`/cost`](/docs/en/costs#prompt-cache-statistics) adds a `Prompt cache (main)` line: the share of input tokens served from cache, the cache misses, whether the cache is warm, and a likely cause for the last miss when Claude Code can name one. Status line scripts get a matching `prompt_cache` objectOrganizations can list HTTP and SSE MCP servers under the [`managedMcpServers`](/docs/en/managed-mcp#provide-servers-through-managed-settings) managed setting to give them to every user, in addition to the servers that users add on their own`/effort` and the `/model` picker now [save a separate effort level for each model](/docs/en/model-config#adjust-effort-level); press `s` instead of `Enter` to apply a level to the current session onlyBy default, the auto mode classifier [now also blocks](/docs/en/permission-modes#what-the-classifier-blocks-by-default) actions such as requesting credentials from the cloud instance-metadata endpoint or connecting to sibling containers that Claude didn't startIn auto mode, Claude Code asks you before Claude [first reads a file outside your working directories](/docs/en/permission-modes#first-read-outside-the-working-directories), with an option to block such reads from then onRaise [`bashOutputMaxChars`](/docs/en/settings-reference#bashoutputmaxchars) and [`taskOutputMaxChars`](/docs/en/settings-reference#taskoutputmaxchars), up to 128,000 characters, so Claude receives more of the output from a successful command or background task inlineThe prompt's [word-editing shortcuts follow readline](/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace) for everyone, and the `keybindingFlavor` setting no longer has any effect. `Ctrl+W` deletes back to the previous whitespace, and `Alt+B`, `Alt+F`, and `Alt+D` treat punctuation such as `/` and `.` as word breaksIf you set `defaultMode` to `"bypassPermissions"` in a project's `.claude/settings.json` or `.claude/settings.local.json`, it [no longer takes effect](/docs/en/permission-modes#which-mode-a-session-starts-in) and the session starts in Manual mode; set `"bypassPermissions"` in user or managed settings instead, or pass `--permission-mode`Seat-based Enterprise plans now [default to Opus 5](/docs/en/model-config#default-model-setting)In the VS Code extension, click the model name at the bottom of the prompt box to [open the model picker](/docs/en/vs-code#use-the-prompt-box)In the VS Code extension, select **Output styles** in the command menu's Customize section to [pick an output style](/docs/en/vs-code#use-the-prompt-box), including your custom ones
66A [`PreModelSwitch`](/docs/en/hooks#premodelswitch) hook can block a model switch you request, and a [`PostModelSwitch`](/docs/en/hooks#postmodelswitch) hook can add context for Claude after the session's model changes[`/cost`](/docs/en/costs#prompt-cache-statistics) adds a `Prompt cache (main)` line: the share of input tokens served from cache, the cache misses, whether the cache is warm, and a likely cause for the last miss when Claude Code can name one. Status line scripts get a matching `prompt_cache` objectOrganizations can list HTTP and SSE MCP servers under the [`managedMcpServers`](/docs/en/managed-mcp#provide-servers-through-managed-settings) managed setting to give them to every user, in addition to the servers that users add on their own`/effort` and the `/model` picker now [save a separate effort level for each model](/docs/en/model-config.md#adjust-effort-level); press `s` instead of `Enter` to apply a level to the current session onlyBy default, the auto mode classifier [now also blocks](/docs/en/permission-modes.md#what-the-classifier-blocks-by-default) actions such as requesting credentials from the cloud instance-metadata endpoint or connecting to sibling containers that Claude didn't startIn auto mode, Claude Code asks you before Claude [first reads a file outside your working directories](/docs/en/permission-modes.md#first-read-outside-the-working-directories), with an option to block such reads from then onRaise [`bashOutputMaxChars`](/docs/en/settings-reference#bashoutputmaxchars) and [`taskOutputMaxChars`](/docs/en/settings-reference#taskoutputmaxchars), up to 128,000 characters, so Claude receives more of the output from a successful command or background task inlineThe prompt's [word-editing shortcuts follow readline](/docs/en/interactive-mode.md#make-ctrl-w-delete-back-to-whitespace) for everyone, and the `keybindingFlavor` setting no longer has any effect. `Ctrl+W` deletes back to the previous whitespace, and `Alt+B`, `Alt+F`, and `Alt+D` treat punctuation such as `/` and `.` as word breaksIf you set `defaultMode` to `"bypassPermissions"` in a project's `.claude/settings.json` or `.claude/settings.local.json`, it [no longer takes effect](/docs/en/permission-modes.md#which-mode-a-session-starts-in) and the session starts in Manual mode; set `"bypassPermissions"` in user or managed settings instead, or pass `--permission-mode`Seat-based Enterprise plans now [default to Opus 5](/docs/en/model-config.md#default-model-setting)In the VS Code extension, click the model name at the bottom of the prompt box to [open the model picker](/docs/en/vs-code.md#use-the-prompt-box)In the VS Code extension, select **Output styles** in the command menu's Customize section to [pick an output style](/docs/en/vs-code.md#use-the-prompt-box), including your custom ones
6767
68[Full changelog for v2.1.251–v2.1.261 →](/docs/en/changelog#2-1-251)
68[Full changelog for v2.1.251–v2.1.261 →](/docs/en/changelog.md#2-1-251)
6969
whats-new/2026-w37 Changed · +5 / -5 lines
from line 2
22
33> Test your plugins with claude plugin eval and pop Claude Code Desktop panes out into their own windows.
44
5Releases [v2.1.263 → v2.1.269](/docs/en/changelog#2-1-263)
5Releases [v2.1.263 → v2.1.269](/docs/en/changelog.md#2-1-263)
662 features · September 7–11
77
88Test plugins with claude plugin eval
from line 20
2020
2121When Claude tells you the suite is ready, exit the session that `claude plugin eval init` opened and run `claude plugin eval .` to score every case. The summary table prints in your terminal, and `report.html` under `evals/results/` has the per-run detail.
2222
23[Test plugins with evals](/docs/en/plugin-evals)
23[Test plugins with evals](/docs/en/plugin-evals.md)
2424
2525Pop Desktop panes out into their own windows
2626Desktop
from line 29
2929
3030<video autoPlay muted loop playsInline src="https://mintcdn.com/claude-code/f9HTZGyMtxIFOUgt/images/whats-new/desktop-pop-out-panes.mp4?fit=max&auto=format&n=f9HTZGyMtxIFOUgt&q=85&s=ff3770dd09bb15ed9cf17a460f3d1e23" />
3131
32[Arrange your workspace](/docs/en/desktop#arrange-your-workspace)
32[Arrange your workspace](/docs/en/desktop.md#arrange-your-workspace)
3333
3434Other wins
3535
36Set [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) at the top level or per model under `modelSettings` to cap the effort level on every provider, including Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry; any higher level runs at the capPoint `--plugin-dir` at a folder of plugins to [load each immediate subfolder that has a manifest](/docs/en/plugins/create#load-a-directory-or-archive-for-one-session)If WebFetch hasn't finished downloading a page within five minutes, [the fetch fails with a deadline error](/docs/en/tools-reference#webfetch-tool-behavior) instead of hanging; set `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` to change the deadline, or to `0` to remove the limitPass `--json` to `claude plugin install`, `uninstall`, `update`, `enable`, or `disable` to print the result as [one JSON object on the last line of stdout](/docs/en/plugins/cli-reference#plugin-json-result)When the auto mode classifier blocks an action, the reason Claude receives [usually names the rule that matched](/docs/en/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry), such as `[Data Exfiltration]`When you type `/` partway through a prompt, you can now pick from [a list of matching commands](/docs/en/interactive-mode#complete-a-command-mid-prompt) instead of a single suggestion. The list opens as you type in fullscreen rendering. A plugin skill also matches on its name without the plugin prefixIn the VS Code extension, click the agent count at the bottom of the prompt box to open the [agent map](/docs/en/vs-code#use-the-prompt-box), where you can open a subagent's read-only transcript or stop itIn the VS Code extension, select **Hooks** or **Permissions** in the command menu's Customize section to [add or remove hooks and permission rules](/docs/en/vs-code#use-the-prompt-box) in your user, project, and local settingsClaude can pick a [browser-tab icon](/docs/en/artifacts#create-an-artifact) to match each artifact it publishesIn Claude Code on the web, take back a queued message in a cloud session before Claude reads it: remove it from the queue, or press `Esc` or `Up`, and the text returns to the message box
36Set [`maxEffortLevel`](/docs/en/settings-reference#maxeffortlevel) at the top level or per model under `modelSettings` to cap the effort level on every provider, including Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry; any higher level runs at the capPoint `--plugin-dir` at a folder of plugins to [load each immediate subfolder that has a manifest](/docs/en/plugins/create.md#load-a-directory-or-archive-for-one-session)If WebFetch hasn't finished downloading a page within five minutes, [the fetch fails with a deadline error](/docs/en/tools-reference.md#webfetch-tool-behavior) instead of hanging; set `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` to change the deadline, or to `0` to remove the limitPass `--json` to `claude plugin install`, `uninstall`, `update`, `enable`, or `disable` to print the result as [one JSON object on the last line of stdout](/docs/en/plugins/cli-reference.md#plugin-json-result)When the auto mode classifier blocks an action, the reason Claude receives [usually names the rule that matched](/docs/en/auto-mode-config.md#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry), such as `[Data Exfiltration]`When you type `/` partway through a prompt, you can now pick from [a list of matching commands](/docs/en/interactive-mode.md#complete-a-command-mid-prompt) instead of a single suggestion. The list opens as you type in fullscreen rendering. A plugin skill also matches on its name without the plugin prefixIn the VS Code extension, click the agent count at the bottom of the prompt box to open the [agent map](/docs/en/vs-code.md#use-the-prompt-box), where you can open a subagent's read-only transcript or stop itIn the VS Code extension, select **Hooks** or **Permissions** in the command menu's Customize section to [add or remove hooks and permission rules](/docs/en/vs-code.md#use-the-prompt-box) in your user, project, and local settingsClaude can pick a [browser-tab icon](/docs/en/artifacts.md#create-an-artifact) to match each artifact it publishesIn Claude Code on the web, take back a queued message in a cloud session before Claude reads it: remove it from the queue, or press `Esc` or `Up`, and the text returns to the message box
3737
38[Full changelog for v2.1.263–v2.1.269 →](/docs/en/changelog#2-1-263)
38[Full changelog for v2.1.263–v2.1.269 →](/docs/en/changelog.md#2-1-263)
3939
whats-new/index Changed · +73 / -25 lines
from line 2
22
33> A weekly digest of notable Claude Code features, with code snippets, demos, and context on why they matter.
44
5The weekly dev digest highlights the features most likely to change how you work. Each entry includes runnable code, a short demo, and a link to the full docs. For every bug fix and minor improvement, see the [changelog](/docs/en/changelog).
5The weekly dev digest highlights the features most likely to change how you work. Each entry includes runnable code, a short demo, and a link to the full docs. For every bug fix and minor improvement, see the [changelog](/docs/en/changelog.md).
66
77**Week 37**
88
9September 7–11, 2026
10
911**`claude plugin eval`**: run your plugin against a suite of test cases, score the results, and compare against a no-plugin baseline. `claude plugin eval init` drafts the cases and graders for you.
1012
1113Also this week: pop any **Claude Code Desktop pane** out into its own window and dock it back later; the **`maxEffortLevel`** setting caps the effort level on every provider; and a page that **WebFetch** hasn't finished downloading within five minutes fails instead of hanging.
1214
13[Read the Week 37 digest →](/docs/en/whats-new/2026-w37)
15[Read the Week 37 digest →](/docs/en/whats-new/2026-w37.md)
1416
1517**Week 36**
1618
19August 31 – September 4, 2026
20
1721**Claude Fable 5.1**: available in Claude Code with a 1M-token context window.
1822
1923Also this week: on Pro and Max plans, **computer use in the Desktop app** works in the background on macOS while you keep working; in fullscreen rendering, **`/diff`** opens a live panel beside the conversation that refreshes as Claude edits; and **`/skill-doctor`** shows what each of your skills costs in context and how often it gets used.
2024
21[Read the Week 36 digest →](/docs/en/whats-new/2026-w36)
25[Read the Week 36 digest →](/docs/en/whats-new/2026-w36.md)
2226
2327**Week 35**
2428
29August 24–28, 2026
30
2531**Resume terminal sessions in the Desktop app**: type `/resume` in the Claude Code Desktop prompt box to pick up any session you started from the CLI, with the full conversation and context intact.
2632
2733Also this week: **Claude-drafted feedback** has Claude write up a feedback report when something goes wrong in a session, which you review and send from `/feedback`; **`--restricted`** starts a session without the command-running tools or your user and project settings, for evaluation harnesses on shared machines; and the **`modelPicker`** setting controls which models the `/model` picker lists.
2834
29[Read the Week 35 digest →](/docs/en/whats-new/2026-w35)
35[Read the Week 35 digest →](/docs/en/whats-new/2026-w35.md)
3036
3137**Week 34**
3238
39August 17–21, 2026
40
3341**`/design`**: a research preview that brings Claude Design's artboard workflow into the CLI and Claude Code Desktop, built on artifacts, so Claude drafts editable artboards for your UI and implements the one you pick.
3442
3543Also this week: the built-in **Concise output style** makes Claude lead with the result and skip preamble; any machine running `claude remote-control` shows up as a **device card** on your phone so you can start a session on it from the Code tab; and **`ANTHROPIC_DEFAULT_MODEL`** sets the model new sessions start on.
3644
37[Read the Week 34 digest →](/docs/en/whats-new/2026-w34)
45[Read the Week 34 digest →](/docs/en/whats-new/2026-w34.md)
3846
3947**Week 33**
4048
49August 10–14, 2026
50
4151**Auto-continue after a usage limit on Desktop**: when you hit your session limit in Claude Code Desktop, check **Auto-continue when limits reset** on the limit card and the app retries the interrupted turn once the limit resets.
4252
4353Also this week: **fork mode** is on by default in interactive sessions, so Claude can delegate a side task to a subagent that inherits the full conversation; **GitLab** merge request URLs work with `--worktree` and the `claude agents` view, and marketplaces clone bare `gitlab.com` URLs; and typing **`@`** in the prompt mentions another Claude session by name.
4454
45[Read the Week 33 digest →](/docs/en/whats-new/2026-w33)
55[Read the Week 33 digest →](/docs/en/whats-new/2026-w33.md)
4656
4757**Week 32**
4858
59August 3–7, 2026
60
4961**Cross-session messaging**: on macOS and Linux, your Claude Code sessions can now message each other, so Claude passes a finding or a decision from one session to another instead of you re-explaining it.
5062
5163Also this week: **self-hosted environments** run Claude Code cloud sessions on infrastructure your organization operates, in public beta on Team and Enterprise plans; **auto mode** becomes the default permission mode for new sessions on Pro, Max, and Team plans starting August 14; and the **VS Code extension** gets Focus view.
5264
53[Read the Week 32 digest →](/docs/en/whats-new/2026-w32)
65[Read the Week 32 digest →](/docs/en/whats-new/2026-w32.md)
5466
5567**Week 30**
5668
69July 20–24, 2026
70
5771**Claude Opus 5**: the new default Opus model in Claude Code, with a 1M-token context window and fast mode at \$10/\$50 per MTok.
5872
5973Also this week: **Claude Code Desktop** opens an iOS Simulator pane in public beta so Claude can run your app and tap through it while you watch; the **Claude Security plugin** runs a multi-agent vulnerability scan of your codebase and turns the findings you pick into patches you apply yourself; and **`/code-review`** runs as a background subagent.
6074
61[Read the Week 30 digest →](/docs/en/whats-new/2026-w30)
75[Read the Week 30 digest →](/docs/en/whats-new/2026-w30.md)
6276
6377**Week 29**
6478
79July 13–17, 2026
80
6581**Artifacts call your MCP connectors**: a published artifact can pull live data and take actions through each viewer's own MCP connectors when they open the page, and this week also adds public sharing links, editor roles on Team and Enterprise, and artifacts created from Claude Tag sessions.
6682
6783Also this week: **screen reader mode** replaces the visual terminal interface with plain, linear text for screen readers such as VoiceOver and NVDA; **`/fork`** copies your conversation into a new background session while you keep working; and **auto mode** no longer needs an opt-in variable on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry.
6884
69[Read the Week 29 digest →](/docs/en/whats-new/2026-w29)
85[Read the Week 29 digest →](/docs/en/whats-new/2026-w29.md)
7086
7187**Week 28**
7288
89July 6–10, 2026
90
7391**In-app browser on Desktop**: Claude Code on desktop gets a built-in browser, so Claude can pull up docs, designs, or any other site and interact with pages the same way it does with your local dev server previews.
7492
7593Also this week: **`/doctor`** is a full setup checkup that diagnoses issues and can fix them, with `/checkup` as its alias; **auto mode** blocks transcript tampering and asks before `rm -rf` on unresolved variables; and **agent view rows** show a colored state word and a classifier-written headline.
7694
77[Read the Week 28 digest →](/docs/en/whats-new/2026-w28)
95[Read the Week 28 digest →](/docs/en/whats-new/2026-w28.md)
7896
7997**Week 27**
8098
99June 29 – July 3, 2026
100
81101**Claude Sonnet 5**: the new default model for Pro, Team Standard, and Enterprise subscription seats, with top-tier coding and tool use at Sonnet pricing, a native 1M-token context window, and adaptive thinking on by default.
82102
83103Also this week: **Claude in Chrome** is generally available on all direct Anthropic plans; **subagents run in the background by default** so Claude keeps working while they run; **Claude Desktop on Linux** lands in beta on Ubuntu and Debian; and **`/radio`** tunes into Claude FM lo-fi radio.
84104
85[Read the Week 27 digest →](/docs/en/whats-new/2026-w27)
105[Read the Week 27 digest →](/docs/en/whats-new/2026-w27.md)
86106
87107**Week 26**
88108
109June 22–26, 2026
110
89111**`claude mcp login`**: authenticate a configured MCP server from your shell instead of the interactive `/mcp` menu, and clear its stored credentials later with `claude mcp logout`.
90112
91113Also this week: **shell mode responds to command output** (`! npm test` gets an explanation without a second prompt); **`/rewind`** can resume a conversation from before `/clear` was run; and **background subagents** now surface permission prompts in the main session instead of auto-denying.
92114
93[Read the Week 26 digest →](/docs/en/whats-new/2026-w26)
115[Read the Week 26 digest →](/docs/en/whats-new/2026-w26.md)
94116
95117**Week 25**
96118
119June 15–19, 2026
120
97121**Artifacts**: turn a session's output into a live, shareable page on claude.ai that updates in place as the session works, now in beta on Team and Enterprise plans.
98122
99123Also this week: **deny and ask rules match tool parameters** with `Tool(param:value)`, for example `Agent(model:opus)`; **`/config key=value`** sets any setting from the prompt, in `-p` mode, and from Remote Control; and **auto mode blocks destructive git commands** when you didn't ask to discard local work.
100124
101[Read the Week 25 digest →](/docs/en/whats-new/2026-w25)
125[Read the Week 25 digest →](/docs/en/whats-new/2026-w25.md)
102126
103127**Week 24**
104128
129June 8–12, 2026
130
105131**`/cd`**: move the current session to a new working directory mid-conversation without rebuilding the prompt cache.
106132
107133Also this week: **sub-agents can spawn their own sub-agents** (background chains are capped at five levels deep); **`--safe-mode`** starts Claude Code with all customizations disabled for troubleshooting; and **`fallbackModel`** configures up to three fallback models tried in order.
108134
109[Read the Week 24 digest →](/docs/en/whats-new/2026-w24)
135[Read the Week 24 digest →](/docs/en/whats-new/2026-w24.md)
110136
111137**Week 23**
112138
139June 1–5, 2026
140
113141**Auto mode on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry**: auto mode is now available on third-party providers for Opus 4.7 and Opus 4.8, replacing permission prompts with background safety checks.
114142
115143Also this week: **safer automatic edits** prompt before writing files that can run code in `acceptEdits` mode; **`/plugin list`** prints your installed plugins inline; and **version requirements** let managed deployments require an approved Claude Code version range.
116144
117[Read the Week 23 digest →](/docs/en/whats-new/2026-w23)
145[Read the Week 23 digest →](/docs/en/whats-new/2026-w23.md)
118146
119147**Week 22**
120148
149May 25–29, 2026
150
121151**Claude Opus 4.8**: the new default model for Max, Team Premium, Enterprise pay-as-you-go, and Anthropic API accounts, with high effort by default and `/effort xhigh` for the hardest tasks.
122152
123153Also this week: **dynamic workflows** orchestrate dozens to hundreds of subagents from a script Claude writes; the **security-guidance plugin** reviews Claude's changes for vulnerabilities as it works; and **fast mode** runs on Opus 4.8 at \$10/\$50 per MTok.
124154
125[Read the Week 22 digest →](/docs/en/whats-new/2026-w22)
155[Read the Week 22 digest →](/docs/en/whats-new/2026-w22.md)
126156
127157**Week 21**
128158
159May 18–22, 2026
160
129161**Auto mode on the Pro plan**: auto mode now runs on Pro accounts and supports Sonnet 4.6 alongside Opus, replacing permission prompts with background safety checks.
130162
131163Also this week: **`/usage`** breaks down what drives your plan limits by skill, subagent, plugin, and MCP server; the new **`/code-review`** command reports correctness bugs; and **background sessions** appear in `/resume` and stay alive when pinned.
132164
133[Read the Week 21 digest →](/docs/en/whats-new/2026-w21)
165[Read the Week 21 digest →](/docs/en/whats-new/2026-w21.md)
134166
135167**Week 20**
136168
169May 11–15, 2026
170
137171**Agent view**: `claude agents` opens one screen for every Claude Code session, showing what's running, what's blocked on you, and what's done.
138172
139173Also this week: **`/goal`** keeps Claude working across turns until a completion condition holds; **fast mode** now runs on Opus 4.7 by default; and the **Rewind menu** can compress earlier context with "Summarize up to here".
140174
141[Read the Week 20 digest →](/docs/en/whats-new/2026-w20)
175[Read the Week 20 digest →](/docs/en/whats-new/2026-w20.md)
142176
143177**Week 19**
144178
179May 4–8, 2026
180
145181**Plugins load from `.zip` archives and URLs**: `--plugin-dir` now accepts `.zip` files, and `--plugin-url` fetches a plugin archive for the current session.
146182
147183Also this week: **`worktree.baseRef`** chooses whether new worktrees branch from the remote default or local `HEAD`; **auto mode hard deny rules** block actions unconditionally regardless of allow exceptions; and **hooks see the active effort level** via `effort.level` and `$CLAUDE_EFFORT`.
148184
149[Read the Week 19 digest →](/docs/en/whats-new/2026-w19)
185[Read the Week 19 digest →](/docs/en/whats-new/2026-w19.md)
150186
151187**Week 18**
152188
189April 27 – May 1, 2026
190
153191**Windows without Git Bash**: Git for Windows is no longer required, and Claude Code uses PowerShell as the shell tool when Bash is absent.
154192
155193Also this week: **`claude ultrareview`** brings cloud code review to CI and scripts; **`claude project purge`** cleans up local state for a project; and pasting a **PR URL into `/resume`** finds the session that created it.
156194
157[Read the Week 18 digest →](/docs/en/whats-new/2026-w18)
195[Read the Week 18 digest →](/docs/en/whats-new/2026-w18.md)
158196
159197**Week 17**
160198
199April 20–24, 2026
200
161201**`/ultrareview`** opens as a public research preview: a fleet of bug-hunting agents runs in the cloud and findings land back in your CLI or Desktop automatically.
162202
163203Also this week: **session recap** shows you what happened while a terminal was unfocused; **custom themes** let you build and ship color palettes from `/theme` or a plugin; and **Claude Code on the web** gets a redesign with a new sessions sidebar and drag-and-drop layout.
164204
165[Read the Week 17 digest →](/docs/en/whats-new/2026-w17)
205[Read the Week 17 digest →](/docs/en/whats-new/2026-w17.md)
166206
167207**Week 16**
168208
209April 13–17, 2026
210
169211**Claude Opus 4.7** lands as the new default on Max and Team Premium, with a new `xhigh` effort level that's the recommended setting for most coding work and an interactive `/effort` slider to dial it in.
170212
171213Also this week: **Routines** on Claude Code on the web fire templated cloud agents from a schedule, GitHub event, or API call; **mobile push notifications** ping your phone when a long task finishes or Claude needs you; `/usage` shows what's driving your limits; and the CLI moves to native binaries.
172214
173[Read the Week 16 digest →](/docs/en/whats-new/2026-w16)
215[Read the Week 16 digest →](/docs/en/whats-new/2026-w16.md)
174216
175217**Week 15**
176218
219April 6–10, 2026
220
177221**Ultraplan** enters early preview: draft a plan in the cloud from your CLI, review and comment on it in a web editor, then run it remotely or pull it back local. The first run now auto-creates a cloud environment for you.
178222
179223Also this week: the **Monitor** tool streams background events into the conversation so Claude can tail logs and react live, `/loop` self-paces when you omit the interval, `/team-onboarding` packages your setup into a replayable guide, and `/autofix-pr` turns on PR auto-fix from your terminal.
180224
181[Read the Week 15 digest →](/docs/en/whats-new/2026-w15)
225[Read the Week 15 digest →](/docs/en/whats-new/2026-w15.md)
182226
183227**Week 14**
184228
229March 30 – April 3, 2026
230
185231**Computer use** comes to the CLI in research preview: Claude can open native apps, click through UI, and verify changes from your terminal. Best for closing the loop on things only a GUI can verify.
186232
187233Also this week: `/powerup` interactive lessons, flicker-free alt-screen rendering, a per-tool MCP result-size override up to 500K, and plugin executables on the Bash tool's `PATH`.
188234
189[Read the Week 14 digest →](/docs/en/whats-new/2026-w14)
235[Read the Week 14 digest →](/docs/en/whats-new/2026-w14.md)
190236
191237**Week 13**
192238
239March 23–27, 2026
240
193241**Auto mode** lands in research preview: a classifier handles your permission prompts so safe actions run without interruption and risky ones get blocked. The middle ground between approving everything and `--dangerously-skip-permissions`.
194242
195243Also this week: computer use in the Desktop app, PR auto-fix on Web, transcript search with `/`, a native PowerShell tool for Windows, and conditional `if` hooks.
196244
197[Read the Week 13 digest →](/docs/en/whats-new/2026-w13)
245[Read the Week 13 digest →](/docs/en/whats-new/2026-w13.md)
198246
workflows Changed · +40 / -40 lines
from line 6
66>
77> Dynamic workflows are available on all paid plans, with Anthropic API access, and on Amazon Bedrock, Google Cloud's Agent Platform, and Microsoft Foundry. On Pro, turn them on from the Dynamic workflows row in `/config`.
88
9A dynamic workflow is a JavaScript script that orchestrates many [subagents](/docs/en/sub-agents) at once. Claude writes the script for the task you describe, and a runtime executes it in the background while your session stays responsive.
9A dynamic workflow is a JavaScript script that orchestrates many [subagents](/docs/en/sub-agents.md) at once. Claude writes the script for the task you describe, and a runtime executes it in the background while your session stays responsive.
1010
1111Reach for a workflow when a task needs more agents than one conversation can coordinate, or when you want the orchestration codified as a script you can read and rerun. Examples include a codebase-wide bug sweep, a 500-file migration, a research question that needs sources cross-checked against each other, and a hard plan worth drafting from several independent angles before you commit to one.
1212
1313## When to use a workflow
1414
15[Subagents](/docs/en/sub-agents), [skills](/docs/en/skills), [agent teams](/docs/en/agent-teams), and workflows can all run a multi-step task. The difference is who holds the plan:
15[Subagents](/docs/en/sub-agents.md), [skills](/docs/en/skills.md), [agent teams](/docs/en/agent-teams.md), and workflows can all run a multi-step task. The difference is who holds the plan:
1616
1717| | Subagents | Skills | Agent teams | Workflows |
1818| :- | :- | :- | :- | :- |
from line 69
6969
7070| Command | What it does |
7171| :- | :- |
72| `/deep-research <question>` | Fans out web searches on a question across several angles, fetches and cross-checks the sources it finds, votes on each claim, and returns a cited report with claims that didn't survive cross-checking filtered out. Requires the [WebSearch tool](/docs/en/tools-reference#websearch-tool-behavior) to be available |
72| `/deep-research <question>` | Fans out web searches on a question across several angles, fetches and cross-checks the sources it finds, votes on each claim, and returns a cited report with claims that didn't survive cross-checking filtered out. Requires the [WebSearch tool](/docs/en/tools-reference.md#websearch-tool-behavior) to be available |
7373
7474`/deep-research` runs only when you invoke it.
7575
from line 114
114114ultracode: audit every API endpoint under src/routes/ for missing auth checks
115115```
116116
117Claude Code highlights the keyword in your input and Claude writes a workflow script for the task instead of working through it turn by turn. The keyword only chooses how Claude structures the work: the agents' tool calls receive the same permission checks and [sandboxing](/docs/en/sandboxing) as any other tool call in the session.
117Claude Code highlights the keyword in your input and Claude writes a workflow script for the task instead of working through it turn by turn. The keyword only chooses how Claude structures the work: the agents' tool calls receive the same permission checks and [sandboxing](/docs/en/sandboxing.md) as any other tool call in the session.
118118
119119If the run does what you wanted, you can [save it as a command](#save-the-workflow-for-reuse) afterward. If you already have an orchestrator built another way, such as a folder of subagent prompts or a skill that fans work out, you can point Claude at it and ask for a workflow that does the same thing.
120120
from line 124
124124
125125#### Where the keyword works
126126
127The keyword is an opt-in only in a prompt you type yourself: at the interactive prompt, in an IDE extension panel, in a [Remote Control](/docs/en/remote-control) client, or in an Agent SDK application that stamps your keyboard input's [`origin`](/docs/en/agent-sdk/typescript#sdkmessageorigin) as `{ kind: "human" }`. It doesn't start a workflow when it reaches the session another way:
127The keyword is an opt-in only in a prompt you type yourself: at the interactive prompt, in an IDE extension panel, in a [Remote Control](/docs/en/remote-control.md) client, or in an Agent SDK application that stamps your keyboard input's [`origin`](/docs/en/agent-sdk/typescript#sdkmessageorigin) as `{ kind: "human" }`. It doesn't start a workflow when it reaches the session another way:
128128
129129* a prompt passed with `-p`
130130* a prompt an Agent SDK application sends without stamping it as human input
from line 133
133133
134134### Let Claude decide with ultracode
135135
136Ultracode is a Claude Code setting that turns on automatic workflow orchestration for the session, at whichever [effort level](/docs/en/model-config#adjust-effort-level) the session runs at. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. Turn it on at the Claude Code prompt:
136Ultracode is a Claude Code setting that turns on automatic workflow orchestration for the session, at whichever [effort level](/docs/en/model-config.md#adjust-effort-level) the session runs at. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. Turn it on at the Claude Code prompt:
137137
138138```text wrap theme={null}
139139/effort ultracode
from line 141
141141
142142To start a session with ultracode already on, launch with `claude --effort ultracode`, which also sets the effort level to `xhigh`.
143143
144To turn it on from the `/effort` slider, press `Tab` to flip the **Ultracode** toggle, then `Enter` to apply it. [Adjust effort level](/docs/en/model-config#adjust-effort-level) lists the routes that turn ultracode on.
144To turn it on from the `/effort` slider, press `Tab` to flip the **Ultracode** toggle, then `Enter` to apply it. [Adjust effort level](/docs/en/model-config.md#adjust-effort-level) lists the routes that turn ultracode on.
145145
146146With ultracode on, Claude decides when a task warrants a workflow. A single request can turn into several workflows in a row: one to understand the code, one to make the change, and one to verify it. This applies to every task in the session, so each request uses more tokens and takes longer than the same request without a workflow. On a subscription plan those tokens draw on your usage limits, so a session with ultracode on reaches a session or weekly limit sooner than the same work with it off.
147147
from line 148
148148Turning ultracode on already opts you in to large runs, so these checks don't apply while it's on:
149149
150150* The [`Large workflow` warning](#cost) doesn't appear on a workflow run
151* The session's [concurrent subagent limit](/docs/en/sub-agents#concurrent-subagent-limit) isn't enforced for the subagents Claude spawns with the Agent tool
151* The session's [concurrent subagent limit](/docs/en/sub-agents.md#concurrent-subagent-limit) isn't enforced for the subagents Claude spawns with the Agent tool
152152* In auto permission mode, you aren't asked to [approve the first workflow launch](#approve-the-plan-before-it-runs)
153153
154`/effort ultracode` lasts for the current session; to have every session start with it, set the [`ultracode`](/docs/en/settings-reference#ultracode) setting. Turn it off with `/effort ultracode off` when you return to routine work. The `/effort` slider offers the toggle only [when ultracode is available](/docs/en/model-config#when-ultracode-is-available).
154`/effort ultracode` lasts for the current session; to have every session start with it, set the [`ultracode`](/docs/en/settings-reference#ultracode) setting. Turn it off with `/effort ultracode off` when you return to routine work. The `/effort` slider offers the toggle only [when ultracode is available](/docs/en/model-config.md#when-ultracode-is-available).
155155
156156### Approve the plan before it runs
157157
from line 162
162162* **View raw script**: read the script before deciding
163163* **No**: cancel
164164
165`Ctrl+G` opens the script in your editor. With **Yes, run it** or **No** selected, press `Tab` to [add a comment](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt) to your answer.
165`Ctrl+G` opens the script in your editor. With **Yes, run it** or **No** selected, press `Tab` to [add a comment](/docs/en/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) to your answer.
166166
167Whether you see this prompt depends on your [permission mode](/docs/en/permission-modes):
167Whether you see this prompt depends on your [permission mode](/docs/en/permission-modes.md):
168168
169169| Permission mode | When you're prompted |
170170| :- | :- |
from line 173
173173| Bypass permissions | Claude Code doesn't prompt you. The run starts immediately |
174174| `claude -p`, Agent SDK | Claude Code doesn't prompt you |
175175
176In `claude -p` and the Agent SDK, Claude Code never shows this prompt. It runs the Workflow tool call through the same [permission evaluation](/docs/en/agent-sdk/permissions#how-permissions-are-evaluated) as the rest of the session, so deny rules, ask rules, and `dontAsk` mode apply to the launch as they apply to every tool call. To let the workflow start in these runs, use one of these:
176In `claude -p` and the Agent SDK, Claude Code never shows this prompt. It runs the Workflow tool call through the same [permission evaluation](/docs/en/agent-sdk/permissions.md#how-permissions-are-evaluated) as the rest of the session, so deny rules, ask rules, and `dontAsk` mode apply to the launch as they apply to every tool call. To let the workflow start in these runs, use one of these:
177177
178178* **Permission rule**: add `Workflow` to your allow rules to approve every workflow, or `Workflow(<name>)` to approve one saved workflow by name.
179* **Auto permission mode**: run in [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), where the classifier reviews the call and can approve it.
179* **Auto permission mode**: run in [auto mode](/docs/en/permission-modes.md#eliminate-prompts-with-auto-mode), where the classifier reviews the call and can approve it.
180180* **Bypass permissions mode**: run in bypass permissions mode.
181* **A hook**: return `"allow"` for the call from a [`PreToolUse`](/docs/en/hooks#pretooluse) hook. In [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode), the workflow doesn't start on the hook's approval alone, so use a permission rule or your host's approval there instead.
181* **A hook**: return `"allow"` for the call from a [`PreToolUse`](/docs/en/hooks#pretooluse) hook. In [plan mode](/docs/en/permission-modes.md#analyze-before-you-edit-with-plan-mode), the workflow doesn't start on the hook's approval alone, so use a permission rule or your host's approval there instead.
182182* **Your host**: a [`--permission-prompt-tool`](/docs/en/cli-reference#cli-flags) or, with the Agent SDK, a [`canUseTool`](/docs/en/agent-sdk/permissions) callback approves it.
183183
184184In the Desktop app, an approval card shows the workflow name, the phase list, and a token-usage caution, with **Once**, **Always**, and **Deny** actions. The progress view appears in the Background tasks side pane.
185185
186The subagents the workflow spawns use your [permission rules](/docs/en/settings-reference#permission-settings), and Claude Code picks their permission mode by the rules under [which permission mode a subagent runs in](/docs/en/sub-agents#permission-modes). To avoid prompts on a long run, add the tools the agents need to your allow rules before starting.
186The subagents the workflow spawns use your [permission rules](/docs/en/settings-reference.md#permission-settings), and Claude Code picks their permission mode by the rules under [which permission mode a subagent runs in](/docs/en/sub-agents.md#permission-modes). To avoid prompts on a long run, add the tools the agents need to your allow rules before starting.
187187
188188### Save the workflow for reuse
189189
from line 211
211211
212212### Distribute a workflow in a plugin
213213
214To share a workflow across teams or repositories, include it in a [plugin](/docs/en/plugins/overview). Place the script in a `workflows/` directory at the plugin root, or point to a different location with the [`workflows` manifest field](/docs/en/plugins/manifest-reference#fields).
214To share a workflow across teams or repositories, include it in a [plugin](/docs/en/plugins/overview.md). Place the script in a `workflows/` directory at the plugin root, or point to a different location with the [`workflows` manifest field](/docs/en/plugins/manifest-reference#fields).
215215
216216Plugin workflows are namespaced by the plugin name. A plugin called `acme-tools` containing a script whose `meta.name` is `release-audit` runs as `/acme-tools:release-audit`.
217217
from line 304
304304
305305An `agent()` call resolves to `null` if you stop it mid-run or it hits an unrecoverable API error. `pipeline()` keeps each `null` in the results array, which is why the example ends with `.filter(Boolean)` to drop those entries, including the slot of [an agent that stalled on every attempt](#when-an-agent-stalls-and-restarts).
306306
307In [auto mode](/docs/en/permission-modes#eliminate-prompts-with-auto-mode), the prompt your script passes to `agent()` doesn't count as a request from you when the classifier reviews that subagent's actions, because Claude Code marks it as text the script computed.
307In [auto mode](/docs/en/permission-modes.md#eliminate-prompts-with-auto-mode), the prompt your script passes to `agent()` doesn't count as a request from you when the classifier reviews that subagent's actions, because Claude Code marks it as text the script computed.
308308
309309If you pass a `schema` on an `agent()` call, that subagent returns JSON matching the shape instead of prose. Claude Code checks the schema before starting the subagent: when it can prove the schema contradicts itself, the call fails with an error naming the contradiction, and the subagent never starts. One contradiction it can prove is a `required` key that `additionalProperties: false` rules out.
310310
from line 312
312312
313313### Edit a saved script
314314
315To change a [workflow you saved](#save-the-workflow-for-reuse), edit its `.js` file or ask Claude to make the change. Before you edit or ask, run the `/workflow-authoring` [bundled skill](/docs/en/skills#bundled-skills) to load the script-writing reference Claude works from. The skill requires Claude Code v2.1.248 or later.
315To change a [workflow you saved](#save-the-workflow-for-reuse), edit its `.js` file or ask Claude to make the change. Before you edit or ask, run the `/workflow-authoring` [bundled skill](/docs/en/skills.md#bundled-skills) to load the script-writing reference Claude works from. The skill requires Claude Code v2.1.248 or later.
316316
317317To run the edited version in the current session, run [`/reload-skills`](/docs/en/commands#all-commands) to re-read the workflow directories, then run `/<name>` again.
318318
from line 323
323323* **`phases`**: if you list them in `meta`, give each entry exactly the title you pass to `phase()`. A `phase()` title with no entry gets a progress group of its own.
324324* **Timestamps and randomness**: Claude Code makes `Date.now()`, `Math.random()`, and a no-argument `new Date()` throw inside the script, so that a [relaunched run](#resume-after-a-pause) repeats the same `agent()` calls. Pass a timestamp in through `args` instead.
325325
326You can also edit [the script of a single run](#how-a-workflow-runs) rather than the saved copy. [Resume after a pause](#resume-after-a-pause) covers which agents run again when you relaunch an edited script. For the Workflow tool's inputs, see its entry in the [Agent SDK reference](/docs/en/agent-sdk/typescript#workflow).
326You can also edit [the script of a single run](#how-a-workflow-runs) rather than the saved copy. [Resume after a pause](#resume-after-a-pause) covers which agents run again when you relaunch an edited script. For the Workflow tool's inputs, see its entry in the [Agent SDK reference](/docs/en/agent-sdk/typescript.md#workflow).
327327
328328## How a workflow runs
329329
from line 331
331331
332332Every run writes its script to a file under your session's directory in `~/.claude/projects/`. Claude receives the path when the run starts, so you can ask for it. You can open that file to read the orchestration Claude wrote, diff it against a previous run's script, or edit it and ask Claude to relaunch from the edited version.
333333
334Claude can start a workflow only from a script file the session is already allowed to read. To run a script kept outside your working directory, add its directory with [`/add-dir`](/docs/en/permissions#working-directories) or a [Read allow rule](/docs/en/permissions#read-and-edit) first.
334Claude can start a workflow only from a script file the session is already allowed to read. To run a script kept outside your working directory, add its directory with [`/add-dir`](/docs/en/permissions#working-directories) or a [Read allow rule](/docs/en/permissions.md#read-and-edit) first.
335335
336336The runtime tracks each agent's result as the run progresses, which is what makes a run [resumable](#resume-after-a-pause) within the same session.
337337
338338### Prompt caching in a fan-out
339339
340Agents in the same run can read each other's [prompt cache](/docs/en/prompt-caching#subagents-and-the-cache). Two agents that run with the same model, effort level, agent type, tools, output schema, and working directory build the same tools-and-system-prompt prefix, so an agent that starts after a matching sibling's response has begun reads that sibling's cache on its first request.
340Agents in the same run can read each other's [prompt cache](/docs/en/prompt-caching.md#subagents-and-the-cache). Two agents that run with the same model, effort level, agent type, tools, output schema, and working directory build the same tools-and-system-prompt prefix, so an agent that starts after a matching sibling's response has begun reads that sibling's cache on its first request.
341341
342A workflow agent's requests fall outside the main conversation's [cache TTL bucket](/docs/en/prompt-caching#which-ttl-each-request-gets), so its cache holds for five minutes by default, including on a Claude subscription. To keep it for an hour, set [`subagentPromptCacheTtl`](/docs/en/settings-reference#subagentpromptcachettl) to `1h`. The API bills 1-hour cache writes at a higher rate.
342A workflow agent's requests fall outside the main conversation's [cache TTL bucket](/docs/en/prompt-caching.md#which-ttl-each-request-gets), so its cache holds for five minutes by default, including on a Claude subscription. To keep it for an hour, set [`subagentPromptCacheTtl`](/docs/en/settings-reference#subagentpromptcachettl) to `1h`. The API bills 1-hour cache writes at a higher rate.
343343
344344When a fan-out starts several matching agents at once, Claude Code holds all but the first until the first agent's response begins, then releases the held agents together so their first requests read the shared prefix instead of each processing it uncached. Claude Code caps the hold at [`CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS`](/docs/en/env-vars) milliseconds, `5000` by default. Set it to `0` to disable the hold.
345345
from line 385
385385
386386You can resume a run within the same Claude Code session. What happens to a running workflow when you leave the session depends on how you leave:
387387
388* If you [background the session](/docs/en/agent-view#what-carries-over-when-you-background), Claude Code replays the run the same way in the background session and continues it.
389* If you exit Claude Code while a workflow is running and [agent view is on](/docs/en/agent-view#from-inside-a-session), the exit dialog offers `Move to background and exit`, which carries the run over the same way. If you choose `Exit and stop tasks` instead, or the option isn't offered, the run stops with the session. Claude Code keeps the run's saved results under that session's directory in `~/.claude/projects/`, so a session you resume with `claude --resume` can replay them when you ask Claude to relaunch the workflow. In a session you start fresh, Claude has no earlier run to relaunch and starts the workflow over as a new run.
388* If you [background the session](/docs/en/agent-view.md#what-carries-over-when-you-background), Claude Code replays the run the same way in the background session and continues it.
389* If you exit Claude Code while a workflow is running and [agent view is on](/docs/en/agent-view.md#from-inside-a-session), the exit dialog offers `Move to background and exit`, which carries the run over the same way. If you choose `Exit and stop tasks` instead, or the option isn't offered, the run stops with the session. Claude Code keeps the run's saved results under that session's directory in `~/.claude/projects/`, so a session you resume with `claude --resume` can replay them when you ask Claude to relaunch the workflow. In a session you start fresh, Claude has no earlier run to relaunch and starts the workflow over as a new run.
390390
391In a [cloud session](/docs/en/claude-code-on-the-web), Claude Code also saves the run's results with the session's conversation history, which survives when the session's VM is reclaimed. When you [reopen such a session](/docs/en/claude-code-on-the-web#environment-expired) and ask Claude to relaunch the workflow, completed agents still return their saved results.
391In a [cloud session](/docs/en/claude-code-on-the-web.md), Claude Code also saves the run's results with the session's conversation history, which survives when the session's VM is reclaimed. When you [reopen such a session](/docs/en/claude-code-on-the-web.md#environment-expired) and ask Claude to relaunch the workflow, completed agents still return their saved results.
392392
393393In local and cloud sessions alike, when Claude relaunches an earlier run and Claude Code can't find that run's saved results at all, the relaunch fails with a `nothing to resume` error instead of starting the run over on its own. Ask Claude to start the workflow over as a new run.
394394
395395### When a run hits your usage limit
396396
397When an agent hits your claude.ai [usage limit](/docs/en/interactive-mode#wait-for-a-usage-limit-to-reset), the run pauses rather than failing that agent: the agents that hit the limit wait for the reset, and no new agents start. Shortly after the limit resets, the waiting agents run again and the run continues on its own. Requires Claude Code v2.1.271 or later; on earlier versions, the affected agents fail.
397When an agent hits your claude.ai [usage limit](/docs/en/interactive-mode.md#wait-for-a-usage-limit-to-reset), the run pauses rather than failing that agent: the agents that hit the limit wait for the reset, and no new agents start. Shortly after the limit resets, the waiting agents run again and the run continues on its own. Requires Claude Code v2.1.271 or later; on earlier versions, the affected agents fail.
398398
399399While the run waits, its progress line in the task panel and the [`/workflows`](#watch-the-run) header show when the limit resets.
400400
401401The run pauses only when all of these hold; when one doesn't, the affected agent fails instead:
402402
403* The session is interactive and signed in with a claude.ai subscription. A run doesn't pause in [non-interactive mode](/docs/en/headless) with `claude -p` or the [Agent SDK](/docs/en/agent-sdk/overview), in a [background session](/docs/en/agent-view), or in a [Remote Control](/docs/en/remote-control) or [agent team](/docs/en/agent-teams) teammate session.
404* [`autoContinueAtUsageLimit`](/docs/en/settings-reference#autocontinueatusagelimit) is on, the same setting that lets the session itself [wait for a usage limit to reset](/docs/en/interactive-mode#wait-for-a-usage-limit-to-reset). If you turn it off during a wait, the wait ends and the waiting agents fail.
403* The session is interactive and signed in with a claude.ai subscription. A run doesn't pause in [non-interactive mode](/docs/en/headless.md) with `claude -p` or the [Agent SDK](/docs/en/agent-sdk/overview.md), in a [background session](/docs/en/agent-view.md), or in a [Remote Control](/docs/en/remote-control.md) or [agent team](/docs/en/agent-teams.md) teammate session.
404* [`autoContinueAtUsageLimit`](/docs/en/settings-reference#autocontinueatusagelimit) is on, the same setting that lets the session itself [wait for a usage limit to reset](/docs/en/interactive-mode.md#wait-for-a-usage-limit-to-reset). If you turn it off during a wait, the wait ends and the waiting agents fail.
405405* The limit resets within 24 hours. A weekly limit can reset further out.
406406* The run hasn't already waited twice. When it hits the limit a third time, the agent fails.
407407
from line 414
414414An agent restarts at most five times, counting any restart you ask for with `r`. If the sixth attempt stalls as well, the `agent()` call fails, and the start of the error says why:
415415
416416* `agent stalled on all 6 attempts`: every attempt went the whole window without output. If the agent's work keeps it silent that long, lengthen the window
417* `agent lost its reply on all 6 attempts`: every attempt's response stream went silent and Claude Code gave up waiting on it. Lengthening the stall window doesn't help, since a [streaming idle watchdog](/docs/en/network-config#streaming-idle-watchdogs) ended the response first and `CLAUDE_STREAM_IDLE_TIMEOUT_MS` sets that watchdog's timeout
417* `agent lost its reply on all 6 attempts`: every attempt's response stream went silent and Claude Code gave up waiting on it. Lengthening the stall window doesn't help, since a [streaming idle watchdog](/docs/en/network-config.md#streaming-idle-watchdogs) ended the response first and `CLAUDE_STREAM_IDLE_TIMEOUT_MS` sets that watchdog's timeout
418418* `agent abandoned after 6 attempts`: the attempts ended in different ways, which the error lists in order
419419
420420To give an agent more time to produce output before the window ends:
from line 442
442442* If you choose a [size guideline](#set-a-size-guideline) yourself, its agent count replaces the 25-agent threshold. The built-in default guideline leaves the threshold at 25.
443443* Sessions with [ultracode](#let-claude-decide-with-ultracode) on don't show the warning, because turning ultracode on already opts you in to large runs.
444444
445Claude Code picks each workflow agent's model in the same [order it uses for subagents](/docs/en/sub-agents#choose-a-model). A model the script names for a stage counts as the per-invocation model in that order. When nothing else assigns one, the agent runs on your session's model.
445Claude Code picks each workflow agent's model in the same [order it uses for subagents](/docs/en/sub-agents.md#choose-a-model). A model the script names for a stage counts as the per-invocation model in that order. When nothing else assigns one, the agent runs on your session's model.
446446
447447To control the model cost:
448448
from line 449
449449* Check `/model` before a large run if you usually switch to a smaller model for routine work
450450* Ask Claude to use a smaller model for stages that don't need the strongest one when you describe the task
451451
452When your organization's [`availableModels` allowlist](/docs/en/model-config#restrict-model-selection) blocks a model the script requests for an agent, that agent runs on a substituted model instead, following the same [substitution rules as subagents](/docs/en/sub-agents#choose-a-model).
452When your organization's [`availableModels` allowlist](/docs/en/model-config#restrict-model-selection) blocks a model the script requests for an agent, that agent runs on a substituted model instead, following the same [substitution rules as subagents](/docs/en/sub-agents.md#choose-a-model).
453453
454454### Set a size guideline
455455
from line 472
472472
473473### Turn workflows off
474474
475Workflows are available in the CLI, the Desktop app, the IDE extensions, [non-interactive mode](/docs/en/headless) with `claude -p`, and the [Agent SDK](/docs/en/agent-sdk/overview). The same disable settings apply on every surface.
475Workflows are available in the CLI, the Desktop app, the IDE extensions, [non-interactive mode](/docs/en/headless.md) with `claude -p`, and the [Agent SDK](/docs/en/agent-sdk/overview.md). The same disable settings apply on every surface.
476476
477477To turn workflows off for yourself:
478478
from line 480
480480* Set `"disableWorkflows": true` in `~/.claude/settings.json`. Persists across sessions.
481481* Set `CLAUDE_CODE_DISABLE_WORKFLOWS=1`. Read at startup, so it applies wherever you set it.
482482
483To turn workflows off for your whole organization, set `"disableWorkflows": true` in [managed settings](/docs/en/server-managed-settings), or use the toggle on the [Claude Code admin settings](https://claude.ai/admin-settings/claude-code) page.
483To turn workflows off for your whole organization, set `"disableWorkflows": true` in [managed settings](/docs/en/server-managed-settings.md), or use the toggle on the [Claude Code admin settings](https://claude.ai/admin-settings/claude-code) page.
484484
485485When workflows are disabled:
486486
from line 489
489489
490490A run that was already in progress keeps going.
491491
492Turning workflows off also makes [ultracode](#let-claude-decide-with-ultracode) unavailable. No managed setting rules out ultracode alone: wherever it's [available](/docs/en/model-config#when-ultracode-is-available), users can turn it on with `/effort ultracode`. An [effort cap](/docs/en/model-config#organization-effort-limits) lowers the effort level a session with ultracode on runs at, but doesn't turn ultracode off.
492Turning workflows off also makes [ultracode](#let-claude-decide-with-ultracode) unavailable. No managed setting rules out ultracode alone: wherever it's [available](/docs/en/model-config.md#when-ultracode-is-available), users can turn it on with `/effort ultracode`. An [effort cap](/docs/en/model-config.md#organization-effort-limits) lowers the effort level a session with ultracode on runs at, but doesn't turn ultracode off.
493493
494494## Related resources
495495
496* [Run agents in parallel](/docs/en/agents): compare subagents, agent view, agent teams, and workflows
497* [Create custom subagents](/docs/en/sub-agents): the worker primitive workflows orchestrate
498* [Manage costs](/docs/en/costs): how multi-agent runs count toward usage limits
496* [Run agents in parallel](/docs/en/agents.md): compare subagents, agent view, agent teams, and workflows
497* [Create custom subagents](/docs/en/sub-agents.md): the worker primitive workflows orchestrate
498* [Manage costs](/docs/en/costs.md): how multi-agent runs count toward usage limits
499499
worktrees Changed · +37 / -37 lines
from line 9
99> If you use another version control system or the desktop app, follow the instructions for your setup:
1010>
1111> * **Other version control systems**: worktrees require a git repository; [configure hooks to replace the git logic](#non-git-version-control)
12> * **Desktop app**: see [Run a session in its own worktree](/docs/en/desktop#run-a-session-in-its-own-worktree)
12> * **Desktop app**: see [Run a session in its own worktree](/docs/en/desktop.md#run-a-session-in-its-own-worktree)
1313
14Worktrees are one of several ways to run Claude in parallel. They isolate file edits. [Subagents](/docs/en/sub-agents) split work up inside one session, and [cross-session messaging](/docs/en/cross-session-messaging) lets Claude pass findings between the sessions in your worktrees. See [Run agents in parallel](/docs/en/agents) to compare the approaches, or skip ahead to [Isolate subagents with worktrees](#isolate-subagents-with-worktrees) to use worktrees and subagents together.
14Worktrees are one of several ways to run Claude in parallel. They isolate file edits. [Subagents](/docs/en/sub-agents.md) split work up inside one session, and [cross-session messaging](/docs/en/cross-session-messaging.md) lets Claude pass findings between the sessions in your worktrees. See [Run agents in parallel](/docs/en/agents.md) to compare the approaches, or skip ahead to [Isolate subagents with worktrees](#isolate-subagents-with-worktrees) to use worktrees and subagents together.
1515
1616Most sessions need only the first two sections: [start Claude in a worktree](#start-claude-in-a-worktree), then [clean up when you exit](#clean-up-worktrees). Return to the rest of the page when you need to [resume a session](#resume-a-worktree-session), [change how worktrees are created](#customize-worktree-creation), or [debug a failure](#troubleshooting).
1717
from line 25
2525
2626Run the command again with a different name in another terminal to start a second isolated session. If you omit the name, Claude generates one such as `bright-running-fox`.
2727
28Interactive runs require [workspace trust](/docs/en/security): if you haven't run Claude in the directory before, run `claude` once there to accept the trust dialog, or `--worktree` exits with an error prompting you to. Non-interactive runs with `-p` skip the trust check, so `claude -p --worktree` proceeds without it.
28Interactive runs require [workspace trust](/docs/en/security.md): if you haven't run Claude in the directory before, run `claude` once there to accept the trust dialog, or `--worktree` exits with an error prompting you to. Non-interactive runs with `-p` skip the trust check, so `claude -p --worktree` proceeds without it.
2929
3030> [!TIP]
3131>
from line 39
3939
4040You can also ask Claude to "work in a worktree" during a session, and it creates one with the [`EnterWorktree`](/docs/en/tools-reference) tool. Once in a worktree, Claude can switch directly to another one under `.claude/worktrees/` by calling `EnterWorktree` with the target path; the previous worktree stays on disk untouched.
4141
42When Claude enters a path outside the repository's `.claude/worktrees/` directory, Claude Code asks for your approval first, because the move takes the session's working directory, write access, and project configuration such as `CLAUDE.md` and settings to that location. An `EnterWorktree` [permission rule](/docs/en/permissions) or choosing "don't ask again" doesn't suppress this prompt; only `bypassPermissions` mode skips it. Before v2.1.206, Claude could enter any existing worktree path without asking.
42When Claude enters a path outside the repository's `.claude/worktrees/` directory, Claude Code asks for your approval first, because the move takes the session's working directory, write access, and project configuration such as `CLAUDE.md` and settings to that location. An `EnterWorktree` [permission rule](/docs/en/permissions.md) or choosing "don't ask again" doesn't suppress this prompt; only `bypassPermissions` mode skips it. Before v2.1.206, Claude could enter any existing worktree path without asking.
4343
4444> [!NOTE]
4545>
46> **Hook paths don't follow the worktree.** After Claude enters a worktree, Claude Code keeps `${CLAUDE_PROJECT_DIR}` in your [hooks](/docs/en/hooks#reference-scripts-by-path) where it was and passes the worktree path to them a different way:
46> **Hook paths don't follow the worktree.** After Claude enters a worktree, Claude Code keeps `${CLAUDE_PROJECT_DIR}` in your [hooks](/docs/en/hooks.md#reference-scripts-by-path) where it was and passes the worktree path to them a different way:
4747>
4848> * **`${CLAUDE_PROJECT_DIR}` stays put**: it still points at the project root where the session started, so a hook command such as `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` still runs the script in the main checkout.
49> * **`cwd` follows Claude**: the `cwd` field in the hook's [input JSON](/docs/en/hooks#common-input-fields) is the worktree root, and it moves again when Claude runs `cd`. Read it when a hook needs the worktree path.
49> * **`cwd` follows Claude**: the `cwd` field in the hook's [input JSON](/docs/en/hooks.md#common-input-fields) is the worktree root, and it moves again when Claude runs `cd`. Read it when a hook needs the worktree path.
5050
5151## Clean up worktrees
5252
53When you exit an interactive worktree session, Claude checks the worktree for work that removal would delete: changed or untracked files, uncommitted work inside checked-out submodules, and new commits. These rules apply to worktrees Claude created with git. For a worktree your [WorktreeCreate hook](/docs/en/hooks#worktreecreate) created, see [WorktreeRemove](/docs/en/hooks#worktreeremove) instead.
53When you exit an interactive worktree session, Claude checks the worktree for work that removal would delete: changed or untracked files, uncommitted work inside checked-out submodules, and new commits. These rules apply to worktrees Claude created with git. For a worktree your [WorktreeCreate hook](/docs/en/hooks.md#worktreecreate) created, see [WorktreeRemove](/docs/en/hooks.md#worktreeremove) instead.
5454
55* **The worktree is clean**: for an unnamed session, Claude removes the worktree and its branch automatically. A [named](/docs/en/sessions#name-your-sessions) session prompts you first so you can keep the worktree for later
55* **The worktree is clean**: for an unnamed session, Claude removes the worktree and its branch automatically. A [named](/docs/en/sessions.md#name-your-sessions) session prompts you first so you can keep the worktree for later
5656* **The worktree has work in it**: Claude prompts you to keep or remove the worktree. Keeping preserves the directory and branch. To return later, run the `claude --worktree <name> --resume` command that Claude Code prints on exit. Removing deletes the worktree directory and its branch, along with all the work in them
5757* **Another branch is checked out**: if the worktree is on a branch other than its own that has commits past the worktree's starting commit, Claude prompts you to keep or remove the worktree. Either answer keeps that other branch and its commits. Removing deletes the worktree directory and the worktree's own branch, the one Claude created with it
5858* **The worktree's state can't be verified**: when Claude Code can't count the worktree's changes or can't inspect its submodule checkouts, it prompts you rather than removing the worktree automatically. The prompt names what it couldn't check
from line 63
6363
6464## Resume a worktree session
6565
66When you resume a session that ended inside a worktree without [exiting it](#clean-up-worktrees), Claude Code returns the session to that worktree. This holds for interactive resumes, for `--continue` and `--resume` in [non-interactive mode](/docs/en/headless) with `-p`, and for the Agent SDK. `--continue` picks the most recent session recorded under the directory you launch from. Back inside the worktree, Claude can still exit it with the [`ExitWorktree`](/docs/en/tools-reference) tool.
66When you resume a session that ended inside a worktree without [exiting it](#clean-up-worktrees), Claude Code returns the session to that worktree. This holds for interactive resumes, for `--continue` and `--resume` in [non-interactive mode](/docs/en/headless.md) with `-p`, and for the Agent SDK. `--continue` picks the most recent session recorded under the directory you launch from. Back inside the worktree, Claude can still exit it with the [`ExitWorktree`](/docs/en/tools-reference) tool.
6767
6868Before returning the session to its worktree, Claude Code verifies that the worktree is still a checkout separate from the main one, and declines to re-enter a worktree that fails the check. For a git worktree, the check reads its git metadata. A worktree without git metadata, such as one a [`WorktreeCreate` hook](#non-git-version-control) created, can pass the check; the cases Claude Code still refuses are listed with their recoveries under [Claude Code refuses to use a worktree](#claude-code-refuses-to-use-a-worktree). For the messages and how to recover from each, see [The session resumes outside its worktree](#the-session-resumes-outside-its-worktree).
6969
from line 83
8383
8484While a session is isolated in a worktree, Claude Code blocks the tool calls the checks below define. The same rules apply whether you started the session with `--worktree`, Claude entered a worktree with `EnterWorktree`, or you resumed a worktree session.
8585
86The same enforcement covers every subagent Claude spawns from the isolated session. It applies whether the session is interactive or runs in the [background](/docs/en/agent-view#how-file-edits-are-isolated). [Subagents that run in their own worktree](#isolate-subagents-with-worktrees) carry the same checks. Their version history is under [Write subagent files](/docs/en/sub-agents#write-subagent-files).
86The same enforcement covers every subagent Claude spawns from the isolated session. It applies whether the session is interactive or runs in the [background](/docs/en/agent-view.md#how-file-edits-are-isolated). [Subagents that run in their own worktree](#isolate-subagents-with-worktrees) carry the same checks. Their version history is under [Write subagent files](/docs/en/sub-agents.md#write-subagent-files).
8787
8888Claude Code applies four checks:
8989
from line 92
9292* **Git redirects**: Claude Code blocks a Bash or Monitor command that redirects git into the main checkout. The redirect can come through `git -C`, `--git-dir`, a `GIT_DIR` or `GIT_WORK_TREE` variable, or a `cd` into the main checkout before running git.
9393* **Command shape**: Claude Code blocks a Bash or Monitor command when it can't verify from the command text that any git the command runs stays inside the worktree. That happens, for example, when the command name is computed at runtime, when the syntax can't be parsed, or when an expansion such as `${!name}` or `${ command; }` could run a command the text doesn't spell out. Claude Code tells Claude how to rewrite the refused command, such as splitting it into plain, separate commands. You can't turn this check off.
9494
95These checks read the path an edit targets, the directory a command runs in, and the text of the command. None of them tracks which files a shell command writes, so a command that writes into the main checkout without running git there, such as `cp` or a shell redirect, isn't refused by them. Claude Code treats that command like any other shell command under your [permissions](/docs/en/permissions) and [sandboxing](/docs/en/sandboxing) settings.
95These checks read the path an edit targets, the directory a command runs in, and the text of the command. None of them tracks which files a shell command writes, so a command that writes into the main checkout without running git there, such as `cp` or a shell redirect, isn't refused by them. Claude Code treats that command like any other shell command under your [permissions](/docs/en/permissions.md) and [sandboxing](/docs/en/sandboxing.md) settings.
9696
9797The checks apply to the repository you launched Claude Code from. They also cover the main checkout a linked worktree is linked from. For PowerShell commands, Claude Code applies only the working-directory check.
9898
99Claude sees each refusal as a tool error that names the worktree and says how to proceed. For a refused command, see [what the refusal message means and how to clear it](/docs/en/errors#command-blocked-by-the-worktree-isolation-checks).
99Claude sees each refusal as a tool error that names the worktree and says how to proceed. For a refused command, see [what the refusal message means and how to clear it](/docs/en/errors.md#command-blocked-by-the-worktree-isolation-checks).
100100
101101## Isolate subagents with worktrees
102102
103Subagents can run in their own worktrees so parallel edits don't conflict. Ask Claude to "use worktrees for your agents", or make the isolation permanent for a [custom subagent](/docs/en/sub-agents#supported-frontmatter-fields) by adding `isolation: worktree` to its frontmatter.
103Subagents can run in their own worktrees so parallel edits don't conflict. Ask Claude to "use worktrees for your agents", or make the isolation permanent for a [custom subagent](/docs/en/sub-agents.md#supported-frontmatter-fields) by adding `isolation: worktree` to its frontmatter.
104104
105105This subagent in `.claude/agents/` always runs in its own worktree:
106106
from line 115
115115and report the results.
116116```
117117
118Each subagent gets a temporary worktree that Claude Code removes automatically when the subagent finishes without changes; a worktree with changes stays on disk until the [periodic sweep below](#clean-up-subagent-and-background-session-worktrees) can remove it without losing work. For a worktree your [WorktreeCreate hook](/docs/en/hooks#worktreecreate) created, see [WorktreeRemove](/docs/en/hooks#worktreeremove) instead.
118Each subagent gets a temporary worktree that Claude Code removes automatically when the subagent finishes without changes; a worktree with changes stays on disk until the [periodic sweep below](#clean-up-subagent-and-background-session-worktrees) can remove it without losing work. For a worktree your [WorktreeCreate hook](/docs/en/hooks.md#worktreecreate) created, see [WorktreeRemove](/docs/en/hooks.md#worktreeremove) instead.
119119
120120Subagent worktrees use the same [base branch](#choose-the-base-branch) as `--worktree`, so they branch from your repository's default branch unless `worktree.baseRef` is set to `"head"`.
121121
122A subagent in its own worktree takes the instruction files it [starts with](/docs/en/sub-agents#what-loads-at-startup) from your main conversation, not from its worktree. When that worktree is in the default location under `.claude/worktrees/`, the subagent also doesn't load the `CLAUDE.md` file or `.claude/rules/` directory at the worktree's root as it reads files there, even if those differ on the worktree's branch.
122A subagent in its own worktree takes the instruction files it [starts with](/docs/en/sub-agents.md#what-loads-at-startup) from your main conversation, not from its worktree. When that worktree is in the default location under `.claude/worktrees/`, the subagent also doesn't load the `CLAUDE.md` file or `.claude/rules/` directory at the worktree's root as it reads files there, even if those differ on the worktree's branch.
123123
124124### Clean up subagent and background-session worktrees
125125
126Claude Code runs a periodic sweep that removes worktrees that Claude created for subagents and [background sessions](/docs/en/agent-view#how-file-edits-are-isolated) once they are older than your [`cleanupPeriodDays`](/docs/en/settings-reference#cleanupperioddays) setting, following the [retention sweep rules](/docs/en/claude-directory#cleaned-up-automatically).
126Claude Code runs a periodic sweep that removes worktrees that Claude created for subagents and [background sessions](/docs/en/agent-view.md#how-file-edits-are-isolated) once they are older than your [`cleanupPeriodDays`](/docs/en/settings-reference#cleanupperioddays) setting, following the [retention sweep rules](/docs/en/claude-directory.md#cleaned-up-automatically).
127127
128When you [background](/docs/en/agent-view#send-the-session-to-the-background) a `--worktree` session, its worktree becomes a background-session worktree that the sweep can remove. The sweep leaves a worktree in place in these cases:
128When you [background](/docs/en/agent-view.md#send-the-session-to-the-background) a `--worktree` session, its worktree becomes a background-session worktree that the sweep can remove. The sweep leaves a worktree in place in these cases:
129129
130130* The worktree still holds work: changed or untracked files, or unpushed commits.
131131* A checked-out submodule in the worktree holds changed or untracked files, or Claude Code can't inspect the worktree's submodules. This check requires Claude Code v2.1.274 or later.
from line 147
147147
148148### Choose the base branch
149149
150New worktrees branch from the repository's default branch, so most sessions don't need this setting. Set `worktree.baseRef` in [settings](/docs/en/settings-reference#worktree) to branch from your current work instead. The setting accepts two values:
150New worktrees branch from the repository's default branch, so most sessions don't need this setting. Set `worktree.baseRef` in [settings](/docs/en/settings-reference.md#worktree) to branch from your current work instead. The setting accepts two values:
151151
152152* `"fresh"` (default): branch from the repository's default branch on the remote, usually `main`, so the worktree starts from a clean tree matching the remote.
153153* `"head"`: branch from your current local `HEAD`, so the worktree carries your unpushed commits and feature-branch state. Use this when isolating subagents that need to operate on in-progress work. Inside a worktree, `"head"` resolves to that worktree's `HEAD`, not the main checkout's.
from line 200
200200config/secrets.json
201201```
202202
203This applies to every worktree Claude Code creates with git: `--worktree` worktrees, [subagent worktrees](#isolate-subagents-with-worktrees), and parallel sessions in the [desktop app](/docs/en/desktop#work-in-parallel-with-sessions). With a [`WorktreeCreate` hook](#non-git-version-control), copy the files inside the hook script.
203This applies to every worktree Claude Code creates with git: `--worktree` worktrees, [subagent worktrees](#isolate-subagents-with-worktrees), and parallel sessions in the [desktop app](/docs/en/desktop.md#work-in-parallel-with-sessions). With a [`WorktreeCreate` hook](#non-git-version-control), copy the files inside the hook script.
204204
205205### Reuse a worktree name
206206
from line 231
231231
232232A worktree gets its own files and branch, but it shares the following with the main checkout:
233233
234* **The repository's `.git` directory**: git commands in a worktree write to the main repository's shared `.git` directory, and [sandboxing](/docs/en/sandboxing#filesystem-isolation) allows those writes, so commands such as `git commit` work from inside a worktree with the sandbox enabled.
235* **Plugins**: plugins installed at [project scope](/docs/en/plugins/loading#find-where-a-plugin-is-enabled) from the main checkout also load in worktrees of the same repository, so you don't need to reinstall them per worktree. Requires Claude Code v2.1.200 or later.
236* **Permission approvals**: choosing "Yes, and don't ask again" for a Bash command in a worktree session saves the rule to the main checkout's `.claude/settings.local.json`, so it applies in the main checkout and in every other worktree of the repository, and it survives the worktree's removal. On Windows and in the other cases where Claude Code [doesn't use the repository root](/docs/en/settings#where-claude-code-looks-for-each-file), the rule stays with that worktree. Before v2.1.211, an approval granted in a worktree was saved inside that worktree, didn't apply elsewhere, and was lost when the worktree was removed. See [where approvals are saved](/docs/en/permissions#permission-system).
237* **Untracked skills, agents, and commands**: when the worktree checkout has no `.claude/skills` directory at its root, for example because your `.claude/skills` is gitignored, Claude Code loads the main checkout's [project skills](/docs/en/skills#where-skills-live) in the worktree session. In a worktree with its own `.claude/skills` directory, only that copy loads.
234* **The repository's `.git` directory**: git commands in a worktree write to the main repository's shared `.git` directory, and [sandboxing](/docs/en/sandboxing.md#filesystem-isolation) allows those writes, so commands such as `git commit` work from inside a worktree with the sandbox enabled.
235* **Plugins**: plugins installed at [project scope](/docs/en/plugins/loading.md#find-where-a-plugin-is-enabled) from the main checkout also load in worktrees of the same repository, so you don't need to reinstall them per worktree. Requires Claude Code v2.1.200 or later.
236* **Permission approvals**: choosing "Yes, and don't ask again" for a Bash command in a worktree session saves the rule to the main checkout's `.claude/settings.local.json`, so it applies in the main checkout and in every other worktree of the repository, and it survives the worktree's removal. On Windows and in the other cases where Claude Code [doesn't use the repository root](/docs/en/settings.md#where-claude-code-looks-for-each-file), the rule stays with that worktree. Before v2.1.211, an approval granted in a worktree was saved inside that worktree, didn't apply elsewhere, and was lost when the worktree was removed. See [where approvals are saved](/docs/en/permissions.md#permission-system).
237* **Untracked skills, agents, and commands**: when the worktree checkout has no `.claude/skills` directory at its root, for example because your `.claude/skills` is gitignored, Claude Code loads the main checkout's [project skills](/docs/en/skills.md#where-skills-live) in the worktree session. In a worktree with its own `.claude/skills` directory, only that copy loads.
238238
239239 The same read-through covers `.claude/agents` and `.claude/commands`. For skills, the read-through requires Claude Code v2.1.277 or later.
240240
241241All of these apply whether you create the worktree with `--worktree` or with `git worktree add`.
242242
243In a worktree session you start from the [desktop app](/docs/en/desktop#run-a-session-in-its-own-worktree), Claude Code reads project configuration such as settings, hooks, skills, agents, commands, and [`.mcp.json`](/docs/en/mcp#project-scope) servers from the main checkout's root. Hook commands run in that root, and `${CLAUDE_PROJECT_DIR}` points at it. To reach the files Claude is working on, read the worktree's path from the hook's [`cwd` input field](/docs/en/hooks#common-input-fields). `CLAUDE.md` files and `.claude/rules/` still load from the worktree.
243In a worktree session you start from the [desktop app](/docs/en/desktop.md#run-a-session-in-its-own-worktree), Claude Code reads project configuration such as settings, hooks, skills, agents, commands, and [`.mcp.json`](/docs/en/mcp#project-scope) servers from the main checkout's root. Hook commands run in that root, and `${CLAUDE_PROJECT_DIR}` points at it. To reach the files Claude is working on, read the worktree's path from the hook's [`cwd` input field](/docs/en/hooks#common-input-fields). `CLAUDE.md` files and `.claude/rules/` still load from the worktree.
244244
245245## Manage worktrees manually
246246
from line 302
302302}
303303```
304304
305Pair it with a `WorktreeRemove` hook to clean up when the session ends. See the [hooks reference](/docs/en/hooks#worktreecreate) for the input schema and a removal example.
305Pair it with a `WorktreeRemove` hook to clean up when the session ends. See the [hooks reference](/docs/en/hooks.md#worktreecreate) for the input schema and a removal example.
306306
307307A `WorktreeCreate` hook also lets you run [`/batch`](/docs/en/commands#all-commands) outside a git repository. Each `/batch` subagent then publishes its change with your project's version-control commands and, when it can't open a pull request, reports what it published instead. Running `/batch` outside a git repository requires Claude Code v2.1.281 or later.
308308
from line 348
348348* **Says `it contains the protected checkout`**: the refused directory is a parent of your main checkout, such as your home directory. Don't delete it. Change the worktree path, such as the path your `WorktreeCreate` hook returns or the `EnterWorktree` target, so the worktree doesn't contain the checkout.
349349* **Says `the protected checkout <path> has a .git entry that could not be examined` or `has git metadata that could not be resolved`**: the problem is the main checkout's git metadata, not the worktree's. Don't delete the worktree, and ignore the message's trailing advice to recreate it, which doesn't apply to these two endings. Repair the main checkout, for example a permissions problem or a git `dubious ownership` refusal on its `.git`, and retry.
350350
351 Before v2.1.302, with git 2.56 or later, the `could not be resolved` ending also appeared when the `<path>` after `the protected checkout` held a stray `.git` file. Stray here means the path on that file's `gitdir:` line doesn't lead to a valid git repository. To recover, [update Claude Code](/docs/en/setup#update-claude-code) and retry. When that `gitdir:` path no longer exists, you can also delete the `.git` file and retry.
351 Before v2.1.302, with git 2.56 or later, the `could not be resolved` ending also appeared when the `<path>` after `the protected checkout` held a stray `.git` file. Stray here means the path on that file's `gitdir:` line doesn't lead to a valid git repository. To recover, [update Claude Code](/docs/en/setup.md#update-claude-code) and retry. When that `gitdir:` path no longer exists, you can also delete the `.git` file and retry.
352352* **Says `its recorded path has a network spelling`**: Claude Code never resumes into a worktree at a network path. Recreate the worktree at a local path.
353353* **Any other ending**: the message names the problem and its fix, such as removing a `core.worktree` redirect or recreating the worktree; follow it. Before deleting a directory whose message says its git identity could not be verified, address the named cause first, for example a symbolic link in the worktree's path or git itself failing to run, since the directory may be healthy. When you do recreate, salvage any changes you need from the old directory first; it stays on disk.
354354
355355### The session resumes outside its worktree
356356
357When you resume a session interactively and Claude Code can't return it to its worktree, Claude Code says so with one of the messages below. When Claude Code clears the worktree binding, it records the clear in the session transcript. If you [suppress transcript writes](/docs/en/sessions#where-transcripts-are-stored), the message says instead that the binding could not be cleared and that Claude Code will re-check the worktree on a later resume.
357When you resume a session interactively and Claude Code can't return it to its worktree, Claude Code says so with one of the messages below. When Claude Code clears the worktree binding, it records the clear in the session transcript. If you [suppress transcript writes](/docs/en/sessions.md#where-transcripts-are-stored), the message says instead that the binding could not be cleared and that Claude Code will re-check the worktree on a later resume.
358358
359359| Message starts with | What happened and what to do |
360360| :- | :- |
from line 363
363363| `Did not re-enter your worktree <path>` | Claude Code refused the worktree binding as unsafe; it clears the binding and the session continues without isolation. The message includes the specific refusal: match it under [Claude Code refuses to use a worktree](#claude-code-refuses-to-use-a-worktree), since the fix is recreation for some refusals and a path change for others. |
364364| `Could not re-enter your worktree <path>` | Claude Code couldn't vouch for the worktree from where you launched, most commonly because you launched from inside it; the binding is kept. The rest of the message names the fix; match it under [Claude Code refuses to use a worktree](#claude-code-refuses-to-use-a-worktree). |
365365
366In [non-interactive mode](/docs/en/headless) with `-p`, and on resumes that the [Agent SDK](/docs/en/agent-sdk/sessions) runs, Claude Code stops the resume with a stderr error for every refusal except a gone worktree, instead of continuing without isolation.
366In [non-interactive mode](/docs/en/headless.md) with `-p`, and on resumes that the [Agent SDK](/docs/en/agent-sdk/sessions.md) runs, Claude Code stops the resume with a stderr error for every refusal except a gone worktree, instead of continuing without isolation.
367367
368368With `--output-format stream-json`, the refusal also arrives on stdout as a `result` message with subtype `error_during_execution` whose `errors` array carries the same text, so an Agent SDK application receives the reason rather than only a non-zero exit. Before v2.1.260, a worktree-resume refusal produced no `result` message.
369369
from line 371
371371
372372* `Error: cannot resume into worktree <path>: ...This session was not started.` for a refusal the table shows as `Did not re-enter`. Claude Code clears the worktree binding before exiting, and the error says so; the next time you resume the conversation, the session continues in the current directory without worktree isolation. Before v2.1.260, Claude Code didn't write the cleared binding, so every retry of the same resume failed with the same error.
373373
374 If you [suppress transcript writes](/docs/en/sessions#where-transcripts-are-stored), the clear can't be saved. The error then says the same command will be refused again, and names `--fork-session` and starting a new conversation as ways to continue without the worktree.
374 If you [suppress transcript writes](/docs/en/sessions.md#where-transcripts-are-stored), the clear can't be saved. The error then says the same command will be refused again, and names `--fork-session` and starting a new conversation as ways to continue without the worktree.
375375* `Error: could not verify worktree <path> for this resume, so the resume was aborted...` for `Could not verify`
376376* `Error: ...The worktree binding is kept.` for `Could not re-enter`
377377* `Notice: the worktree <path> for this session no longer exists...` for a gone worktree; Claude Code prints it and continues the session, as an interactive resume does
from line 384
384384
385385Worktrees handle file isolation. The related pages below cover delegating work into those isolated checkouts, passing findings between them, and switching between the sessions you create:
386386
387* [Subagents](/docs/en/sub-agents): delegate work to isolated agents within a session
388* [Cross-session messaging](/docs/en/cross-session-messaging): let the sessions in your worktrees pass findings to each other
389* [Agent teams](/docs/en/agent-teams): coordinate multiple Claude sessions automatically
390* [Manage sessions](/docs/en/sessions): name, resume, and switch between conversations
391* [Run a Desktop session in its own worktree](/docs/en/desktop#run-a-session-in-its-own-worktree): worktree-backed sessions in the desktop app
387* [Subagents](/docs/en/sub-agents.md): delegate work to isolated agents within a session
388* [Cross-session messaging](/docs/en/cross-session-messaging.md): let the sessions in your worktrees pass findings to each other
389* [Agent teams](/docs/en/agent-teams.md): coordinate multiple Claude sessions automatically
390* [Manage sessions](/docs/en/sessions.md): name, resume, and switch between conversations
391* [Run a Desktop session in its own worktree](/docs/en/desktop.md#run-a-session-in-its-own-worktree): worktree-backed sessions in the desktop app
392392
zero-data-retention Changed · +9 / -9 lines
from line 8
88>
99> ZDR is not included in the standard Claude for Enterprise plan and cannot be enabled from your admin settings. It is available to qualified accounts and requires separate enablement by Anthropic. If your organization requires ZDR, [contact sales](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) or your Anthropic account team to confirm eligibility.
1010
11Claude for Enterprise organizations that have enabled HIPAA can bring the Claude Code CLI and the Code tab in Claude Desktop under their Business Associate Agreement (BAA) without ZDR once the HIPAA configuration is applied to Claude Code (local mode) and Cowork (local mode). See [Set up Claude Code (local mode) for a HIPAA-ready organization](/docs/en/hipaa-setup). Organizations without the HIPAA configuration still need ZDR for BAA coverage of Claude Code. See the [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) for a list of Eligible Services.
11Claude for Enterprise organizations that have enabled HIPAA can bring the Claude Code CLI and the Code tab in Claude Desktop under their Business Associate Agreement (BAA) without ZDR once the HIPAA configuration is applied to Claude Code (local mode) and Cowork (local mode). See [Set up Claude Code (local mode) for a HIPAA-ready organization](/docs/en/hipaa-setup.md). Organizations without the HIPAA configuration still need ZDR for BAA coverage of Claude Code. See the [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) for a list of Eligible Services.
1212
1313ZDR on Claude for Enterprise gives enterprise customers the ability to use Claude Code with zero data retention and access administrative capabilities:
1414
1515* Cost controls per user
16* [Analytics](/docs/en/analytics) dashboard
17* [Server-managed settings](/docs/en/server-managed-settings)
16* [Analytics](/docs/en/analytics.md) dashboard
17* [Server-managed settings](/docs/en/server-managed-settings.md)
1818* Audit logs
1919
2020ZDR for Claude Code on Claude for Enterprise applies only to Anthropic's direct platform. For Claude deployments on Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry, refer to those platforms' data retention policies.
from line 29
2929
3030### Route Claude Code traffic to your ZDR organization
3131
32ZDR applies to requests that authenticate into a ZDR-enabled organization. If a developer signs in to Claude Code with a personal account or with an API key from a different organization, those sessions are not covered. To require that developers' claude.ai logins belong to your ZDR organization, deploy the `forceLoginMethod` and `forceLoginOrgUUID` managed settings; see [Restrict login to your organization](/docs/en/authentication#restrict-login-to-your-organization), which also explains how these keys treat Claude Console logins.
32ZDR applies to requests that authenticate into a ZDR-enabled organization. If a developer signs in to Claude Code with a personal account or with an API key from a different organization, those sessions are not covered. To require that developers' claude.ai logins belong to your ZDR organization, deploy the `forceLoginMethod` and `forceLoginOrgUUID` managed settings; see [Restrict login to your organization](/docs/en/authentication.md#restrict-login-to-your-organization), which also explains how these keys treat Claude Console logins.
3333
3434### What ZDR covers
3535
from line 37
3737
3838### What ZDR does not cover
3939
40ZDR does not extend to the following, even for organizations with ZDR enabled. These features follow [standard data retention policies](/docs/en/data-usage#data-retention):
40ZDR does not extend to the following, even for organizations with ZDR enabled. These features follow [standard data retention policies](/docs/en/data-usage.md#data-retention):
4141
4242| Feature | Details |
4343| - | - |
4444| Chat on claude.ai | Chat conversations through the Claude for Enterprise web interface are not covered by ZDR. |
4545| Cowork | Cowork sessions are not covered by ZDR. |
46| Claude Code Analytics | Does not store prompts or model responses, but collects productivity metadata such as account emails and usage statistics. Contribution metrics are not available for ZDR organizations; the [analytics dashboard](/docs/en/analytics) shows usage metrics only. |
46| Claude Code Analytics | Does not store prompts or model responses, but collects productivity metadata such as account emails and usage statistics. Contribution metrics are not available for ZDR organizations; the [analytics dashboard](/docs/en/analytics.md) shows usage metrics only. |
4747| User and seat management | Administrative data such as account emails and seat assignments is retained under standard policies. |
4848| Third-party integrations | Data processed by third-party tools, MCP servers, or other external integrations is not covered by ZDR. Review those services' data handling practices independently. |
4949
from line 53
5353
5454| Feature | Reason |
5555| - | - |
56| [Cloud sessions](/docs/en/claude-code-on-the-web), including those started from the [Desktop app](/docs/en/desktop#cloud-sessions) | Requires server-side storage of session data, including conversation history with prompts and completions. |
56| [Cloud sessions](/docs/en/claude-code-on-the-web.md), including those started from the [Desktop app](/docs/en/desktop.md#cloud-sessions) | Requires server-side storage of session data, including conversation history with prompts and completions. |
5757| [Chat and Cowork unified](https://support.claude.com/en/articles/17444462-set-up-and-manage-the-new-unified-claude-experience-for-your-enterprise-organization) | Requires cloud sessions. |
5858| [Claude Tag](https://claude.com/docs/claude-tag) | Retains channel memory and session transcripts. |
59| [Artifacts](/docs/en/artifacts) | Requires storing published page content on Anthropic-operated infrastructure. |
59| [Artifacts](/docs/en/artifacts.md) | Requires storing published page content on Anthropic-operated infrastructure. |
6060| Feedback submission (`/feedback`, `/bug`, `/share`) | Submitting feedback sends conversation data to Anthropic. |
61| [Remote Control](/docs/en/remote-control) | Stores the session transcript on Anthropic servers to sync the conversation across devices. |
61| [Remote Control](/docs/en/remote-control.md) | Stores the session transcript on Anthropic servers to sync the conversation across devices. |
6262
6363These features are blocked in the backend regardless of client-side display. If you see a disabled feature in the Claude Code terminal during startup, attempting to use it returns an error indicating the organization's policies do not allow that action.
6464
agent-sdk/examples Changed · +1 / -1 lines
from line 8
88
99If you haven't built anything with the SDK yet, start with one of these before a full application:
1010
11* [Agent SDK quickstart](/docs/en/agent-sdk/quickstart): build your first working agent in TypeScript or Python, with setup steps included. The agent finds and fixes bugs in a sample file.
11* [Agent SDK quickstart](/docs/en/agent-sdk/quickstart.md): build your first working agent in TypeScript or Python, with setup steps included. The agent finds and fixes bugs in a sample file.
1212
1313* [Hello World](https://github.com/anthropics/claude-agent-sdk-demos/tree/main/hello-world): a minimal TypeScript project to clone when you want to start from repo code
1414
agent-sdk/streaming-vs-single-mode Changed · +2 / -2 lines
from line 150
150150asyncio.run(streaming_analysis())
151151```
152152
153When you run the example, the TypeScript version prints each response as it completes. The Python version's `receive_response()` loop ends at the first result message, so it prints the security analysis; to read both responses, use one `query()` and `receive_response()` pair per message as shown in the [Python reference's example of continuing a conversation](/docs/en/agent-sdk/python#example-continuing-a-conversation).
153When you run the example, the TypeScript version prints each response as it completes. The Python version's `receive_response()` loop ends at the first result message, so it prints the security analysis; to read both responses, use one `query()` and `receive_response()` pair per message as shown in the [Python reference's example of continuing a conversation](/docs/en/agent-sdk/python.md#example-continuing-a-conversation).
154154
155155If an image block's `source` is missing or isn't an object, the SDK doesn't report an error. Claude Code sends Claude a text note in place of the image, such as `[Image could not be processed: image block has no source object]`, and the session continues.
156156
from line 183
183183> * Real-time interruption
184184> * Natural multi-turn conversations
185185
186If a query ends with an error result, such as `error_max_turns`, a single message `query()` call raises an error that includes the failure text after yielding the final result message, so wrap the loop in a try block if your code needs to continue. See [Handle the result](/docs/en/agent-sdk/agent-loop#handle-the-result) for the result subtypes.
186If a query ends with an error result, such as `error_max_turns`, a single message `query()` call raises an error that includes the failure text after yielding the final result message, so wrap the loop in a try block if your code needs to continue. See [Handle the result](/docs/en/agent-sdk/agent-loop.md#handle-the-result) for the result subtypes.
187187
188188### Implementation Example
189189
gitlab-ci-cd Changed · +2 / -2 lines
from line 10
1010
1111> [!NOTE]
1212>
13> This integration is built on top of the [Claude Code CLI and Agent SDK](/docs/en/agent-sdk/overview), enabling programmatic use of Claude in your CI/CD jobs and custom automation workflows.
13> This integration is built on top of the [Claude Code CLI and Agent SDK](/docs/en/agent-sdk/overview.md), enabling programmatic use of Claude in your CI/CD jobs and custom automation workflows.
1414
1515## Why use Claude Code with GitLab?
1616
from line 288
288288* `GCP_PROJECT_ID`: Google Cloud project ID
289289* `CLOUD_ML_REGION`: Google Cloud's Agent Platform region (for example, `us-east5`)
290290
291GitLab mints the job's OIDC token from the `id_tokens:` block and exposes it as `GITLAB_OIDC_TOKEN`. Set `aud` to the audience value you configured on the Workload Identity Pool provider, for example your GitLab instance URL. The job writes the token to a file, and the credential configuration's `credential_source` entry tells Google's auth libraries to read it from there. Setting `GOOGLE_APPLICATION_CREDENTIALS` to the credential configuration file makes it available to Claude Code through [Application Default Credentials](/docs/en/google-vertex-ai#3-configure-gcp-credentials).
291GitLab mints the job's OIDC token from the `id_tokens:` block and exposes it as `GITLAB_OIDC_TOKEN`. Set `aud` to the audience value you configured on the Workload Identity Pool provider, for example your GitLab instance URL. The job writes the token to a file, and the credential configuration's `credential_source` entry tells Google's auth libraries to read it from there. Setting `GOOGLE_APPLICATION_CREDENTIALS` to the credential configuration file makes it available to Claude Code through [Application Default Credentials](/docs/en/google-vertex-ai.md#3-configure-gcp-credentials).
292292
293293```yaml theme={null}
294294stages: