Claude docs changes for August 12th, 2026 [diff]

Executive Summary

  • Claude Sonnet 5's introductory pricing ($2 / $10 per million input/output tokens) is now permanent — the previously scheduled September 1, 2026 increase to $3/$15 has been cancelled, with the lower rate applied consistently across pricing, batch processing, and prompt caching docs
  • The Compliance API can now retrieve transcripts of local Cowork and Claude Code sessions that run on users' own machines (beta, Claude Enterprise) — three new endpoints, a new 6-year default retention rule, and content-availability caveats for CMEK organizations
  • Claude Code v2.1.228 fixes a cluster of high-impact bugs: interactive sessions that could stop redrawing, git not found on Windows, session cleanup deleting a project's memory folder, and a settings-merge bug that could leak custom headers between marketplace tiers — plus hardened security for skills synced from claude.ai
  • The errors reference page got a large expansion documenting new error and warning messages tied to recent features: gateway spend-limit blocks, invalid request headers, teammate-inbox write failures, worktree path-safety guards, and session-saving warnings
  • New Claude Code capabilities land in docs: sandboxing now blocks writes to protected config paths, hooks read JSON output on any exit code (not just 0), /code-review can trigger itself and post PR comments, and new Anthropic-profile/Workload-Identity-Federation authentication paths

New Claude Code versions

2.1.228

Existing feature improvements

  • Hardened skills synced from claude.ai: they no longer shadow local commands or MCP prompts, their descriptions are sanitized and labeled, and on your machine their bodies don't run ! commands or expand @ files
  • Improved cross-session messages: the sender and body now display inline instead of a collapsed line, and messages to Remote Control sessions on other machines show your Remote Control session name as the sender
  • Improved Vertex AI credential handling: expired or missing Google Cloud credentials now fail within seconds instead of retrying for minutes
  • Improved compaction progress: the retry countdown and stall hint now appear during compaction instead of only a progress bar
  • Changed the Write tool so newer models can overwrite an existing file they haven't read this session, matching the Edit tool's rules; older models still require the read first

Major bug fixes

  • Fixed interactive sessions that could stop redrawing entirely, while the process kept running, after a rare internal layout error
  • Fixed git / Git Bash not being found on Windows when Claude Code is launched from a parent folder of the git installation
  • Fixed /tui reverting the session to an earlier model when /model had been changed since the last response
  • Fixed cross-session messaging sometimes starting without an inbox in the first session after install or upgrade
  • Fixed Remote Control /resume while connected leaking the resumed conversation's title or history into the connected session
  • Fixed claude self-hosted-runner sessions failing on every fresh runner when the checkout hook fails for a repository the session doesn't push to; that repository is now skipped with a warning
  • Fixed self-hosted runners ending sessions in the gap between a background task finishing and the follow-up turn starting
  • Fixed session cleanup deleting contents inside a project's memory folder
  • Fixed background plugin-cache cleanup deleting a plugin's cache when its only version is a symlinked development checkout
  • Fixed a settings-merge issue where a marketplace entry redefined in a higher-precedence settings tier could inherit another tier's custom headers; marketplace entries now merge as whole entries
  • Fixed the deferred-tools reminder occasionally being sent to the model twice after a skill invocation

Claude Code changes

Changed documents

agent-sdk/agent-loop [Source]

  • After a session crash, the final ResultMessage is a synthesized error_during_execution whose cost fields may be zeroed and whose stop_reason is null; the process exits right after emitting it, and a new "Recover totals after a session crash" guide covers recovery. [line 287] [Source]
  • The result's usage field is now documented as covering only the main agent loop; use modelUsage (model_usage in Python) for whole-tree token/cost accounting including subagents. [line 290] [Source]

agent-sdk/cost-tracking [Source]

  • New "Track costs in streaming input mode" section: each turn emits its own result, usage covers only that turn, and total_cost_usd/modelUsage are running totals that reset on /clear, /reset, or /new. [line 44] [Source]
  • New "Recover totals after a session crash" section describing how to reconstruct totals when the final error_during_execution result carries zeroed cost fields. [line 283] [Source]
  • Per-step output_tokens on assistant messages is documented as a placeholder captured at message_start; read the real output count from the result message's usage/modelUsage, or watch it grow live via includePartialMessages. [line 267] [Source]

agent-sdk/hooks [Source]

  • PermissionDenied now also fires for auto mode denials that carry no classifier verdict, and Claude Code ignores retry: true for those no-verdict denials. [line 164] [Source]
  • On Claude Code v2.1.227+, a hook's systemMessage can surface as an SDKInformationalMessage for events beyond SessionStart/Setup; before that only those two events surfaced it. [line 857] [Source]

agent-sdk/hosting [Source]

  • Clarified SessionStore durability: a fresh session's local transcript outlives the run, but a run resumed from the store deletes its local copy at the end, leaving the store as the only durable copy. [line 192] [Source]

agent-sdk/permissions [Source]

  • Claude Code now ignores a subagent definition's permissionMode: "bypassPermissions" when bypass mode is disabled via permissions.disableBypassPermissionsMode, so that subagent runs under the parent session's mode instead. [line 106] [Source]

