project_write now tells Claude to use the path where it read or wrote a file#
project_write's error and local_path guidance now tell Claude to give the original path of a file it read or wrote, not a shell-made copy
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.
project_write's error and local_path guidance now tell Claude to give the original path of a file it read or wrote, not a shell-made copy
When a skill fails to sync, Claude Code now waits longer after each failure before retrying, instead of retrying it constantly
The hint telling you how to resume a session can now include the command-line flags you started Claude Code with
A permission prompt answered through a remote connection can now be closed as denied, keeping the reply's message and interrupt choice
SDK error kinds now include network_edge_blocked and malformed_tool_use_exhausted, and empty_completion now covers repeated retries
Behind a server switch, the sandbox refuses to start if a protected file has more than one hard link, blocking even dangerouslyDisableSandbox
Unclear What the check does when the server sends nothing is not settled, so it is unclear whether it runs for you by default.
When auto mode can't review an action because the conversation is too long, Claude Code marks that denial as self-mending
When Claude Code compacts a long conversation, it now drops instruction attachments from before a cutoff in the messages it keeps
Before a Claude in Chrome action runs, Claude Code now checks the site against your deny rules and refuses the action if one matches
When a remote session resumes, an unsent prompt can now stay in the conversation marked as a placeholder instead of always being removed
Headless and SDK runs gain a step that writes each piece of streamed text immediately, plus a new CLAUDE_CODE_PLAIN_DELTA_TAKE_AT_SOURCE variable
Unclear It is not clear whether setting CLAUDE_CODE_PLAIN_DELTA_TAKE_AT_SOURCE changes how text is streamed or is only recorded in the report.
The sandbox adds write blocks for relative paths through symlinks, for .git/remotes and .git/branches, and a pin on git info folders
The agent proxy relay now makes new connections wait once too many are busy, and may refuse them with a 429 or 503 error
Unclear The default limit, and whether the limit is applied by default, are not stated.
claude mcp serve --transport http now sends the HTTP hooks its own session asks it to send, rather than refusing all of them
When gh is unavailable, its stand-in now turns repo create into a gh api call, with a warning that the proxy may refuse it
Behind a switch that defaults to off, some HTTP MCP servers no longer count fatal connection errors toward the three-error disconnect
Unclear It is not stated which server addresses pass the URL check, so it is unclear which HTTP servers this covers.
In remote sessions, some held-back messages now fail without a warning, and auto-titling skips a session whose name was changed
When the service turns a request away because it is overloaded, background sessions now stop at once and persistent sessions retry
Unclear It is not stated when a response counts as turned away for overload, or whether this behaviour applies to everyone.
If a request only succeeds without auto mode's safety header, Claude Code stops sending it and turns off the server-side action check
Some running agent and teammate rows can now show only 'running' instead of an elapsed time and token count
Unclear It is not stated which agents or teammates get the plain 'running' label.
DesignSync now tells you when a design system has moved, normalizes typographic characters, and errors on file names the server can't keep
Reading an MCP server's directory is now allowed without asking when the listing matches what the conversation already has
The ultrathink boost to xhigh effort can now be triggered one more way, and on Linux Claude Code can search for files by how their names end
Unclear What the second input condition that triggers the ultrathink boost is has not been identified.
A Claude Code started from inside another no longer takes the parent's session id, and CLAUDE_CODE_DISABLE_NESTED_SESSION_ID brings it back
Unclear What a user sees differently when a nested session has no inherited id is not shown.
Requests turned away before any work is done now raise a RouteTurnedAway error with retry timing, shown as "The API is temporarily unavailable"
Looking up a conversation by its name in /resume now always runs instead of depending on a feature check
Pressing Enter while a cloud session is still being set up now queues your message to send once the session opens, instead of showing 'Not sent'
A prompt typed while a cloud session is starting is kept as a draft and sent automatically when start-up ends, or held back with a reason
Unclear When a cloud session starts with a prompt that this applies to is not stated.
Claude Code now skips plugin, skill and command folders that are symlinks or Windows junctions instead of following them, and logs a warning
When an mcp_status live reply would be too large, it drops tool lists and server details and sends a toolCount instead
Unclear Only the description is known to have changed, so it is not clear whether oversized replies already shrink in practice.
Programs using --await-initialize now get a distinct initialize_not_first refusal and a cause field saying what went wrong
Plugin MCP server, skill and bundle paths are now checked against the plugin's own folder, with clearer errors when they point outside it
Unclear It is not clear whether the new check applies to every plugin or only to plugins that set a particular option.
Claude Code no longer treats a folder as a git project root when it sits in a bare repository or a gitdir layout, and says so
Unclear What Claude Code does with a folder placed in this separate category, instead of treating it as a root, is not stated.
The local HTTP MCP server for plugins now expects its secret as a Bearer token in the Authorization header instead of in the URL path
CronList now gives nextFireAt, the next time a scheduled job will run, only when a check passes, where before it always did
Unclear It is not clear what the check is, so readers cannot tell when the next run time will be shown.
When a session resumes, a permission request that was set aside is now taken over only if the session's answers are not set to strict
Over a connection that stores its messages, a rejected first-party sign-in now shows "Connection failed" instead of naming the sign-in that fixes it
When your organization's policy cannot be checked for artifacts, the error now says to sign in with a personal account on a paid plan
Unclear Whether more plans are now allowed or only the wording changed is not shown.
When looking up which permission rules match a tool call, Claude Code now skips certain allow rules it previously included
Unclear Which allow rules are now skipped is not stated.
The login notice now reads "Your Claude subscription will be used by Claude Code." without naming Pro or Max
If Claude proposes improving a skill that isn't listed because it was proposed as new and never saved, it is told to resubmit it as new under the same name
The artifacts list's 'All' filter now hides items marked to stay out of it, and closing the list cancels any operation still running
A status message now reads "not applicable to individual subscription plans" instead of naming Pro and Max accounts
On macOS, Claude Code no longer sets up the ClaudeCode.app helper for some installs, depending on where the program is
Unclear Which installs skip the helper app is not stated.
The message for users already on the top plan now says "highest individual plan" instead of naming the Max plan
When setup has already chosen the claude.ai login, it now says "Claude subscription (claude.ai account)" instead of naming Pro/Max
Claude is now told that a website asking automated clients for contact details is no reason to use your email address
--allowedTools are now read as allow rules#Rules passed with --allowedTools are now read specifically as allow rules, which may change how some rules are understood
Unclear It is not clear which --allowedTools rules, if any, are now read differently.
When Claude Code stops a process, it now signals the process's whole group and the child processes it found, falling back to the single process
When an MCP server that failed comes back, Claude is told its tools can be called again and an earlier error no longer applies
The logo on the home screen now fades out in two steps once you leave it and stays hidden for the rest of the session
At the verbose log level, the API request detail line now includes a stated_effort field
When Claude Code stops a process, it now also stops the child processes that process started
When memory runs critically low, Claude Code now only stops shell commands that were sent to the background, not ones in the foreground
Four new error reasons explain when the proxy for outbound traffic is too busy or refuses connections, and tell you to run fewer downloads at once
When a forked conversation has no title, Claude Code no longer names it after the original with "(fork)" added
ALL_PROXY is used and to proxy updates#Claude Code now treats ALL_PROXY differently when no other proxy variables are set and reapplies proxy settings when they change
Unclear It is not settled exactly how traffic is routed when only ALL_PROXY is set.
Tool permission requests now also carry the Chrome site involved, when there is one
A 403 error caused by the network you connect from now says the request was blocked before reaching Anthropic and that signing in again won't help
Claude Code can now skip settings files in added folders when the setting sources they belong to are not enabled
Unclear It is not clear whether this filtering is in use yet or depends on a switch.
A set-aside permission prompt now stays behind its note while the tool name matches, even if it is old or the tool's input changed
Claude Code now explains when --permission-prompt-tool cannot approve a server's tools because of a clash over the server's name, and how to fix it
Claude Code's local proxy now listens on ::1 as well as 127.0.0.1, so tools that resolve localhost to IPv6 can reach it
Claude Code now warns at startup when an --allowedTools or permissions.allow entry repeats a rule that is always allowed already
Claude Code's file watcher now notices when a watched folder is removed, renamed or replaced, and switches to regular checking
After certain error responses, or a request that gets no reply in time, Claude Code drops its idle connections to that server and opens new ones
When the resume list is filtered by pull request, Claude Code keeps loading older sessions in the background until it finds enough matches
Claude Code now skips plugin folders and entries that reach outside their allowed location, reporting a path-traversal error
if filter#Attached images now record a sha256 fingerprint and size, prompts carry an ultrathink signal, accounts carry a seat tier, and the hook if filter widens
Unclear What the new image, ultrathink and seat tier fields change for you, if anything, is not stated.
The list of past conversations now always updates when your saved conversations change, and shows 'Loading conversations...' in more cases
On certain certificate errors, Claude Code reads the server's certificate chain and restores a missing system certificate if one is needed
Unclear It is not clear whether this repair is switched on for everyone or depends on a setting.
When Claude Code runs as an MCP server, its shell tool can keep a working directory between calls and refuses a command if that directory is gone
Unclear It is not clear how a client connected to mcp serve asks for the starting directory.
Claude Code now treats the API's 529 "overloaded" error the same way it treats a 429 rate-limit error
Unclear It is not clear whether this means a 529 error is now retried automatically or handled some other way.
The resume command Claude Code prints when you exit can now include the flags you started with, and file saving gains a no-overwrite mode
When a permission update switches the session into plan mode from another mode, Claude Code now clears any existing plan document
Claude Code now drops kept-open connections after most 5xx server errors, and drops ones opened under different TLS settings
Unclear It is not clear which requests use this new connection handling, or what setting CLAUDE_CODE_DISABLE_HTTPS_AGENT_KEEPING does to it.
The checker that decides which shell commands need your approval gains rules for csh/tcsh, makefiles, awk, loops, zsh disable and unexpanded ~
The plugin symlink warning now spells out when --plugin-dir, installed plugins and project skills follow a symlink
$ values are now treated as unreadable#The shell-command reader now rejects more commands that contain $ values, so those commands will ask for permission
Unclear Which commands the new check matches is not clear.
When rewriting deny-rule paths, the sandbox can now leave paths under /dev spelled as they are
For hooks with a type label, warnings and errors now leave out the command text and say its program could not be started
Unclear It is not clear which hooks get a type label, so you may not know whether your own hook errors are affected.
head command cut a file's output short#For a plain head command on a file, Claude Code now compares the lines returned with the number asked for to tell if the output was cut off
Unclear It is not clear what Claude Code does differently once it knows the output was cut short.
A few internal checks now apply in fewer cases, and the setup wizard no longer marks an existing key for use
Unclear It is not clear what the new conditions check or which folders and entries are now skipped.
Claude Code now also checks a shell command's raw text against your deny and ask rules, so a match blocks it or asks you first
Unclear The further condition that decides whether this text check runs is not stated.
On Windows, a command that is too long for the sandbox now gets a clearer error, worded for whether added deny rules or the command caused it
Warnings about hooks in cloud sessions now use a local name for the hook, or say "its program" when the names differ
The command reader now understands zsh short loops, commands after [[ ]], and the repeat, noglob and nocorrect prefixes
If 'send now' gets no answer from a remote session, Claude Code shows a notice and gives your queued lines back
Added and removed lines in diffs now always use the regular diffAdded and diffRemoved theme colours, never the dimmed ones
Claude Code adds a way to claim a direct search slot, changes how idle network connections are cleaned up, and drops overage from group pool usage
Unclear It is not clear what any of the three changes does in practice, including whether you will see group pool overage anywhere.
Claude Code's proxy troubleshooting guidance now covers 429 and 503 responses and suggests running fewer downloads at once
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
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
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?