Credit promotion check now also looks at usage limit notices#
Claude Code no longer treats you as eligible for a credit promotion while a used-up or approaching usage notice is set
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 →10 more of these are in What probably matters to you, on page 1.
Claude Code no longer treats you as eligible for a credit promotion while a used-up or approaching usage notice is set
For some check-style commands, the Bash tool can now keep a copy of the command's input and add a note about it to the error output
Unclear It is not clear whether the internal switch is on by default, so this may not happen for you.
Claude Code now times tool-schema building, message preparation and request building separately for each turn
Headless Claude Code now records what happens to repeated user messages, plus new records about MCP requests and per-turn effort caps
When shutdown stops a program Claude Code started, that step no longer sends SIGTERM to it and its children; it schedules a forced stop instead
Unclear Whether SIGTERM is still sent somewhere else before the forced stop is not known.
When compaction takes its fallback route, it now notes which skills loaded from MCP servers were in use
Remote sessions now track sent messages and turn endings for taking a message back with Esc, and hold a queue of lines to send at once
Unclear It is not clear whether either action can be used from the interface yet.
When a saved session names an owning account, Claude Code now restores that owner when the session is reopened
Hosted cloud sessions can now record programs still running after a shell command ends, without stopping them
When Claude Code relaunches itself, it passes a cleaned-up copy of your original command-line options on so the resume hint can repeat them
Setting up a remote session can now pass along the location of synced skills
When recovering a resumed remote session, Claude Code now sorts errors by kind to decide whether to step aside for your prompt
When a hook stopped a group of tool runs, resuming the session can treat it as a deliberate stop, behind a remote switch that is off by default
The session log can now hold a session-owner entry, and print mode has a new exit reason for a full disk
Unclear It is not clear what the session-owner entry is used for, or whether print mode actually exits when the disk is full.
CLAUDE_CODE_WORKER_EPOCH is passed along in more kinds of session#Claude Code now passes on the CLAUDE_CODE_WORKER_EPOCH value when either of two conditions holds, where before only one condition counted
Unclear Which kinds of session the two conditions cover is not stated, so it is unclear whether a given setup now picks up the value.
The remote file storage reader can now ask for a folder's full contents and check whether a file exists at a path
Unclear It is not clear which Claude Code feature uses this remote file storage, so it is not known when a reader would be affected.
Cancelling with Esc now also clears messages that could be taken back, and the machines section of the tool prompt needs two checks to pass
When a remote session worker fails to register, Claude Code now records the HTTP status and whether the server answered at all
Remote session registration now says how tools are hosted, and error reports now include the system error number
When clearing status details from a remote session's information, Claude Code can now drop status fields that were set to empty
Claude Code reworked how remote sessions track a running reply, and the 'You took your first message back' notice now covers one more case
Unclear It is not clear what you will see differently, or what the second situation for the 'took your first message back' notice is.
When shortening file-read results in saved transcripts, Claude Code now strips its own reminder notes before comparing content
When Claude Code trims the end of a saved transcript, it now skips unreadable or unsuitable entries when choosing where to cut
Unclear What this changes for someone resuming or reading a session is not shown.
When a request is refused, Claude Code's internal reporting now includes cybersecurity verification details, under a new reporting category
Claude Code now records whether a turn's ID was kept or dropped in cloud browser sessions, for diagnostics
The result record now splits a turn's processor time and elapsed time across activities such as streaming, tools and waiting between requests
Claude Code now records whether a Drive download was kept in the conversation, saved as text, cut, or not read
Claude Code adds report names for refusing on old bash versions and for plan docs, and reuses its 'not available' refusal for more features
Claude Code adds report names for composing permission rules, connector file upload, a remote session record and a widget context hint
When a computer connects its tools to a cloud session, the usage report now records both sides' interface versions and whether they fit
When Claude Code fetches context for a project, its usage report about a blocked fetch can now include where extra detail came from
When Claude Code starts a subagent in the foreground, the details it records about that launch now include that it was a foreground launch
Claude Code now records a start event for a shell command only when a per-session check passes, and otherwise skips it
Claude Code now sends a one-time usage report when an MCP server's key moves, and MCP server settings gain a displayName field
Unclear Whether displayName is something you can set yourself, and what causes a server's key to move, is not stated.
A failed worktree move-aside now names its step, and unsupported-protocol remote tool errors are reported separately
A new measurement of repeated shell commands runs for a sample of sessions, set remotely and defaulting to 10% when unset
When a tool call waits for an MCP server's tool, Claude Code's usage data now records that server's state and connection type
When output length is unknown, Claude Code no longer records when the last part of a reply arrived
Claude Code adds several internal fields to its connection, prompt, session and hook handling, with no visible change described
Unclear What these fields change for anyone using Claude Code is not known.
Claude Code now checks two remote switches the same way, and both are treated as on when the server sends nothing
Unclear What either switch controls is not stated.
A new switch that falls back to on gates an unnamed feature, next to a foreground-launch check that answers yes when it errors
Unclear It is not stated what feature the switch controls.
Claude Code now keeps a cyber-refusal verification detail in its state and lists several new remote feature switches
Claude Code now has a small check for a new remote switch, which counts as on when the server sends nothing
Unclear Nothing shows what this switch controls or where Claude Code uses it.
The value Claude Code uses for one remote setting when the server sends nothing changed from 0 to "/cwd"
Unclear What this setting now controls is not stated, so what the new fallback changes is unknown.
Claude Code now records when it declined to create its global config file during a run, and when a fallback read found no file
The settings manager now remembers its first read of each settings file and the changes Claude Code itself writes before it checks again
A list holding command.describe, env.get and prompt.section now also holds tool.describe, and a list of input sources gains a mid-turn prompt entry
Claude Code now takes the site part of a web address only for http and https links, and ignores other kinds in two places
__proto__ key is now skipped when Claude Code measures a structure's size#When measuring how large a piece of data is, Claude Code now skips a key named __proto__ and counts it as left out
/mnt/project path now comes from its own helper#Claude Code now returns the fixed path /mnt/project from a dedicated helper; the path itself was already in the previous build
Unclear It is not clear what uses this path, or whether it changes where Claude looks for your project files.
On Linux, Claude Code has a new check that opens a folder without following symbolic links and then tests a name inside it
A path lookup now refuses to pass through a symbolic link folder, and stopping processes no longer signals one process twice
Claude Code sends where memory extraction happened at the end of each turn, and resends it at shutdown if it was not delivered
A remote switch used in the desktop app and on claude.ai now stays inactive when any tool matches an extra test, besides the MCP tool name test
A queued message can now carry a short reason label for why it fired, and a badly formed label is quietly dropped
Chat relay now needs a further condition to pass, not just at least one place to relay to
Unclear It is not stated what the added check tests, so it is unclear when chat relay now stays off.
Claude Code now records when a remote tool host reports it is draining, and treats some related denials differently
Unclear What noting a draining host or the denial handling changes for a session is not clear.
Before approving a tool call served remotely, Claude Code now checks the session's interface and refuses with unsupported_protocol if it does not fit
Unclear What makes a session's interface fit or not fit is not stated.
The VS Code settings gained a new setting that the server can switch, and nothing yet shows what it does
Unclear It is not known what this VS Code setting controls.
BUN_GC_TIMER_DISABLE is set#Claude Code's startup memory record now also notes whether BUN_GC_TIMER_DISABLE is set, next to MIMALLOC_PURGE_DELAY
The empty starting set of usage statistics no longer holds the longest streak's start and end dates or the date of the last session
The value Claude Code uses for one remote setting when the server sends nothing changed from "rules" to "id"
Unclear What this setting controls is not stated, so what the new fallback changes is unknown.
The information Claude Code sends when a session starts now includes syncedSkillsPath, ultrathinkTypedRaises and a transportPersists capability
Unclear What these three fields mean in practice is not known.
Listing artifacts now accepts page_token to fetch the next page, and tool-result details gain an optional built_in_tool field
Unclear It is not clear whether the tool actually accepts page_token yet, or only its description mentions it.
Messages a plugin sends can now carry a plugin_prompt field with the plugin's name and text, so apps can show them under the plugin
Unclear It is unclear whether any plugin currently causes this field to be sent.
When settings from an embedding app are dropped, Claude Code now records why, such as admin managed settings that do not merge
For programs that drive Claude Code, some control messages can now be held back and later processed, and a list result gains next_page_token
Unclear It is unclear what triggers the hold and which list returns next_page_token.
Tool results sent to SDK programs can now carry an optional field naming the built-in Claude Code tool that produced them
Unclear Which built-in tools fill in this value is not stated, so an SDK program cannot yet rely on finding it for any given tool.
When an interrupt request gets no send-now value back, the result now reads "interrupted" instead of "stopped"
The check for whether an MCP server's sign-in was refused now has extra conditions, including a remote check
Unclear Whether MCP servers are now shown as needing sign-in more or less often is not shown.
Claude Code now removes displayName from MCP server settings unless the server is of type claudeai-proxy
A failed MCP sign-in from a callback link now logs the full error, and the program that asked gets either a generic message or the full text
When an MCP tool call fails, Claude Code now works out the error code and message in one shared step instead of building them in place
Unclear It is not clear what wording Claude now sees when an MCP tool call fails.
Claude Code now builds the definitions it uses to check MCP messages the first time each one is used, rather than all at startup
If saving your list of switched-off MCP servers was refused, Claude Code now logs this when the session closes
A new step turns references to tools inside a tool result into a plain text list of those tools, for models that are not exempt
Unclear Whether this rewrite step is actually used in this build is not known.
Requests whose tool list has server-side tools with no input description can now be set to allow no tool calls
In one mode, Claude Code now skips sending tool descriptions from a recorded copy unless a remote switch is on, and that switch defaults to off
Some tool errors in a turn that did not finish are now marked interrupted instead of failed
Unclear It is not settled which errors are now marked as interrupted.
Claude Code now turns on citations for a tool only when the tool's input has no fixed shape or includes a citations field
When Claude Code checks a tool, it now leaves one particular module out of the modules it considers, under a certain condition
Unclear Which module is now left out, and when, is not clear.
A new check allows an item through a built-in test, or for Anthropic API users when it appears on a list the server sends
Unclear It is not clear what this check allows or blocks.
Background requests now retry without their use-case label if the server rejects it, and stop sending that label for the rest of the run
Each turn now records whether a request was resent after the model sent back an empty reply
HTTP status 429 now maps to rate_limit_error and 504 to timeout_error
Claude Code now recognises the Gmail and Google Drive connectors and records whether Gmail attachments were delivered, kept, saved or read
Unclear It is not clear whether the way Gmail attachments reach Claude changed, or only the usage data about them.
Claude Code contains new internal labels for MCP file cards, Gmail file references, a no-MCP-setup status and a use-case question
Unclear It is unclear whether any of these features is visible or usable in this build.
When an MCP file reference is refused, one possible reason is now that a Gmail entry was not filled in at that point
Unclear Whether the Gmail check is active for anyone is not shown.
Claude Code's saved record of connectors that need signing in now also remembers a lapsed claude.ai sign-in for connectors routed through claude.ai
For permission questions from a run a plugin started, Claude Code saves no rule from your answer, and hosts are told to hide the always-allow choice
Permission requests sent to apps that drive Claude Code now name the plugin and can say whether to hide the always-allow choice
Unclear It is not clear when Claude Code sets suppress_always_allow_rule.
The summary of permission rules now includes parentSettingsIncluded when it is known
The loop that looks past commands wrapping other commands was rewritten, but it stops at the same point and gives the same answers
In Projects threads, reports from a session's own background work no longer affect how a bare reply is judged, and approve nothing
Auto mode's command safety check now records more detail about server verdicts and about blocked actions
Unclear It is not clear whether these new markers change which actions auto mode allows or only what it records.
Shortened permission requests in auto mode now leave out the tool's input as well as the raw command, and some allow rules are skipped when matching
Unclear Which allow rules are now skipped during matching is not known.
In headless sessions, the lists of tools Claude may not use are now stored and carried across turns rather than worked out each turn
A headless debug line about streaming text straight to output was reworded, and each turn now includes thinking, fast mode and permission settings
Unclear Whether CLAUDE_CODE_PLAIN_DELTA_FAST_PATH still controls the streaming shortcut on its own is not clear.
Headless runs now hand their exit code to a final step before exiting, and each user turn carries two extra pieces of information
Unclear What the new final step does with the exit code, and whether it changes what a headless run outputs or reports, is not known.
Inside tmux, Claude Code still limits its colors unless CLAUDE_CODE_TMUX_TRUECOLOR is set; the step that does it was tidied internally
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?