agent-sdk/python [Source]

  • model_usage is now documented as covering every model call in the query pipeline (main loop, subagents, compaction, Workflow agents) but excluding the permission classifier and token-counting calls; treat it as an estimate, not a billing statement. In streaming input mode it's cumulative across turns, so read the latest result rather than summing. [line 1532] [Source]

agent-sdk/session-storage [Source]

  • sessionStore.load() is now also called when continue: true resolves the newest store session (previously only for resume). [line 89] [Source]
  • New "Resume from the store" section: resuming writes the retrieved transcript into a temporary config directory, seeds it with credentials, .claude.json, and (TypeScript only, Agent SDK v0.3.222+) user settings.json, and deletes the directory and local transcript when the run ends. [line 267] [Source]

agent-sdk/tool-search [Source]

  • On Claude Code v2.1.227+, an organization can keep tool search on through managed settings even when CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS is set, previously an unconditional override. [line 36] [Source]

agent-sdk/typescript [Source]

  • New resumeDropsTurn option (v2.1.223+): pairs with resumeSessionAt to name the prompt UUID a truncating resume intends to discard; Claude Code refuses the resume if the discarded range holds anything not attributable to that turn. [line 432] [Source]
  • The Agent (RemoteTrigger) tool gains create_webhook_trigger (attach an event source like a GitHub event to a routine, v2.1.225+), plus list_runs and get_run_log for reading a routine's recent runs (v2.1.227+). [line 2655] [Source]
  • New backgroundEndsWithFinalResponse field on BashOutput: when a foreground subagent owns a backgrounded command, Claude Code now terminates that command once the subagent gives its final response (v2.1.227+). [line 2991] [Source]
  • SDKMessageOrigin's task-notification kind gains an optional subkind ("scheduled-trigger" or "peer-send-message"), set only when Anthropic servers verified the notification's source; a new "unclassified" kind (v2.1.223+) covers injected turns whose origin couldn't be determined. [line 1401] [Source]
  • SDKPermissionDeniedMessage now also reports denials in bare -p/no-callback runs (v2.1.223+), still skips denials decided on the PreToolUse hook path, and is absent entirely when a permissionPromptToolName MCP tool is configured. [line 1355] [Source]

agent-teams [Source]

  • Claude Code now reports a teammate message as sent only when the write to the recipient's mailbox file actually succeeds; a failed write (full disk, unwritable directory) returns an error to the sender instead of silently reporting success. [line 205] [Source]

agent-view [Source]

  • As of v2.1.225, claude agents in an untrusted directory now shows the workspace trust dialog before opening (previously it opened without asking, so dispatched sessions could run in a never-trusted directory). Hovering a row while grouped by directory no longer silently changes the dispatch target — only selecting one does. [line 701] [Source]

authentication [Source]

  • New "Anthropic profiles and federation credentials" section: Claude Code can now authenticate via a named Anthropic profile (ANTHROPIC_PROFILE), Workload Identity Federation variables (ANTHROPIC_FEDERATION_RULE_ID + ANTHROPIC_ORGANIZATION_ID), or an active profile discovered in the Anthropic config directory, each ranked against your /login credential per a documented precedence table. [line 184] [Source]
  • forceLoginMethod/forceLoginOrgUUID now explicitly don't block Anthropic profile or federation credentials, only ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, and apiKeyHelper. [line 139] [Source]

