Claude docs changes for July 22nd, 2026 [diff]
Executive Summary
- Claude Code Desktop adds an iOS Simulator pane (public beta, macOS): Claude can build, install, launch, and tap through iOS apps while you watch or take over yourself.
/verifyand/code-reviewno longer run automatically — Claude now only invokes them when you explicitly ask, keeping longer-running checks under your control.- A new
sandbox.filesystem.disabledsetting lets you keep network isolation while turning off filesystem isolation entirely, for workloads that need broad file access but confined egress. - 2.1.217 adds emoji shortcode autocomplete, a cap on concurrently-running subagents (default 20), and stops subagents from spawning nested subagents by default.
- The Claude API's search-results feature (RAG citations) now works on all active models with no beta header required, and the docs clarify several validation rules (text-only content, user-message-only, tool-result homogeneity).
New Claude Code versions
2.1.208
Existing feature improvements
- Changed the Fable 5 usage-credits consent prompt to start with the decline option focused
2.1.217
New features
- Added emoji shortcode autocomplete in the prompt input: type
:heart:to insert ❤️, or:heafor suggestions — disable with theemojiCompletionEnabledsetting - Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environment variable, instead of losing transcripts silently
- Added a cap on concurrently-running subagents (default 20, override with
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS) so one message can't fan out unbounded background agents - Changed subagents to no longer spawn nested subagents by default; set
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTHto allow deeper nesting
Existing feature improvements
- Improved footer PR badge links to be clickable hyperlinks even when terminal support can't be detected (e.g. over ssh/tmux); set
FORCE_HYPERLINK=0to opt out - Changed the login-expiry warning to appear 3 days before expiry instead of 5
- Capped the frontend-design plugin suggestion tip at 3 lifetime impressions instead of repeating indefinitely
Major bug fixes
- Fixed a memory leak where truncated MCP tool outputs kept the full untruncated result in memory for the rest of the session
- Fixed Windows auto-update failures that could leave
claude.exemissing; failed updates now restore the preserved executable automatically - Fixed background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder
- Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock and
/compactfailing once over the limit - Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions
- Fixed screen reader mode's startup announcement being cut off by the first prompt render, and the thinking status row re-rendering every few seconds to update elapsed time and token counts
- Fixed managed settings that set
OTEL_EXPORTER_OTLP_ENDPOINTnot governing all signals — lower-scope signal-specific overrides no longer redirect telemetry away from the managed endpoint - Fixed
--resume/--continueand/resumefailing with a TypeError when a transcript has a malformed attachment entry - Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared
- Fixed background shells sometimes becoming impossible to stop after a session is sent to the background or when the session exits on a heavily loaded machine, most visible on Windows
- Fixed a
CLAUDE.mdorSKILL.mdpaths frontmatter value with many brace groups OOM-killing or stalling the CLI at startup - Fixed the transcript preview sitting flush against the input area when attaching to a starting background session
- Fixed
--max-budget-usdnot stopping background subagents: once the cap is reached, new spawns are denied and running background agents are halted
Claude Code changes
New Documents
desktop-ios-simulator [Source]
Documents the new iOS Simulator pane in Claude Code Desktop (public beta on macOS, Pro/Max/Team plans). The pane opens automatically when Claude builds, installs, launches, or checks an app in the simulator, streaming the device live. Covers requirements (Xcode, a Mac), interacting with the device yourself (tap, rotate, screenshot/record), how sessions manage devices, granting Claude access, the disableMobileSimulatorTools managed setting, and troubleshooting.
Changed documents
agent-sdk/observability [Source]
OTEL_LOG_TOOL_CONTENTandOTEL_LOG_RAW_API_BODIEStruncation is now configurable viaCLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH(requires v2.1.214+), instead of a fixed 60 KB. [lines 224-225] [Source]
channels [Source]
- Plugin installs for channels now prompt to choose the user scope so the plugin is available across all projects. [line 37] [Source]
--channelsand--dangerously-load-development-channelsdon't appear inclaude --helpduring the research preview, even though they work. [line 324] [Source]
checkpointing [Source]
- New section: checkpointing doesn't rewind symlinked or hard-linked files —
/rewindnow skips them and shows aRestored the code, but skipped N fileswarning instead of silently writing through the link. [line 79] [Source]
chrome [Source]
- Chrome integration now requires signing in with
/login— API key orsetup-tokensessions keep it off instead of silently failing every connection attempt with a 403. [line 30] [Source] - New section on the "Claude wants to use your browser" install prompt shown when Claude needs the browser but doesn't detect the extension. [line 64] [Source]
cli-reference [Source]
--channelsnow also accepts a Console API key for authentication, not just claude.ai. [line 62] [Source]--settingsnow requires the file to be a regular file no larger than 2 MiB. [line 110] [Source]
commands [Source]
/verifyand/code-reviewnow run only when explicitly invoked; before v2.1.215 Claude could also run them on its own. [line 23] [Source]/contextnow shows a warning with how far over the context window you are and which command frees space, once the conversation exceeds it (v2.1.216+). [line 50] [Source]
computer-use [Source]
- Clarifies that in the Desktop app, iOS Simulator tasks now open the dedicated Simulator pane instead of screen control; from the CLI, computer use is still how Claude reaches the simulator. [lines 26, 160]
costs [Source]
- The in-CLI usage-credits management dialog (buy credits, set spend limit, configure auto-reload) has been replaced:
/usage-creditsnow just opens billing settings in the browser, based on your role (Pro/Max, Team/Enterprise with or without billing access). [lines 29-33] [Source]
desktop [Source]
- Documents the new iOS Simulator pane and the
disableMobileSimulatorToolsmanaged setting to block it. [lines 149, 614] - New
urlfield for preview configurations, letting a preview open an address other thanhttp://localhost:<port>(local HTTPS,*.localhostsubdomains, or attaching to a server you already run). [lines 408-429] [Source]
discover-plugins [Source]
- Notes that
/reload-pluginsis needed after installing a plugin to activate it in the current session. [line 268] [Source]
errors [Source]
- Consolidated the spend-limit error entries into one
Could not update your spend limitsection, since/usage-creditsno longer has its own dialog for this. [lines 346-354] [Source] - Rewind's skipped-files guidance now suggests
find . -type l/find . -type f -links +1to locate skipped symlinked/hard-linked paths. [line 1378] [Source]
headless [Source]
- Streaming JSON output now waits up to 30 seconds (scaled to queue size) for a slow consumer to drain before exiting, up from a ~2 second cap in earlier versions that could cut off large responses. [line 135] [Source]
hooks [Source] / hooks-guide
- Behavior change: a
PreToolUseprompt/agent hook that denies a call now ends the turn and shows the reason as a warning by default, instead of feeding it back to Claude as a tool error. SetcontinueOnBlock: trueto restore the old (pre-v2.1.210) behavior. [hooks.md#L2713, hooks-guide.md#L747] - Clarifies
TaskCompletedhook behavior differs depending on whether it fires from a task completion (tool-error semantics) or a teammate stopping (TeammateIdle-like halt). [hooks.md#L2717]
how-claude-code-works [Source]
- Softened "every file edit is reversible" to "file edits are reversible" and notes that restores skip symlinked/hard-linked files. [lines 120-121] [Source]
interactive-mode [Source]
- Fixed: double
Escat an empty prompt could stop opening the rewind menu for the rest of a long-running session that used background tasks. [line 30] [Source] - Fixed vim-mode
.(repeat last change): change operators likecw/ccnow replay the deletion too, and.afterp/Prepeats the paste instead of the previous change. [line 182] [Source]
jetbrains [Source]
/idenow confirms a successful connection with a message likeConnected to IntelliJ IDEA., and auto-installs the plugin for a detected IDE that lacks it. [line 63] [Source]
mcp [Source]
- Fixed: a failed
list_changedrefresh now keeps the server's previously discovered tools/prompts/resources instead of replacing them with an empty list. [line 160] [Source] - Tools requiring
anthropic/requiresUserInteractionnow also withhold one-tap approval for any permission request that only the terminal dialog can render in full (safety warnings, always-allow options). [line 970] [Source]
memory [Source]
- Memory files with frontmatter now get a
modifiedISO 8601 timestamp recorded on each write, showing how current a fact is. [line 347] [Source] /memoryopening a file in a GUI editor (e.g. VS Code) no longer blocks the session until the file is closed. [line 356] [Source]
model-config [Source]
- Fallback model chains now also skip a model with a smaller context window than the primary during compaction, since summarizing there would cut off part of the conversation; if every fallback is smaller, compaction shows the original error. [line 322] [Source]
monitoring-usage [Source]
- New
CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTHenv var configures the OTel content truncation limit (default 60 KB) for tool content, raw API bodies, and other content-bearing attributes. [line 82] [Source] - Fixed: the Prometheus-only metrics scrape no longer includes OpenMetrics-only
# UNITlines that some scrapers rejected. [line 432] [Source] - Fixed: streams carrying usage across multiple frames (behind a proxy) no longer inflate
claude_code.cost.usage/claude_code.token.usage. [line 1018] [Source] - New
message.uuid,client_request_id,tool_source, andcost_usd_microsattributes added across several event types for finer-grained correlation with the session transcript.
plugin-marketplaces [Source]
claude plugin marketplace list --jsonnow includes aninstallLocationfield with the local cache path. [line 948] [Source]- Troubleshooting now recommends
git ls-remote <marketplace-url>to test git authentication directly. [line 1042] [Source]
remote-control [Source]
/usage-creditsfrom Remote Control now prints the billing URL instead of opening the removed in-CLI dialog. [line 237] [Source]
sandboxing [Source]
- New
sandbox.filesystem.disabledsetting turns off filesystem isolation while keeping network isolation on — useful when you want to control where sandboxed commands connect without restricting what they write. Only settable from user/managed settings or--settings, not project settings. [line 167] [Source]
scheduled-tasks [Source]
- Scheduling a task now fails with an error if the project's
.claudedirectory or the task file is a symlink, instead of writing through the link. [line 196] [Source]
sessions [Source]
- Resuming a session now also restores the agent it was started with (
--agentor theagentsetting), including its system prompt, tool restrictions, and model. [line 26] [Source] - A session that fails to load from
claude --resumenow printsFailed to resume the conversationwith a retry command and exits, instead of failing silently. [line 86] [Source]
skills [Source]
/verifyand/code-reviewnow run only when explicitly invoked, not automatically. [line 13] [Source]- Fixed: a plugin skill's frontmatter
namenow only replaces the last segment of the command (keeping the plugin prefix and adding a bare alias), instead of replacing the whole command name. [line 246] [Source]
API changes
New Documents
get-api-key [Source]
New page walking through creating and using a Claude API key: signing in to the Console, creating a key, storing it, setting ANTHROPIC_API_KEY, and how this relates to the Admin API's key-management endpoints.
Changed documents
api/rate-limits [Source]
- Clarifies that new organizations or those with limited usage history may start with limits below the standard tier limits shown on the page, increasing automatically as usage history builds. [line 22] [Source]
build-with-claude/search-results [Source]
- Search results with citations now work on all active models except Claude Haiku 3, with no beta header required — previously limited to a specific model list. [line 13] [Source]
- Clarifies
sourcecan be any stable string, not just a URL (e.g.kb://article-1234). [line 54] [Source] - New validation rule: within a
tool_result, if any block is asearch_result, all blocks must besearch_result— mixing types returns an error. [line 511] [Source] - New limitation:
search_resultblocks can only appear in user messages (including inside tool results); assistant messages with them are rejected. [line 588] [Source]
cli-sdks-libraries/cli/scripting [Source]
- New section on authenticating
curlrequests withant auth loginCLI credentials instead of a static API key, usingant auth print-credentials --access-token. [line 239] [Source]
manage-claude/cmek [Source]
- Clarifies which roles can configure CMEK: Organization Admins on Claude Platform, or Owners/Primary Owner on Claude Enterprise. [line 23] [Source]
- Claude in Chrome added to the list of surfaces CMEK covers. [line 66] [Source]