Non-interactive mode measures more of its startup time#
When run without the interactive screen, Claude Code now times its early startup and how long setting up the sandbox takes
You can now use Sonnet 5.5 by choosing sonnet on the Anthropic API, where it replaces Sonnet 5. Bedrock, Vertex and other providers still get their older models under that name. A new sandbox network setting, deniedResolvedAddresses, blocks allowed websites that resolve to IP addresses or ranges you list. Apps built on the SDK can save a feedback report as a local zip with the new save_locally option. The Claude gateway can now sign in to its identity provider with a certificate, so oidc.client_secret is optional. /rate-limit-options now shows up in the command list.
Several features are in this build but not switched on yet. Claude Code can clear old tool results when you return after more than an hour idle. It keeps the last 5 results and stays off unless switched on remotely. PR Steward is an agent that looks after pull requests. /autofix-pr can now step aside when PR Steward is already working on one. A hidden guide plugin for the live mods added in v2.1.283 is built in but off.
Cleaning up an agent team no longer deletes its members' worktrees. Ending a session now closes only the tmux or iTerm teammate panes that session opened. Calls to an MCP tool whose server is still starting now wait instead of failing. A broken image in a prompt no longer crashes the turn. The /design canvas mode and the dashboard artifact template are removed. Claude can also no longer start /design on its own.
Written by our agent from the shipped bundle, not by Anthropic.
The sonnet alias now means Sonnet 5.5 (claude-sonnet-5-5) on the Anthropic API, Sonnet 5 stays pickable, and refusal handling now covers Sonnet
Sessions & agentsRemote sessions can move a hash-verified opening of --append-system-prompt text into the cached system prompt via CLAUDE_CODE_APPEND_PROMPT_HEAD
ElsewhereA built-in cc-plugin-otlp can send OpenTelemetry records through plugin hooks, and plugin telemetry hooks must name a stream, with anthropic reserved
ExtensionsA new hub row lets you see or withdraw consent for cloud sessions running commands on your computer, and policy-blocked Yes answers are not stored
Sessions & agentsSDK hosts can save a feedback report as a local redacted zip with save_locally, and learn at startup whether feedback is sent, bundled or disabled
Sessions & agents--model help text no longer gives an example full model nameSessions & agents/design drops its design canvas mode, and Claude can no longer run it on its ownExtensions/design canvas option are goneTools & outputWant the reasoning? Read walks the 42 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →5 more of these are in What probably matters to you, on page 1.
When run without the interactive screen, Claude Code now times its early startup and how long setting up the sandbox takes
Claude Code records timings for four more early startup steps, alongside the startup timings it already kept
Unclear It is not clear where these timings are sent.
The Write tool may now adjust its content during the permission check, and it takes the file's line-ending style into account when comparing two writes
Unclear It is not clear what the transformation applied to the content during the permission check actually does.
An exit code that is not a whole number from 0 up to a maximum is now refused with an error saying so
Unclear Where this check is applied, and which exit codes it covers, is not known.
The instructions Claude gets for reading files were reworded for some model setups and still open with the same first sentence
Unclear It is unclear which part of the text changed, since the stock Read description measured under this release is unchanged from the previous one.
The Edit tool's opening line changed from "exact string replacements in files" to "exact string replacement in a file"
Unclear The prompt record lists the Edit description as unchanged since v2.1.283, which conflicts with the rewrite reported between v2.1.283 and v2.1.284, so the release it arrived in is unclear.
When Claude Code clones only part of a git repository, it now fills in the files with git read-tree instead of git checkout
Unclear It is not confirmed which feature makes these partial clones, though plugin or marketplace sources are the likely one.
A check Claude Code runs on git's record of kept files now copes with submodules and reports malformed entries as tampered
Unclear It is not clear which Claude Code feature uses this git check.
When two paths clearly point to different places, the worktree path check now says they differ instead of reporting it cannot tell
Unclear Which worktree actions behave differently for "untrusted" versus "different" is not stated.
Several rules in the auto mode safety check are now filled in from configuration, so their wording can differ between setups
Unclear Where the configured text comes from, and whether the default wording still matches the old rules, is not known.
In auto mode, the context sent to the server-side check now lists the system reminders in the conversation, and is the first thing dropped when too large
Unclear It is not clear what switches auto mode over to the server-side classifier.
When Claude Code runs without disk access, it now skips its saved model-capabilities file and does not look for an Anthropic config folder
Unclear It is unclear how diskless mode is turned on.
Claude Code's debug output now says the workload identity federation token cache is turned off in diskless sessions, not only when there is no config directory
Unclear It is not clear whether diskless sessions newly turn the cache off in this release, or whether only the wording of the debug message changed.
The part of Claude Code that fetches feature settings now remembers whether any request went to a host other than https://api.anthropic.com/
Unclear It is not clear which part of Claude Code reads this record or what it does differently as a result.
Three storage error codes are now invalid_argument, resource_exhausted and quota_exceeded, replacing their hyphenated spellings
Unclear Which store this is, and where these codes can be seen, is not clear.
A permission request can now carry the reason "declined at the dialog" when a decline message is present
Unclear What produces the decline message is not known.
When a managed policy restricts sources, the check on a plugin command's pre-approved tools now receives the plugin's attestation and origin details
Unclear The rule that decides which plugins pass using these new details is not known.
Claude Code now validates a settings file by checking only the keys that file contains, instead of against the full list of every setting
Unclear Whether error messages or the handling of unknown settings keys changed is not settled.
Claude Code now builds its managed-settings check only for the keys present in a settings file, and reuses it, instead of building it in full
Unclear It is not clear whether the new message can ever appear to a user.
The non-interactive -p code path now accepts an option to add text at the start of the system prompt and records a startup timing
Unclear No command-line flag or SDK option that sets this new option was found.
On models that accept system messages mid-conversation, keyed system reminders are no longer merged into one block
Unclear It is not clear exactly how the separate entries are laid out, or which models have the capability.
Claude Code now handles the end of a usage-limit grace period separately for subagents and for the main conversation
Unclear What the subagent notice says, or what it does differently from the main one, is not known.
Notices about rate-limit offers and low-priority mode no longer post themselves; they pass their state to another part of Claude Code to show
Unclear Which part of Claude Code now displays these notices, and so how they look to you, is not known.
/design drops its design canvas mode, and Claude can no longer run it on its own#/design no longer has a canvas mode, and Claude can no longer start the command by itself
Unclear It is unclear whether the canvas mode moved somewhere else or was removed entirely.
/design canvas option are gone#The dashboard artifact template and the canvas option of /design have been removed; report, data-table and explainer templates remain
Unclear Both features were already behind flags, so it is unclear how many people ever had these options.
CLAUDE_CODE_COMMIT_BETWEEN_KEYS no longer does anything; handling a burst of keys one by one is always on
A fallback that handled certain file operations by path name is gone; they now use a direct file handle or are reported as unavailable
Unclear It is unclear which Claude Code feature uses this file anchoring or which platforms relied on the removed fallback.
A panel about usage limits no longer shows the extra line about upgrade options that it used to show in certain states
Unclear Which panel this is, and when the line used to appear, is not clear.
Published verbatim by Anthropic for v2.1.284. Text is unmodified from the upstream changelog. Everything else on this page came out of the bundle instead, which is why the two lists don't match.
Of these 100 bullets, 33 name something an entry on this page also names, 24 name something no entry here does, and 43 name nothing specific enough to line up either way. The pairings are made on names both sides wrote down, a flag or a setting or a slash command, so read one as probably the same thing rather than as a fact, and read the middle number as candidates rather than as a miss count.
claude-sonnet-5-5), now the default Sonnet model on the Anthropic API — 1M context, $2/$10 per Mtok with $0.20/Mtok cache reads
Probably refusal-fallback-now-has-its-own-route-for-claude-sonnet-5-5, sonnet-alias-now-resolves-to-sonnet-55-claude-sonnet-5-5, sonnet-55-claude-sonnet-5-5-added-and-made-the-default-s, model-constants-move-to-opus-55-and-sonnet-55 /usage and the status line (for example "$271.40 / $500.00 spent this month") when the gateway runs this version or later; the status line's rate_limits.spend_limit also gains used_usd, limit_usd and period
Probably gateway-docs-serve-get-apioauthusage-so-usage-and-the-s, usage-limit-auto-continue-text-is-remote-configurable-and-a, gateway-server-new-apioauthusage-endpoint-and-a-larger-h, self-hosted-gateway-serves-get-apioauthusage-from-its-spe, rate-limit-auto-continue-messages-now-come-from-remote-confi, statusline-and-usage-screen-show-spend-limit-dollars-for-gat, status-line-json-gateway-spend-limit-gains-used-usd-limit, max-20x-users-at-a-usage-limit-are-pointed-to-usage-credits effortSlider:decreaseEffort, increaseEffort and toggleUltracode keybinding actions, so the /effort slider's arrow and Tab keys can be rebound in keybindings.json
Probably effort-no-longer-preselects-ultracode, ultracode-becomes-an-onoff-row-in-the-effort-picker-instea, effort-slider-gets-leftright-keys-and-tab-to-toggle-ultraco /rate-limit-options to /help and the command menu for claude.ai subscribers, so the usage-limit notices that mention it point to a command you can find
Probably rate-limit-options-is-no-longer-hidden-and-has-a-new-descri /mcp reconnect all in the interactive terminal to retry every MCP server that failed to connect or needs authentication at once
Probably mcp-step-up-re-auth-tells-the-user-a-browser-is-opening, interactive-mcp-reconnect-all-in-the-terminal-ui, mcp-reconnect-all-now-reconnects-every-server-instead-of availableModels is empty, or leaves out the model Claude Code starts on without setting model or enforceAvailableModels
Probably gateway-config-validation-warns-about-empty-or-default-less auth: { google: {} } for Claude apps gateway telemetry.forward_to destinations, so telemetry can be exported straight to Google Cloud's OTLP endpoint using the gateway's Google Cloud credentials
Probably managed-gateway-config-validates-telemetryforward-to-auth, gateway-telemetry-forward-to-can-authenticate-with-a-google private_key_jwt) between the Claude apps gateway and its identity provider, for identity providers that issue certificate credentials instead of client secrets
Probably mcp-oauth-a-private-key-jwt-auth-method-is-registered-as-n, gateway-oidc-supports-private-key-jwt-certificate-client-aut source, and failing on every later turn after a malformed document block; a malformed image is now replaced with an explanatory note
Nothing to match on /usage, /extra-usage and IDE usage views now back off instead of re-asking
Probably gateway-docs-serve-get-apioauthusage-so-usage-and-the-s, usage-limit-auto-continue-text-is-remote-configurable-and-a, gateway-server-new-apioauthusage-endpoint-and-a-larger-h, self-hosted-gateway-serves-get-apioauthusage-from-its-spe, rate-limit-auto-continue-messages-now-come-from-remote-confi, statusline-and-usage-screen-show-spend-limit-dollars-for-gat, max-20x-users-at-a-usage-limit-are-pointed-to-usage-credits claude mcp add reporting success when managed settings restrict MCP servers to plugins; it now refuses and says what to do, instead of saving a server that never loads
Probably managed-policy-can-block-claude-mcp-add-when-strictplugino /plugin configure screen: boolean options are now a true/false choice instead of free text, number options refuse invalid input, and ←/→ change an options field instead of switching tabs
Probably marketplace-add-failure-now-raises-a-typed-error-carrying-th, invalid-plugin-manifests-reported-as-specific-errors, marketplace-name-conflict-error-now-carries-a-structured-kin ANTHROPIC_FOUNDRY_RESOURCE being interpolated into the Foundry endpoint host unvalidated; a value that is not a plain resource name is now refused
Probably anthropic-foundry-resource-is-validated-before-building-the, anthropic-foundry-resource-is-validated-and-passed-to-the-fo bin/ directories that don't exist are no longer added to PATH, and inherited entries aren't added twice
No entry names this sparsePaths plugin marketplaces cloning empty and replacing a working local copy on older git (before 2.39), which failed every refresh with "marketplace.json file is no longer present"
No entry names this [ in transcript mode writes the conversation to scrollback (macOS and Linux)
Nothing to match on /config and /plugin breaking the title and tab labels mid-word in a narrow terminal; a tab that doesn't fit now moves to the next line whole
Probably marketplace-add-failure-now-raises-a-typed-error-carrying-th, invalid-plugin-manifests-reported-as-specific-errors, turning-prompt-suggestions-back-on-in-config-resets-the-unu, marketplace-name-conflict-error-now-carries-a-structured-kin, new-unattended-commands-from-cloud-sessions-consent-row-in /model picker showing "+1 model" below the list after scrolling to the last model; the count now covers only the models below the visible rows
Probably gateway-config-validation-warns-about-empty-or-default-less, effort-migration-no-longer-special-cases-ultracode, sonnet-46-labelled-legacy-in-the-model-picker, model-picker-adds-sonnet-5-as-previous-sonnet-version, ultracode-becomes-an-onoff-row-in-the-effort-picker-instea, sonnet-alias-now-resolves-to-sonnet-55-claude-sonnet-5-5 /keybindings writing Backspace and Delete bindings for a footer action that does nothing into the generated keybindings.json
No entry names this footer:close) typing "x" instead of itself on the row of the agent you're viewing
No entry names this . not repeating text typed very fast (for example over ssh or in tmux) or pasted without bracketed paste, and leaving the prompt in INSERT mode after repeating a change with nothing typed (such as cw then Esc)
Nothing to match on dd on the last line or yy at the end of the prompt, where r or x would break or delete the image
Nothing to match on .claude/rules from outside the project being skipped without ever showing the external-imports approval prompt; a .claude directory symlinked from outside the project now asks for the same approval
Probably symlinked-clauderules-that-point-outside-the-project-now-n, external-import-warning-now-mentions-clauderules allowed-tools under managed allowManagedPermissionRulesOnly; only plugins from an official Anthropic source or a source that managed settings vouch for keep that pre-approval
Probably allowmanagedpermissionrulesonly-plugins-keep-allowed-tools, plugin-skill-allowed-tools-under-managed-only-policy-now-con, managed-permissions-policy-marketplace-npm-sources-must-pin, plugin-allowed-tools-trust-check-now-receives-plugin-provena claude plugin install leaving the plugin enabled and recorded when a dependency's version range could not be met
No entry names this {"decision":"block"} returned by Elicitation and ElicitationResult hooks being ignored; it now declines the MCP elicitation, as exit code 2 does
No entry names this SendMessage tool (such as by Claude Desktop) still being told to message other sessions with it
Probably peer-message-notice-drops-the-reply-via-sendmessage-hint-w, peer-session-messages-no-longer-tell-claude-to-reply-via-sen, loop-wakeup-guidance-is-aware-of-brief-mode-peer-list-tool /upgrade to users already on the highest Max plan; the warnings and /upgrade itself now point at /usage-credits when it is available
Probably usage-limit-auto-continue-text-is-remote-configurable-and-a, rate-limit-auto-continue-messages-now-come-from-remote-confi, max-20x-users-at-a-usage-limit-are-pointed-to-usage-credits /loop status updates in self-paced mode often not being shown because Claude wrote them only in its reasoning; Claude now writes each update, and the outcome when the loop stops, as visible text
Probably loop-self-pacing-prompt-reordered-stop-mentions-final-upda, loop-dynamic-pacing-prompt-reorders-confirm-and-arm-steps-p, schedulewakeup-loop-tool-results-now-tell-the-model-to-pos, loop-wakeup-guidance-is-aware-of-brief-mode-peer-list-tool, pr-steward-guidance-added-to-loop-and-pr-monitoring-prompts /ultrareview failing to upload the working tree when started from a git worktree that the Claude desktop app created on macOS or Linux
No entry names this data/users/ subtree, and added a "view" level to as_level
Probably artifact-write-db-if-version-now-required-on-writes-to-exis 431 Request Header Fields Too Large to every request from a sign-in whose identity provider lists many groups; it now accepts request headers up to 256 KiB
No entry names this /claude-api: hillclimb no longer spends rounds on prompt rewordings too small for the eval to measure, and an extra page you ask for beside report.html is built as one local file that loads nothing from the network
No entry names this /tasks, /copy and /hooks: the details after each name now line up in one column when they fit, and otherwise sit at the right edge
No entry names this claude plugin marketplace add to say when it replaces a marketplace already added under the same name from a different source, and how to undo it
Probably hidden-claude-plugin-marketplace-add-from-link-flag-for forceLoginMethod or forceLoginOrgUUID) and an API key, token or apiKeyHelper is configured: it now names the credential in use, where it is set, and how to remove it
Probably auto-mode-setup-checks-login-before-scanning-with-new-erro, detailed-error-when-managed-login-policy-conflicts-with-an-a MEMORY.md and recalled memory notes before they reach Claude
No entry names this claude remote-control: in a folder you haven't trusted yet, it now asks for workspace trust on the terminal instead of exiting
Probably claude-remote-control-help-notes-updated permissions.defaultMode still overrides it
No entry names this /effort (Tab, or /effort ultracode [on|off]): it no longer forces xhigh effort and stays on at any effort level
Probably effort-no-longer-preselects-ultracode, ultracode-becomes-an-onoff-row-in-the-effort-picker-instea ANTHROPIC_DEFAULT_OPUS_MODEL or modelOverrides: on the Anthropic API, the API now picks the model to switch to for each kind of flag, not the pinned model
Probably gateway-config-validation-warns-about-empty-or-default-less --allowedTools or an mcp_tool hook, even when CLAUDE_CODE_MCP_STARTUP_WAIT_MS is 0
Probably headless-mcp-pre-wait-now-tracks-servers-named-by-allow-rule, headless-first-turn-mcp-wait-now-holds-for-required-server /recap to decline with a short notice when it arrives relayed from a chat thread (your own included) or from a routine or webhook; typed in the terminal, the Claude apps, Remote Control, -p or an SDK host, it runs as before
Probably recap-refuses-requests-that-did-not-come-from-the-user-in-t /artifacts to show its filter tabs beside the title with one-word labels (All, Mine, Shared), using the same tab bar as /config and /plugin
Probably marketplace-add-failure-now-raises-a-typed-error-carrying-th, invalid-plugin-manifests-reported-as-specific-errors, turning-prompt-suggestions-back-on-in-config-resets-the-unu, marketplace-name-conflict-error-now-carries-a-structured-kin, new-unattended-commands-from-cloud-sessions-consent-row-in \\host\share path or a /net automount) unless it is on a mapped network drive added with --add-dir
Probably symlinked-clauderules-that-point-outside-the-project-now-n /model and Enter printing usage text into the chat instead of opening the model selector
Probably gateway-config-validation-warns-about-empty-or-default-less, effort-migration-no-longer-special-cases-ultracode, sonnet-46-labelled-legacy-in-the-model-picker, model-picker-adds-sonnet-5-as-previous-sonnet-version, ultracode-becomes-an-onoff-row-in-the-effort-picker-instea, sonnet-alias-now-resolves-to-sonnet-55-claude-sonnet-5-5 /feedback on Vertex, Bedrock and Foundry being refused after you pressed Send; the report is now saved on this computer, as the terminal does
Probably sdk-submitfeedback-can-save-a-feedback-report-locally-inste /mcp, /config or /settings command being shadowed by the extension's dialog
Probably mcp-step-up-re-auth-tells-the-user-a-browser-is-opening, turning-prompt-suggestions-back-on-in-config-resets-the-unu, new-unattended-commands-from-cloud-sessions-consent-row-in, interactive-mcp-reconnect-all-in-the-terminal-ui, mcp-reconnect-all-now-reconnects-every-server-instead-of CLAUDE_CONFIG_DIR in the claudeCode.environmentVariables setting to apply only when it is an absolute path, and passed it to terminals that continue the chat
No entry names this 1 added and 1 removed, of 218 lines, about 4 words, in the prompt 15 of 27 arms receive. 3 other prompts also changed. 1 of 27 tool descriptions changed. The appended system-reminder blocks moved: 1 line added.
Claude Code, interactive mode
153 documentation changes were recorded within 24 hours either side of this release, nearest first. The closest 12 are below. They're here because they happened near this release in time. That's not a claim that this release caused the edit, or that the page documents anything in it.
The 79 literal strings found in the bundle, with the number of entries that name each one. Picking one searches for it. A name is here because this build's code mentions it, which is not the same as it working or being finished.
What's wrong with this entry?