auto-mode-config [Source]

  • When the auto mode classifier produces no verdict (a separate safety check refused its request, or its response didn't parse), Claude Code now denies the action without recording it under /permissions' Recently denied tab. [line 270] [Source]

claude-apps-gateway-config [Source]

  • New pricing config block (v2.1.227+, requires an admin: block): lets a gateway operator set a global multiplier and per-upstream/per-model rate overrides (input/output/cache_read/cache_write per million tokens) so the spend meter reflects contracted rates instead of USD list price. [line 363] [Source]

claude-apps-gateway-spend-limits [Source]

  • Blocked-request messages now name the cap's period and reset time (e.g. spend limit reached (daily; resets 2026-08-08 00:00 UTC)) and the response carries a retry-after header; before v2.1.225 the message was just spend limit reached. [line 44] [Source]
  • New rate-resolution order for the usage meter: a matching pricing.overrides row now takes priority (v2.1.227+) over list price, before falling back to models[].id mapping or the $5/$25 unknown-model tier; the result is then multiplied by pricing.multiplier. [line 54] [Source]
  • New "Usage warnings in Claude Code" section: Claude Code now warns developers at 75% and 95% of their fullest cap, reading cap utilization and reset time from new anthropic-ratelimit-unified-* response headers (requires v2.1.225+ on both gateway and client). [line 68] [Source]

claude-apps-gateway [Source]

  • Anthropic profile credentials are now also ignored (alongside ANTHROPIC_AUTH_TOKEN, ANTHROPIC_API_KEY, apiKeyHelper, and prior claude.ai logins) while a gateway session is signed in, since the gateway token is the session's only credential. [line 351] [Source]

claude-directory [Source]

  • New usage-data/ directory under ~/.claude/ holds report.html and timestamped copies written by /insights, plus cached per-session analysis data, swept on the same cleanupPeriodDays schedule as other application data. [line 199] [Source]
  • The retention sweep now pauses whenever Claude Code can't safely determine the retention period (not just an unreadable settings file), and a new retention_sweep telemetry event lists each configuration that pauses it; claude -p --bare also skips the sweep entirely. [line 203] [Source]

cli-reference [Source]

  • New claude self-hosted-runner command (v2.1.224+): registers a machine or container with a self-hosted environment to host cloud sessions, with setup, doctor, and orchestrator subcommands. [line 37] [Source]
  • claude ultrareview gains --post/--no-post (v2.1.227+): on a github.com PR target, --post posts the finished findings to the PR as a plain comment from your GitHub account. [line 40] [Source]
  • --environment <environment-id> is now dedicated to self-hosted environments (ccpool_ IDs); it rejects Anthropic-hosted env_ IDs, which must be targeted with /remote-env instead. [line 77] [Source]

cloud-environments [Source]

  • Clarified that --environment <environment-id> targets only self-hosted environments (ccpool_ IDs) when dispatching a session; it rejects Anthropic-hosted env_ IDs. [line 20] [Source]

code-review [Source]

  • New "Let Claude start the review" behavior: Claude can now run /code-review on its own from a plain-language request, and a scheduled task with /code-review as its prompt now actually runs the review (previously read as plain text); skillOverrides: {"code-review": "user-invocable-only"} restores the old typed-only behavior. Cloud-provider, gateway, and privacy-opt-out sessions are excluded. [line 309] [Source]
  • /code-review ultra --fix and its escalation to ultrareview gain a --post option (v2.1.227+) to post the finished findings to a github.com pull request as a comment from your GitHub account. [line 265] [Source]

commands [Source]

  • /insights is rewritten as an HTML report generator (written to ~/.claude/usage-data/) covering work patterns, friction points, and suggestions, rather than the previous generic "analyzing sessions" description; not available in cloud sessions. [line 78] [Source]
  • A successful /add-dir now runs your configured DirectoryAdded hooks. [line 34] [Source]
  • /deep-research now runs only when explicitly invoked (Claude could previously start it on its own before v2.1.218), and /schedule can now also answer questions about a routine's recent runs. [line 25] [Source]

costs [Source]

  • New "Analyze your usage patterns" section documenting /insights: analyzes up to 200 not-yet-seen sessions per run, writes ~/.claude/usage-data/report.html plus timestamped copies, works on any plan or provider. [line 40] [Source]
  • New guidance for admins on gateway spend-limit messages as a fourth "situation" developers may hit, alongside session/weekly limits and context warnings. [line 124] [Source]

cross-session-messaging [Source]

  • Cloud sessions now appear as messaging targets only while the local session is connected to Remote Control, rather than whenever the session has generic "cloud access." [line 61] [Source]
  • Setting dialogExpiry to "never" now keeps default-held cross-session messages until the session ends instead of expiring after the deadline; a background session with no attached terminal also now leaves the approval dialog open past the deadline until you attach. [line 136] [Source]

desktop-ios-simulator [Source]

  • The iOS Simulator pane is now unavailable to Enterprise organizations that have a HIPAA configuration or Zero Data Retention (ZDR) enabled. [line 3] [Source]

env-vars [Source]

  • New ANTHROPIC_PROFILE, ANTHROPIC_FEDERATION_RULE_ID, and ANTHROPIC_ORGANIZATION_ID variables select Anthropic profile or Workload Identity Federation credentials, ranking above your /login credential. [line 152] [Source]
  • CLAUDE_CODE_SYNC_SKILLS now downloads claude.ai skills into ~/.claude/skills/synced/ (a new reserved folder name) instead of directly into ~/.claude/skills/, as of v2.1.227. [line 328] [Source]
  • New MCP_SDK_GENERATION variable (v2.1.218+) pins the MCP client runtime to v1 or v2 during Claude Code's migration between them; the v2 runtime adds an OAuth issuer-mismatch check. [line 399] [Source]
  • ANTHROPIC_CUSTOM_HEADERS now fails the request with a position-identifying error (v2.1.227+) when a header name or value contains a character HTTP headers can't carry, such as a curly quote or zero-width space. [line 124] [Source]
  • New CLAUDE_AX_STARTUP_QUIET_MS (v2.1.217+) controls how long screen-reader mode holds the first render after the startup line, and new CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT (v2.1.223+) skips proactive auto-compaction for unrecognized model IDs. [line 174] [Source]

errors [Source]

This page received a large expansion (+417 lines) covering many new or reworded error and warning messages. Highlights:

  • New "Spend limit reached" section documenting the Claude apps gateway's spend limit reached (daily; resets ...) / spend limit unavailable messages; connection-error/sleep-detection messages were renamed and expanded (e.g. Connection lost mid-response, Your computer went to sleep mid-response, The response stopped arriving), superseding the old wording as of v2.1.227. [line 409] [Source]
  • New "Invalid request header value" section: Claude Code now validates ANTHROPIC_AUTH_TOKEN, ANTHROPIC_CUSTOM_HEADERS, and other environment-sourced header values, stopping the request before sending with a message that pinpoints the offending pair/position. [line 529] [Source]
  • New "Remote Control couldn't refresh your login" and "Anthropic profile login expired" sections cover Remote Control credential-refresh failures and expired Anthropic profile logins. [line 649] [Source]
  • New "Failed to write to a teammate's inbox" section and new worktree-isolation guard errors ("path cannot be safely resolved" / "path is network-shaped") for writes and commands that address files through unsafe or network-shaped paths. [line 1692] [Source]
  • New "Session saving warnings" section covering Transcript writes are failing, and transcript-saving-disabled notices for CLAUDE_CODE_SKIP_PROMPT_HISTORY and an inherited CLAUDE_CODE_CHILD_SESSION marker — shown as a persistent line below the input box. [line 1879] [Source]
  • New "No conversation found with the session ID" and "Couldn't share the transcript" sections, plus a new "The 200K limit isn't enforced" configuration warning for CLAUDE_CODE_DISABLE_1M_CONTEXT sessions lacking a compaction threshold at or below 200K. [line 1537] [Source]

fast-mode [Source]

  • Console organizations must now have fast mode access provisioned (contact your account manager or join the waitlist) before requests succeed, since fast mode is in research preview; without provisioned access, every request gets rejected with a 429 that doesn't follow the normal rate-limit cooldown. [line 107] [Source]

feature-availability [Source]

  • /import (and its claude import subcommand) is now listed among the commands unavailable on Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude Platform on AWS, alongside /design-sync and /radio. [line 32] [Source]
  • Fast mode availability changed: on a Claude subscription it now requires Owner-enabled access on Team and Enterprise plans, and on Anthropic Console it requires a provisioned organization. [line 58] [Source]
  • /code-review is now called out as partial support on Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and Claude Platform on AWS: it runs when typed, but Claude doesn't start it automatically on those providers. [line 101] [Source]

gitlab-ci-cd [Source]

  • Pipeline examples now export PATH="$HOME/.local/bin:$PATH" since the installer places claude there and it isn't on PATH in the node:24-alpine3.21 image. [line 70] [Source]
  • The Amazon Bedrock and Google Cloud's Agent Platform job examples were rewritten to mint the job's OIDC token via GitLab's id_tokens: block (exposed as GITLAB_OIDC_TOKEN) instead of CI_JOB_JWT_V2/inline gcloud auth login --cred-file, and now set CLAUDE_CODE_USE_BEDROCK/CLAUDE_CODE_USE_VERTEX (plus ANTHROPIC_VERTEX_PROJECT_ID for Vertex) as job variables. [lines 207-320] [Source]
  • Google Cloud's Agent Platform setup now requires a new GCP_PROJECT_ID CI/CD variable, and GCP_WORKLOAD_IDENTITY_PROVIDER should now be the provider resource name without the //iam.googleapis.com/ prefix. [line 177] [Source]
  • Cost-optimization guidance now points to the --max-turns CLI flag and GitLab's job-level timeout keyword, replacing the removed max_turns/timeout_minutes parameter names. [line 359] [Source]

hooks-guide [Source]

  • PermissionDenied now fires for any auto mode denial, including ones with no classifier verdict; Claude Code ignores retry: true for those no-verdict denials. [line 450] [Source]
  • The troubleshooting entry "JSON validation failed" was rewritten as "Hook JSON has no effect," clarifying that Claude Code now reads JSON output on every exit code (not just 0), and documenting when hook stdout silently fails schema validation. [line 940] [Source]

hooks [Source]

  • Exit-code handling was substantially rewritten: Claude Code now reads JSON output fields on every exit code, not just 0, so a hook can print structured JSON alongside any exit code other than 2 and have it take effect (exit 2's block is the one outcome JSON can't override). New subsections cover exit 0, exit 2, and "Other exit codes" in detail. [lines 683-723] [Source]
  • New "Timeouts" subsection: a command, http, or mcp_tool hook that times out is canceled and renders no decision; for PreToolUse, a timed-out command/http/mcp_tool hook does not block the call, but a timed-out Agent SDK callback hook does block it. [line 725] [Source]
  • PermissionRequest no longer honors exit code 2 for blocking — deny it only through the JSON decision object now; a bare exit-2 hook with no decision object leaves the permission flow unchanged. [line 739] [Source]
  • ConfigChange's reason field is now accepted but never shown to the user or Claude — a blocked config change surfaces no message anywhere except a debug-log line. [line 2416] [Source]

interactive-mode [Source]

  • /btw side questions now see your earlier side questions too: Claude Code replays the newest 20 exchanges with each ask, until cleared, and the overlay shows your five newest earlier exchanges with a count of older ones. [line 332] [Source]
  • On the VS Code extension at v2.1.227+, /btw opens a side panel instead of the terminal overlay, supports follow-up questions in place, and its thread survives window reloads. [line 333] [Source]

llm-gateway-connect [Source]

  • New "Confirm the provider route" section: run /status after starting Claude Code with a provider-specific gateway block to see rows like API provider, Bedrock base URL/Vertex base URL, and an auth-skipped row confirming the configuration reached the session. [line 435] [Source]
  • On Claude Code v2.1.227+, an apiKeyHelper script that prints any banner or log line alongside the credential now makes the helper fail — its output must be nothing but the credential. [line 289] [Source]
  • Connection-error messages were renamed and now include the underlying error code in parentheses, e.g. Connection refused — a firewall or proxy may be blocking it (ConnectionRefused) and Can't reach the API server — check your internet or DNS (ENOTFOUND). [line 456] [Source]

llm-gateway-protocol [Source]

  • On Claude Code v2.1.227+, an organization can keep MCP tool search on under CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 through managed settings; on a direct connection or ANTHROPIC_BASE_URL gateway this keeps the tool-search beta header, defer_loading fields, and tool_reference blocks while stripping the rest, but has no effect on cloud providers or a Claude apps gateway. [lines 120-122] [Source]

mcp [Source]

  • claude.ai connectors now also stay unfetched when ANTHROPIC_PROFILE, the federation variables, or an active Anthropic profile supplies the credential, in addition to the existing API-key and third-party-provider cases. [line 857] [Source]
  • On Claude Code v2.1.227+, an organization can keep MCP tool search enabled under CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS via managed settings. [line 1098] [Source]

mobile [Source]

  • Photo attachments sent from the Claude app via Remote Control now reach Claude directly as part of the message, rather than being downloaded to your machine and passed as an @ file reference (other file types still download and pass as @ references). [line 51] [Source]

model-config [Source]

  • New "Fable 5 and usage credits" section: depending on plan and seat tier, Fable 5 usage can bill to usage credits instead of plan limits, with a "Requires usage credits" label in /model and an interactive consent prompt (skipped for Enterprise org billing, non-interactive mode, and the Agent SDK). [lines 62-85] [Source]
  • New "Context window and auto-compaction" section documents setting the auto-compact window via /autocompact <value> (e.g. /autocompact 500k), the --autocompact launch flag, or CLAUDE_CODE_AUTO_COMPACT_WINDOW, plus default thresholds per model/provider and how to correct the assumed window for a gateway or unrecognized model ID. [lines 498-534] [Source]
  • As of v2.1.223, CLAUDE_CODE_DISABLE_1M_CONTEXT=1 now caps every native-1M-window model (e.g. Sonnet 5, Fable 5), not just Sonnet 5/Opus 4.8/Opus 5, to a 200K context window. [line 476] [Source]

monitoring-usage [Source]

  • New OTel "Subagent completed" event (claude_code.subagent_completed), logged when a subagent finishes, with attributes like agent_type, agent.source, total_tokens, total_tool_uses, duration_ms, model, final_model, and model_swapped. [line 989] [Source]
  • New OTel "Retention sweep" event (claude_code.retention_sweep, v2.1.227+), logged once per background retention-cleanup run with result, period_days, skip_reason, and deletion-count attributes. [line 1027] [Source]
  • On a self-hosted environment, the Prometheus exporter's port 9464 binds only at runner capacity 1; at higher capacity the runner re-exposes counters/gauges on its own /metrics endpoint instead. [line 363] [Source]

network-config [Source]

  • Added registry.npmjs.org to the required-URLs table, covering npm-source plugin installs, plugins' Node.js package dependency installs, npx-launched MCP servers, and npm/bun installs of Claude Code itself. [line 172] [Source]

output-styles [Source]

  • The desktop app can now set output style directly via the outputStyle field in a settings file (e.g. .claude/settings.local.json); running /config there opens Settings > Claude Code instead of a menu. [lines 18-21] [Source]

permission-modes [Source]

  • In the VS Code extension, you can now switch a session into Auto mode directly from the mode indicator, instead of only via claudeCode.initialPermissionMode/defaultMode at startup. [line 72] [Source]
  • "When auto mode falls back" was rewritten to cover no-verdict denials (denied silently, without a notification or Recently-denied entry, and not counted toward the 3-in-a-row/20-total fallback thresholds) and how a non-interactive -p run without --permission-prompt-tool handles repeated blocks. [lines 273-278] [Source]

permissions [Source]

  • As of v2.1.228, a Read deny rule now also blocks the Write tool (in addition to Edit) on the same path, including creating a new file there; only NotebookEdit remains uncovered. [line 226] [Source]

plugin-marketplaces [Source]

  • New owner-wildcard marketplace entries (v2.1.223+): a strictKnownMarketplaces/blockedMarketplaces entry like {"source": "github", "repo": "acme-corp/*"} now allows or blocks every marketplace repository under a GitHub owner. [lines 750-757] [Source]

plugins-reference [Source]

  • New "Node.js package dependencies" section: Claude Code now automatically installs a plugin's npm/Bun dependencies into the cached copy (via bun install --frozen-lockfile --ignore-scripts or npm ci --ignore-scripts) whenever it caches a new plugin version, with a 60-second timeout and no lifecycle scripts. [lines 706-732] [Source]
  • New LSP guidance: Claude Code enforces a 64 KiB message-header / 32 MiB message-body limit on a server's stdout and disconnects (counted as a crash for restartOnCrash/maxRestarts) a server that exceeds either limit or writes non-protocol output to stdout — log output must go to stderr. [line 229] [Source]

remote-control [Source]

  • Remote Control sessions are now archived instead of left in the session list once Claude Code stops using them, e.g. when compaction rewrites the conversation while disconnected, or when you switch conversations with /resume. [line 125] [Source]
  • Two new error messages added in v2.1.225: "Remote Control could not resume the previous session under the current login" and "Remote Control got an unexpected server response." A stale login token no longer causes the generic connection-failed message — Claude Code now refreshes it and retries automatically. [lines 320-339] [Source]

routines [Source]

  • As of v2.1.225, GitHub triggers can now be attached to an existing routine from the CLI, not just from the web UI. [line 205] [Source]
  • New "Manage routines from the CLI" section: as of v2.1.227, you can ask /schedule about a routine's run history (e.g. "why did my nightly review do nothing this morning?") and Claude reads the run log to explain what happened. [lines 278-281] [Source]
  • As of v2.1.227, an Owner disabling the Routines toggle now also hides /schedule in the CLI (previously the command still appeared and claude.ai rejected the routine at creation/run time). [line 354] [Source]

sandboxing [Source]

  • New "Protected paths" section: within directories a sandboxed command can otherwise write to, the sandbox now denies writes to a documented set of Claude Code config/code paths (.claude settings, skills/agents/commands/hooks, .mcp.json, shell startup files, git internals, most of ~/.claude), with no way to exempt a path except turning off filesystem isolation entirely. [line 400] [Source]
  • When a sandboxed command fails because the sandbox denied it access, Claude Code now appends the violation details (blocked file path or network host) to the command's output so Claude can see the cause before retrying unsandboxed. [line 118] [Source]
  • Editing the sandbox filesystem allow/deny lists mid-session now applies live to the running session rather than requiring a restart. [line 143] [Source]

self-hosted-environments-configuration [Source]

  • As of v2.1.228, a failed checkout hook now behaves differently by repository: for a repo the session only reads from, the runner logs a warning, skips it, and continues (failing the session only if no repository is left), whereas a failed hook for the repo the session pushes results to still fails the session. [lines 89-92] [Source]

self-hosted-environments-deploy [Source]

  • As of v2.1.225, the self-hosted runner now creates and validates its --base-dir at startup, exiting with cannot create or write to base directory if it can't, instead of failing sessions after pickup with EACCES as before. [line 253] [Source]

self-hosted-environments-quickstart [Source]

  • The quickstart no longer instructs pre-creating the base directory with mkdir -p: the runner now creates and validates --base-dir itself at startup and exits with a named error if it can't. [line 71] [Source]

self-hosted-environments-reference [Source]

  • --base-dir reference entry updated: as of v2.1.225 the runner creates and validates the directory at startup (exiting with cannot create or write to base directory on failure) instead of on first session. [line 15] [Source]

self-hosted-environments-testing [Source]

  • New "--environment dispatch behavior" section: a non-interactive -p/piped run just creates the session and prints its ID/link, while a terminal invocation starts an attached interactive cloud session; documents flag precedence over remote.defaultEnvironmentId and incompatible flag combinations. [lines 78-80] [Source]

server-managed-settings [Source]

  • New "Approval memory" section documents how Claude Code records the security-dialog approval for managed settings: per-organization when using a saved claude.ai login (held by whichever account approved most recently), versus per-credential (tied to the cached settings copy) for API keys, gateways, or CLAUDE_CODE_OAUTH_TOKEN. [line 205] [Source]

sessions [Source]

  • /branch now keeps an active Remote Control connection attached: a phone or browser connected to the session follows into the branch and keeps receiving messages there. [line 126] [Source]
  • For a working directory whose converted transcript-directory name exceeds 200 characters, Claude Code now truncates it to 200 characters and appends a hash of the full path. [line 161] [Source]

settings [Source]

  • As of v2.1.223, disableBypassPermissionsMode now also makes Claude Code ignore an agent definition's permissionMode: bypassPermissions frontmatter, so the subagent runs with the parent session's mode instead. [line 361] [Source]
  • As of v2.1.224, sandbox filesystem paths now have a trailing slash stripped (~/.aws and ~/.aws/ match the same directory) and a trailing /** removed; wildcard support in allowWrite/denyWrite differs by platform (works on macOS, skipped on Linux/WSL2). [line 439] [Source]
  • blockedMarketplaces now supports the owner-wildcard "owner/*" form (v2.1.223+) to block every repository under a GitHub owner. [line 220] [Source]
  • defaultMode now notes that in a session the VS Code extension starts, the extension resolves the starting mode itself rather than reading this setting. [line 359] [Source]

skills [Source]

  • /code-review is no longer restricted to manual invocation — only /verify now requires an explicit invoke; Claude can invoke /code-review on its own when relevant. [line 13] [Source]
  • New "How injected commands run" and "When an injected command fails" sections document which tool (Bash vs. PowerShell) runs a skill's injected shell commands based on the shell frontmatter key, their shared timeout/output/working-directory behavior, and the exit-code/permission rules that abort an invocation. [lines 504-536] [Source]
  • The folder name synced is now reserved (any capitalization) in the enterprise, personal, and project skills locations, used for skills Claude Code downloads via CLAUDE_CODE_SYNC_SKILLS; before v2.1.227 a folder named synced loaded as an ordinary skill. [line 113] [Source]

sub-agents [Source]

  • Worktree-isolated subagents now get a "command shape" check on Bash commands: Claude Code refuses a command whose shape it can't verify stays inside the worktree, even if the command runs no git at all. [line 226] [Source]
  • As of v2.1.223, if bypass mode is disabled via permissions.disableBypassPermissionsMode, Claude Code now ignores a subagent frontmatter's permissionMode: bypassPermissions and runs it under the parent session's mode instead. [line 422] [Source]
  • Interactive sessions now show a warning naming the requested and substituted model whenever a blocked model value forces a subagent onto a different model. [line 277] [Source]

tools-reference [Source]

  • SendMessage now accepts an optional summary input (typically 5-10 words) that Claude Code shows as a one-line preview; when omitted on a plain-text message, it falls back to the first line of the message, truncated at 200 characters. [line 38] [Source]
  • Background Bash commands started by a foreground subagent now end when that subagent gives its final response; Claude Code also no longer auto-backgrounds a timed-out command that runs git anywhere or that it can't fully parse into simple commands (in addition to sleep). [lines 152-160] [Source]
  • As of v2.1.228, newer models can overwrite a file they never read this session (under the same conditions as read-before-edit), whereas Opus 4.6, Haiku 4.5, and older models still always require reading it first; the Write tool also now refuses notebook files over 100 MB via Read. [line 359] [Source]
  • Exit-code-1 handling expanded to rg and findstr (no-match, not a failure) alongside grep/egrep/fgrep/git grep, and robocopy exit codes 0-7 are now treated as informational results rather than failures (8+ still fails). [line 328] [Source]

ultrareview [Source]

  • New "Post findings to the pull request" feature (v2.1.227+): on a github.com PR review, you can have Claude post the finished findings as a single plain comment from your own GitHub account, via Run and post the findings to the PR as me in the launch dialog or --post/--no-post on claude ultrareview. [lines 47-58] [Source]

vs-code [Source]

  • New "Side questions" prompt-box feature: /btw now opens a panel beside the chat with follow-up support and a thread that survives window reloads (keeps the newest 20 exchanges, expires on the cleanupPeriodDays schedule). Requires the extension at v2.1.227+. [line 81] [Source]
  • As of v2.1.225, initialPermissionMode is read only from VS Code user settings (workspace values are ignored), and leaving it unset now lets Claude Code resolve the starting mode itself instead of defaulting to default. [line 282] [Source]

worktrees [Source]

  • Worktree isolation now applies a fourth check, "command shape": Claude Code blocks a Bash or Monitor command it can't statically verify stays inside the worktree (e.g. brace expansion, heredocs with unquoted delimiters), even when the command runs no git at all, and this check can't be turned off. [lines 60-65] [Source]

API changes

Changed documents

models/migration-guide [Source]

  • Claude Sonnet 5 pricing is now presented as permanent at $2 / $10 per million input/output tokens; the previous "introductory pricing through August 31, 2026, then $3/$15" language has been removed throughout the guide. [line 791] [Source]
  • The new-tokenizer cost guidance now states per-token pricing is lower on Sonnet 5 ($2/$10 vs. Sonnet 4.6's $3/$15) rather than "unchanged," clarifying that the ~30% token increase still means costs don't drop in direct proportion. [line 809] [Source]

models/overview [Source]

  • The model comparison table now lists Claude Sonnet 5 pricing as a flat $2 / input MTok, $10 / output MTok, with the earlier $3/$15 "standard pricing" figure and its "introductory pricing through August 31, 2026" footnote removed — the lower price is now permanent, not a limited-time promotion. [line 30] [Source]

models/whats-new-sonnet-5 [Source]

  • Pricing section rewritten: Claude Sonnet 5 is now priced at $2 per million input tokens / $10 per million output tokens as standard pricing (a genuine cut from Sonnet 4.6's $3/$15), replacing the earlier framing of "$3/$15, unchanged from 4.6" plus a temporary $2/$10 introductory rate due to expire August 31, 2026. [line 74] [Source]
  • "Capability improvements" intro now says Sonnet 5 is an upgrade over Sonnet 4.6 "at a lower price" (previously "at the same price"), and the new-tokenizer cost note similarly now says per-token pricing is lower rather than unchanged. [line 64] [Source]

pricing [Source]

  • Claude Sonnet 5's introductory pricing is now permanent: the two-row table entry ("through August 31, 2026" at $2/$2.50/$4/$0.20/$10 per MTok, then "starting September 1, 2026" at $3/$3.75/$6/$0.30/$15) has been collapsed into a single row at the lower rate, with no scheduled increase. [line 26] [Source]
  • Batch API pricing for Claude Sonnet 5 is likewise now a flat $1 / MTok input, $5 / MTok output permanently, instead of rising to $1.50/$7.50 on September 1, 2026. [line 153] [Source]

build-with-claude/batch-processing [Source]

  • The planned Claude Sonnet 5 price increase for the Batch API has been dropped: the previous two-tier pricing ($1/$5 per MTok through August 31, 2026, then $1.50/$7.50 starting September 1, 2026) is now a single flat rate of $1 / MTok input and $5 / MTok output with no future increase mentioned. [line 90] [Source]

build-with-claude/prompt-caching [Source]

  • Same pricing simplification as the Batch API: Claude Sonnet 5's prompt-caching price table no longer shows a scheduled September 1, 2026 increase ($3/$3.75/$6/$0.30/$15 per MTok); it now shows a single unified rate of $2/$2.50/$4/$0.20/$10 per MTok (base/5-min write/1-hour write/read/output) with no future change noted. [line 78] [Source]

manage-claude/admin-api-keys [Source]

  • The read:compliance_user_data scope now covers reading Claude Code session transcripts through the Compliance API, in addition to chats, files, projects, and Cowork session transcripts. [line 80] [Source]

manage-claude/api-and-data-retention [Source]

  • New retention rule for local Cowork and Claude Code session transcripts (sessions run on users' own machines): retained 6 years by default, or the organization's custom conversation retention period when a finite one is set. The Compliance API does not capture local sessions when zero data retention is in effect or when HIPAA readiness is enabled for the organization. [line 19] [Source]

manage-claude/cmek [Source]

  • New callout: for organizations using CMEK, Compliance API local session transcripts (Cowork and Claude Code) currently return no message content — session metadata still lists, but every message on the local session messages endpoint carries provenance.type: content_unavailable. [line 89] [Source]

manage-claude/compliance-activity-feed [Source]

  • The pagination scheme table and pagination-exception note now cover "local and remote sessions" (previously "remote sessions" only), reflecting the new local-session endpoints' page-token pagination with no has_more field. [lines 81-85] [Source]

manage-claude/compliance-api-access [Source]

  • Compliance Access Keys and the read:compliance_user_data scope now cover Cowork and Claude Code sessions (previously Cowork sessions only). [lines 13-64] [Source]

manage-claude/compliance-api [Source]

  • The content endpoints now serve both local session transcripts (Cowork and Claude Code sessions running on users' machines while signed in with a Claude Enterprise account) and remote session transcripts (Cowork sessions in Anthropic-managed cloud environments), not remote-only as before. [line 61] [Source]
  • New "OpenTelemetry logging" comparison section: Cowork's OTel logging and Claude Code monitoring stream live per-event telemetry to a self-run collector, versus the Compliance API which returns retained per-session transcripts on request. [lines 79-81] [Source]

manage-claude/compliance-content-data [Source]

  • Major new capability: "Retrieve local sessions" adds three endpoints (GET /v1/compliance/apps/sessions/local, /{session_id}, and /{session_id}/messages) exposing Cowork and Claude Code sessions that run on a user's own machine while signed in with a Claude Enterprise account. These count only against the shared rate limit (no extra per-endpoint budget like remote sessions), can't be deleted via the API, and 404 with Local sessions are not available. if not enabled for the parent org. [lines 269-273] [Source]
  • Local sessions are not captured when Claude Code authenticates with a Claude Console API key, runs through a third-party cloud platform (Bedrock, Google Cloud, Microsoft Foundry), runs as Claude Code on the web, or belongs to an organization with HIPAA readiness enabled; for CMEK organizations, sessions are listed but transcript content is withheld (content_unavailable/not_captured). [line 291] [Source]
  • New "Retrieve a local session transcript" endpoint documentation: reconstructs transcripts from captured Claude API calls but omits thinking blocks, the system prompt (replaced by a marker message), tool/MCP definitions, and binary content; includes new provenance values (content_unavailable, client_asserted, synthetic_marker) describing how each message was captured. [line 357] [Source]

manage-claude/compliance-errors [Source]

  • New error documentation for the local session endpoints: a Local session not found. 404 (permanent, no pending state) is distinguished from Local sessions are not available. (endpoints temporarily disabled for the parent org, can persist) — both share the not_found_error type but are told apart by message text. [lines 292-306] [Source]
  • New "Local sessions temporarily unavailable" 503 (overloaded_error) documents three distinct causes (index unavailable, captured content unavailable, retention overrides not yet evaluable) with different retry/backoff handling, including one variant that can persist rather than being purely transient. [line 406] [Source]

manage-claude/compliance-integration-patterns [Source]

  • The retention-planning table grows from four to five horizons, adding local session transcripts (Cowork and Claude Code on users' machines): 6 years by default, or the organization's custom conversation retention period when a finite one is set — controlled by Anthropic by default but by the organization once it sets a custom period. [lines 100-107] [Source]

managed-agents/onboarding [Source]

  • Page retitled from "Prototype in Console" to "Build in Console," and its closing section renamed from "From prototype to code" to "From Console to your codebase," dropping the "prototype" framing. [line 1] [Source]

release-notes/overview [Source]

  • New August 11, 2026 entry: the Compliance API now returns transcripts of Cowork and Claude Code sessions that run on users' machines (beta, Claude Enterprise), via GET /v1/compliance/apps/sessions/local, GET /v1/compliance/apps/sessions/local/{session_id}, and GET /v1/compliance/apps/sessions/local/{session_id}/messages. [lines 9-11] [Source]
  • New August 10, 2026 entry: Claude Sonnet 5's introductory pricing ($2 / $10 per MTok) is now the standard price permanently; the scheduled September 1, 2026 increase to $3 / $15 per MTok will not happen. [lines 13-15] [Source]
  • New August 3, 2026 entry: the Compliance API now returns transcripts of Cowork sessions started on claude.ai web or mobile (beta, Claude Enterprise), via GET /v1/compliance/apps/sessions/remote and GET /v1/compliance/apps/sessions/remote/{session_id}/messages. [lines 29-31] [Source]