A hook that cannot run its program now reports a plain explanation#
When a hook's command exits with code 126 or 127, Claude Code shows a short explanation in place of the hook's error output
You can now turn off MCP task support by setting CLAUDE_CODE_DISABLE_MCP_TASKS. This release has 440 entries, and 284 of them are usable today. Accounts offered Life Sciences use cases get a new /use-case command to pick one. That choice is saved for later sessions. A new app:closeSession shortcut action lets you bind a key to close a session shown under session tabs. Programs that launch Claude Code can pass working directories exactly as given with the new permissions.workingDirectoriesAsGiven setting.
There are 12 entries in the build that are not switched on yet. A Wrap up tool would let Claude end a turn with a short recap and up to two next-step buttons. Claude Code now tracks messages for taking back a sent message with Esc, but the take-back does nothing yet. Hooks of type agent and mcp_tool can be read, but a remote allow list keeps them off and is empty by default. A spot is reserved for a live preview sharing dialog, with no way to open it yet.
Updates on macOS no longer delete the app bundle a running session is using. Saving settings no longer overwrites a config file that appeared while Claude Code was creating its own. Cancelling the theme picker no longer quits Claude Code. SDK hooks set to block on failure now stop the action as intended. Reading an unchanged file again no longer returns a short "file unchanged" note. The CLAUDE_CODE_LAZY_ENV_GETTERS environment variable is no longer recognised.
Written by our agent from the shipped bundle, not by Anthropic.
Adds CLAUDE_CODE_DISABLE_SUBAGENT_HANDBACK and CLAUDE_CODE_DEEP_TWILIGHT, and lists PARSED_WILLOW and DAPPER_CUPCAKE in more allowlists
ExtensionsA new ui.backdrop function lets plugins draw a blurred, tinted backdrop, and connecting clients can say they draw a Backdrop
ExtensionsClaude Code now has an app:closeSession shortcut action and a SessionTabs keybinding context for closing a session shown under session tabs
InterfaceRemote sessions gain new CLAUDE_CODE_* settings, such as a stall-check interval and a slow-skills watch, and CLAUDE_CODE_LAZY_ENV_GETTERS is dropped
/use-case command to choose a Life Sciences use caseAccounts offered Life Sciences use cases get a /use-case command and a startup dialog to pick one, saved for later sessions
Want the reasoning? Read walks the 51 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →14 more of these are in What probably matters to you, on page 1.
When a hook's command exits with code 126 or 127, Claude Code shows a short explanation in place of the hook's error output
Claude Code's guard on protected paths now catches Windows junctions as well as symlinks, and its messages say so
Shell commands whose nested parts contain comments, heredocs or unbalanced brackets are now marked too complex to check
On macOS, Grep and Glob open the approved folder, confirm it is the same one, and search inside it, or refuse with an error
Listing scheduled jobs now opens with a notice when scheduled tasks are turned off in the session
Claude Code's built-in gateway guide says a Bedrock 400 error reading exactly "Input is too long." must reach Claude Code unchanged
When loading a plugin, Claude Code can now skip a skill or theme file that fails a check and log an error instead
Expanding ${...} references in a template now stops at a size limit and returns nothing when the result would be too large
Unclear Which templates use this expansion and how large the limit is are not stated.
In a stricter mode, a search that is cut short now fails with a message that more matches may exist, instead of returning partial results
Unclear Which of Claude's searches run in this stricter mode is not stated.
The marker at the start of a continued tool result line is now always hidden from screen readers and no longer takes a custom spoken label
When long output is cut short, the note pointing to the saved copy can use a label other than "full output"
In some cases, logs for HTTP hooks no longer show the URL, and their errors say only that the request failed
Unclear It is not stated what condition decides when the address and error text are hidden.
The stand-in for the gh command now tells Claude its git clone hint works on github.com only, with no form for GitHub Enterprise hosts
On Linux, the warning about glob patterns in permission rules no longer runs on every rule
Unclear Which permission rules now skip the glob warning is not clear.
When a Grep search hits its time limit, a notice is placed at the top of the results so Claude knows they are partial
Max users now see 'Upgrade your plan for higher session limits every month' in the spend-limit prompt, instead of an offer to upgrade to Max
A connection blocked by your network or region now shows 'network or region blocked - check VPN or network', and one error no longer lists claude assistant
Unclear It is not clear whether claude assistant can now be combined with those options or no longer goes through this check.
The fixed 'Check your network connection, or sign in again with /login' message is now worded for the kind of failure
When suggesting an always-allow rule, Claude Code now ignores a trailing port number such as :8080 in the rule
On Windows, a sandboxed command made too long by folders added later now gets its own error with suggested fixes
Claude Code now refuses to auto-approve rsync, ssh, scp, sftp and gcloud compute ssh when a value could slip text into a shell command
Unclear Whether this check is switched on depends on remote settings whose state is unknown.
After the subagent setup check fails, Claude Code waits about a day before running it again
Claude Code now skips refreshing your login after a "not authorised" reply when that reply belongs to the request itself
A /model switch sent to a cloud session can now wait until that session's worker has started before it takes effect
Claude Code can now check plugin workflow .js files before reading them, skipping and logging any that fail
Unclear It is not clear what the check looks at or when it runs, so it is unknown which files are skipped.
The short summary mode for subagent progress now applies in a case it used to skip
Unclear It is not clear what the removed condition was, so which situations now get short summaries is unknown.
Claude Code can now refuse commands because a makefile or awk script cannot be checked, or because of where git looks for its programs
Unclear It is not clear whether these refusals are active or what switches them on.
Some file writes that go through a symlink now follow a chain of links up to 40 deep instead of only the first
The startup tip about naming conversations with /rename now only needs more than 10 startups, so more people will see it
/upgrade description no longer names the Max plan#The /upgrade command now reads "Upgrade your plan for higher rate limits and more Opus" in the command list, instead of naming Max
When Claude Code blocks a hook, it now has reasons for scripts that may run through csh or tcsh, makefiles and awk scripts
With CLAUDE_CODE_USE_FOUNDRY set, recognised errors are now attributed to Azure, as errors were already attributed to AWS or Google Cloud
The search timeout message no longer states a fixed 20 or 60 seconds; Claude Code now works out that part of the wording
Unclear It is unclear whether the search time limit itself changed or can be set, or only how the message is worded.
Claude Code now checks more options and host names in ssh, scp, rsync, rcp and sftp commands before allowing them without asking
Results from Claude Code's MCP server tools now include memory figures for its background process, and its status report drops several fields
Unclear It is not clear whether these memory figures are sent every time or only in some modes.
The error for a reserved plugin name now lists the forbidden prefixes and the rule about "official" with "claude" or "anthropic"
The footer hint shown after pressing the exit key once now talks about leaving the session
When an MCP server needs you to sign in again, the message can now suggest something other than running /mcp, depending on the server
Unclear It is not known what the other hint says or which servers get it.
For some MCP servers, a failed mcp_read_resource now returns a plain "could not read the resource" message without the underlying error
Unclear It is not known which servers get the plain message in place of the detailed error.
When a task is created, the result now includes its description as well as its id and subject
The message shown when a shell command is rejected for how a value is quoted is shorter and drops its opening explanation
After compaction, the note about missing conversation now says part of the earlier conversation was too large to include
The error for a hooks folder that is a link now says it may be a symlink or a Windows junction
Unclear It is not clear whether Windows junctions were refused before this release or whether only the error text changed.
When reconnecting or switching an MCP server on or off fails, the log now names the server, and the error is passed on raw or cleaned up
Unclear When the error is passed on raw and when it is cleaned up is not clear.
The warning for a linked .claude folder now says the link can be a symlink or a Windows junction, and that nothing in it was read
When a plugin file is skipped because it is not a regular file, the warning now adds that a FIFO or a directory is never read
Tab headers in Claude Code's screens are no longer padded out to the full width of the terminal
Plugin validation now warns about a link on the path to the MCP servers file whether that link is a symlink or a Windows junction
A note shown in remote-host sessions about two copies of a project now says "copy" instead of "checkout"
While feedback is sending, Esc cancels it, and once it is sent you can press c to copy or close the dialog
A search that stops early, most likely at its time limit, is now reported as incomplete, and --permission-mode is always passed for a set mode
In rewind, the description for the summarize option now appears only when a message is selected
User messages can now carry a turnEffortCap that the relay passes on if valid, and print mode waits for queued messages before closing input
A running Claude Code app bundle on macOS is now locked so updates skip it, and old bundles are cleaned up
Claude Code no longer overwrites a config file it failed to read, and logout now fails visibly when it cannot save the config file
Unclear It is not settled whether the protection for the main config file needs CLAUDE_CODE_ENABLE_CONFIG_MISSING_READ_GUARD set, or applies without it.
Preview tunnels now correctly register when the local side closes, and their status now includes more state
The promo credit check keeps its saved answer when the login matches and now records used-up and approaching-limit notices for the offer
Cancelling the theme picker now always closes the preview and goes back, and its help text always shows under the heading
Workflows now track which agents started and, when a local workflow ends, mark leftover steps with the final status before saving output
When looking up a tool from an MCP server supplied through the SDK, Claude Code now keeps waiting until that server has connected
${ variables in values rather than names#Claude Code now looks for ${ placeholders in the values of MCP environment variables and headers, not in their names
Unclear It is not clear what Claude Code does differently with an entry once it finds ${ in the value.
When an error has no Retry-After header, Claude Code now reads the wait time from the error itself before giving up on it
When Claude Code rechecks its MCP servers, it now keeps ones declared in the current folder and restarts one whose declaring folder changed
Unclear It is not clear which sessions this recheck behaviour applies to.
When deciding what Esc or Ctrl+C cancels, Claude Code no longer treats an agent you are viewing as background work
Unclear It is not clear what Esc or Ctrl+C now does differently when you are viewing an agent.
The background task list at the bottom of the screen now skips entries that repeat an agent already finished or stopped
If the sandbox failed to start before, the next sandboxed command now waits for a fresh start attempt
Unclear Whether this retry runs for everyone or only behind a switch is not clear.
When a saved conversation ends in file snapshots after the last message, Claude Code no longer treats a snapshot as the point to resume from
Skill sync now moves an existing skill aside instead of deleting it, puts it back if the update fails, and reports local disk errors separately
A resumed subagent now remembers which model its effort level was picked for and works out its effort against that model
Claude Code no longer refuses to save its config just because the config file it re-read turned out to be missing
When Claude Code rebuilds the task list after resume or compaction, subagent tasks whose ids clash with existing ones are now skipped
When a synced skill fails to unpack or be saved locally, Claude Code holds it back in later sync rounds instead of retrying it every time
Claude Code now rechecks each settings file once its watch starts and reloads any file that changed after it was first read
When a saved or sign-in-needed MCP server fails after connecting on demand, Claude Code now clears its saved state instead of only logging a warning
Sign-in now warns if it could not remove the old account or API key from the config file, and sign-out only reports success once that file is saved
Messages to a deleted team are no longer written, team folders are removed more reliably, and old shutdown approvals are ignored
Resume now picks up from a real message rather than a hidden one, sessions record an owner, and scheduled tasks follow file links and apply size limits
Unclear It is not stated what the new session owner value changes for a user.
When a page token is given, the MCP list call now passes it on, so long lists can be read one page at a time
The DISABLE_PROMPT_CACHING_* variables now also turn caching off for aliases and variants of their model, not only an exact name match
On Windows, blocked paths added after the sandbox started can now be applied to each sandboxed command, and a command is refused if they cannot be worked out
Unclear Whether this behaviour is switched on when the server sends nothing is not known.
Reading more events than expected from a remote agent no longer causes an error when they are saved locally
When a process Claude Code started times out, it now logs why and sends the stop signal to that process and its children only once
Deleting a team onboarding guide that was already removed now reports it as already gone, and other failures show a clear error
Claude Code's refresh of files it tracks by name now also picks up entries whose uploaded file no longer exists
Unclear It is not clear what happens to an entry whose upload was deleted.
Claude Code now drops every waiting permission request whose tool call was already answered, with no exception for certain tools
A cancelled hook is now labelled 'timed out' only when it is not a callback hook
MCP tools missing a server name or tool name are now left out of what Claude sees, with a one-time warning
Unclear Whether this filtering always runs or depends on a remote switch is not clear.
If the server refuses an update listing switched-off MCP servers, Claude Code now retries it later with growing waits
When queued messages are merged, those that came from a plugin are now left out of the replay
When reconnecting a connector fails with a not-connected error under an earlier name, the message now names the connector being reconnected
Closing the feedback dialog after submitting now closes it quietly instead of posting "Feedback / bug report cancelled"
MCP servers dropped by a limit are now marked disabled instead of staying pending, and servers are not listed twice
--setting-sources now carries over to sessions Claude Code starts#Sessions Claude Code starts now keep an empty --setting-sources value when you passed one
When reading a PDF, Claude Code now takes the largest page count it finds instead of the first one
6 more of these are in What probably matters to you, on page 1.
The check deciding which MCP servers may record an owner with a legacy key was reworked around a new enforcesGrants value
Skill proposals can now also be enabled by a server-side switch combined with an account check, alongside the two existing routes
Unclear It is not stated which accounts the new account check covers.
Several small internal additions, including a backdrop UI action and extra effort and auto mode details, with no visible feature yet
Claude Code adds a remote feature switch that is off unless turned on, and a sign-in item in its diagnostic list
Unclear What the feature switch controls is not shown.
The shell command checker has an option, off by default, that changes how it rejects commands with backslash-escaped spaces
10 more of these are in What probably matters to you, on page 1.
When a chat attachment is deleted, its local copy can be removed and Claude is told the image is gone and must not recover it
Published verbatim by Anthropic for v2.1.317. 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 87 bullets, 14 name something an entry on this page also names, 26 name something no entry here does, and 47 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.
/schedule when a new cloud scheduled task gets connectors you did not ask for, with how to remove them
No entry names this onFailure: "block" for Agent SDK hook callbacks, so a callback that fails blocks the action instead of letting it run
No entry names this anthropic.plan, anthropic.seat_type, anthropic.provider and anthropic.custom_base_url to OTel metrics, events and spans
No entry names this GET /v1/organizations/analytics/cost, for reading past spend over a date range in total, per developer, per day or per IdP group
No entry names this admin: set, kept for admin.identity_retention_days, which the cost report groups by
No entry names this CLAUDE_CODE_DISABLE_NESTED_SESSION_ID: set it to 1 on a self-hosted runner to have claude -p run inside a session use that session's ID and transcript, as in earlier versions
Probably new-session-writes-lost-system-message-and-full-disk-exit-ha, nested-session-id-opt-out-env-var-added claude auth status exiting before a slow token refresh was saved, which could sign you out on the next run
No entry names this #95822Short-lived commands (`claude auth status`, `claude --bg …`) start an OAuth refresh at init and exit without saving it, leaving the profile with a spent refresh token Open
effortLevel setting being ignored by sessions that an app starts ahead of time and then opens in the project, such as new sessions in the desktop app's Code tab
No entry names this #104336[BUG] Desktop app (Windows): Code-tab sessions sometimes start at Medium effort, ignoring the High pick and the project's effortLevel Open
#93735Project-scope effortLevel in .claude/settings.json is never applied in desktop-app (Code tab) sessions; effective effort varies per session with no settings change Open
claude --from-pr reporting "No conversations found" in projects with many sessions when the linked session was older than the first page
No entry names this /loop wakeups sometimes not being scheduled when Claude left a field out of its request
No entry names this /schedule leaving a cloud scheduled task's next run time and link out of its results after creating or updating it
No entry names this claude -p exiting 0 when a full disk or quota lost its transcript or ~/.claude.json writes; it now prints an error and, in text and json output, exits 1. Full NFS exports may be missed
Probably new-session-writes-lost-system-message-and-full-disk-exit-ha --setting-sources
Probably added-folder-plugins-follow-setting-sources, runner-passes-empty-setting-sources-when-the-arg-is-explic /team-onboarding guide when asked to delete one without naming which
No entry names this /team-onboarding guide was deleted when the server refused the delete
No entry names this AWS_BEARER_TOKEN_BEDROCK when their env config sets it to empty; the variable is now unset, so the server can use the machine's own AWS credentials
No entry names this DISABLE_PROMPT_CACHING_OPUS and DISABLE_PROMPT_CACHING_SONNET having no effect on [1m], other-region and undated spellings of the default model
Probably prompt-caching-disable-env-vars-now-compare-models-by-identi /artifacts and the Artifact tool's shared list showing no shared artifacts when you have 200 or more of your own
Probably get-artifacts-route-added-to-an-allow-list https:// endpoint through a proxy never being sent when they started while another export was still in progress
Probably only-https-origins-accepted-for-url-origin-helper, fetching-the-servers-certificate-chain-to-repair-tls-verifi http:// endpoint
No entry names this OTEL_EXPORTER_OTLP_TIMEOUT up to 30 seconds
Probably otlp-proxy-tunnel-agent-and-timeouts /remote-control answering "Unknown command" instead of saying that Remote Control is turned off by the disableRemoteControl setting
Probably remote-control-status-message-drops-upgradenudge, remote-control-slash-command-can-be-blocked-by-managed-polic claude -p run inside a cloud or self-hosted runner session sharing that session's ID: it wrote into the session's transcript, and a restart could resume the wrong conversation
Probably new-session-writes-lost-system-message-and-full-disk-exit-ha claude -p run inside a cloud or self-hosted runner session generating a title of its own and sending it to that session
Probably new-session-writes-lost-system-message-and-full-disk-exit-ha cloud_credential_error
No entry names this /design-sync to say up front when your design system has moved to Claude, and stop before building instead of failing at upload
Probably design-sync-messages-for-design-systems-that-moved-to-claud --chrome --debug) ahead of --resume
Probably resume-hint-can-include-launch-flags-file-writes-gain-creat plugin-authoring skill to offer once, after a mod you built works, to help share the mod
No entry names this /usage showing a developer's own spend limit as 100% used after their group's pooled budget ran out
No entry names this CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS
No entry names this claude remote-control a fork of "Name (fork)" is "Name (fork 2)"
Probably fork-name-fallback-for-session-titles-removed chat.fontSize is raised
No entry names this ultrathink not raising effort for its turn or showing its rainbow when telemetry is off
Nothing to match on claude remote-control, when you sent it within a minute of your previous message
No entry names this A model matched these bullets to the GitHub issues they fix, so a link can be wrong.
1 prompt changed.
Claude Code, interactive mode
6 prompt changes in this release could not be quoted from the build, so no entry on this page describes them.
263 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 69 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?