Policy settings are skipped in sessions without local storage#
When Claude Code runs without local storage, it no longer reads organisation policy settings from disk and treats them as absent
You can now set CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS to make a request fail instead of waiting past that time after hitting a usage limit. This release has 272 entries, and 150 of them are usable today. On 1M-context models, a new dialog can offer to auto-compact long conversations sooner. If you accept, the lower size is saved to your user settings. The setting for showing artifacts beside tool results is now CLAUDE_CODE_DAPPER_CUPCAKE, and the old CLAUDE_CODE_SQUISHY_NEWT is ignored. Programs built on the SDK can now block up to 64 MCP tools for a single turn, and they can load more plugins into a running session without a restart.
There are 12 entries in the build that are not switched on yet. Claude Code can build shorter instructions for the Read, Grep and Agent tools, but none are in use. Rewritten instructions for AskUserQuestion, the tool Claude uses to ask you questions, are prepared but not used. A slimmed-down prompt variant sits behind a remote switch that is off by default. Groundwork for routing notifications and for spotting interface freezes is present but changes nothing yet. The browser setup prompt in the desktop app and on claude.ai now uses a newly named switch, so any earlier rollout starts over.
Long-running MCP tasks now wait and retry when the server rejects their ID with error -32602. Before this fix they failed at once. Stopping a background command whose output is saved elsewhere now points the notice to that file. Sending a session to the background mid-turn now keeps pending task notices and a scheduled-job note. Checkpoint commits now skip with a git_error reason when Claude Code cannot tell whether a git operation is in progress. Archiving remote sessions from the session list is removed, and the remove option that replaces it is not switched on in this build.
Written by our agent from the shipped bundle, not by Anthropic.
New CLAUDE_CODE_ATTACHMENTS_IN_USER_DATA variable lets remote sessions keep attachments in a user-data folder, with retention checks and hardened writes
The 'beside tool results' behaviour now reads CLAUDE_CODE_DAPPER_CUPCAKE; the old CLAUDE_CODE_SQUISHY_NEWT variable no longer does anything
The SDK reload_plugins request takes add_plugins to load extra plugin folders without restarting, refused in cloud sessions and under disableSideloadFlags
ExtensionsPrograms hosting Claude Code can set ask or deny rules for individual tools on their in-process MCP servers, at initialize or via mcp_set_servers
ExtensionsA per-turn disallowedTools list now blocks named MCP tools for one turn, feeds deny rules, and suppresses misleading tool-revoked notices
ExtensionsWant the reasoning? Read walks the 38 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →8 more of these are in What probably matters to you, on page 1.
When Claude Code runs without local storage, it no longer reads organisation policy settings from disk and treats them as absent
The hint strongly recommending the auto context window now appears only for some settings instead of always
Organization MCP deny lists now match more forms of a remote server's address, and claude-code-remote is limited to four tools
When Claude Code fetches a security certificate for a remote session, it now checks it and names the specific problem if it fails
In diskless sessions, Claude Code now skips the enterprise MCP configuration file and reports none as present
Unclear It is not confirmed that the condition for skipping the file is a diskless session.
Resuming a session under a different organization now explains that Claude's earlier thinking is kept but can't be used
After compaction, the notice now says compacted or summarized, and the ctrl+o history hint after it is no longer always the same
When a server says how long to wait before retrying, Claude Code now uses that full wait instead of cutting it down to a maximum
Unclear It is not clear whether some other limit still shortens very long waits.
Interrupting while Claude Code is asking permission for an action now cancels that action as stopped by you
The up and down arrow keys no longer step between items shown above the prompt input; Tab, Shift+Tab, Enter and Escape still work
.zst, .lz4 and .whl files are now treated as binary#Claude Code now treats .zst, .lz4 and .whl files as binary files rather than text
Claude Code's list of image and media file extensions now includes .heic, .heif and .avif
Filling $ARGUMENTS and named placeholders into a skill, command or hook now fails with an error once the result passes a size limit
Claude Code now treats .parquet, .feather, .npy, .npz and .pickle files as binary instead of reading them as text
After plugins update themselves, a failed reload now gets its own notice telling you to run /reload-plugins instead of a restart message
Telemetry on tool permission decisions now includes the permission mode, plus extra detail when a setting made the decision
Several finished task notifications in a row now collapse into one row ending in '+N more', including Artifact changed notices
Text you type into a choice list can now use vim editing, and Escape goes to vim instead of closing the dialog
Unclear It is not stated which dialogs turn this on.
Claude Code now treats files such as .dmg, .apk, .xlsm, .pptm, .numbers and .epub as binary rather than text
The file reader's refusal of files with multiple hard links now also triggers via a refuseHardLinks option, not only CLAUDE_CODE_EVAL_CONFINED
When the search program behind file searches fails without results, some searches now stop with an error at once instead of going through general handling
Unclear Which searches ask to treat bad input as an error is not stated, so whether the Grep or Glob tools show a different error is unknown.
Claude Code now refuses a plan's short name if it is too long or contains characters outside the allowed pattern
When a background shell command ends, Claude Code no longer writes the plain [killed] or [exited with code N] line itself
Unclear What the new end-of-run note looks like is not stated.
Claude Code now checks more fields of a permission request one by one and drops any field that is not in the right form
When remote settings come from a custom address, a redirect response now fails at once instead of being retried, and redirect statuses are recorded
On Linux, Claude Code now uses a dedicated check to spot VTE-based terminals such as GNOME Terminal instead of a list of other terminals' variables
When Claude Code has no way to copy a URL, it now says so and tells you to select and copy it from your terminal
Claude Code sometimes skips enabling the enhanced kitty keyboard mode and tracks a few new details about worktrees, PowerShell and remote sessions
Unclear It is not clear when the kitty keyboard mode is skipped, which decides whether key handling in kitty changes for you.
When copying a selection through the terminal may fail, Claude Code now says so and suggests selecting with a key held and using your terminal's Copy
Claude Code now sets the host architecture in OpenTelemetry data itself instead of running the standard host detector
Unclear Whether hostname and host ID fields still appear in exported OpenTelemetry data is not stated.
Claude Code's list of extra working folders no longer includes the current folder or folders added by project settings
Unclear It is not clear whether this changes which folders Claude can actually read or edit.
On one exit path, Claude Code now sends its final usage data without waiting for a sign-in token refresh that is in progress
Starting a cloud session from your local checkout now looks up the branch differently and shows push advice only in some cases
Unclear It is not clear in which cases the advice to push is still shown.
Confirmation dialogs can now show "exit" instead of "cancel" in the hint for pressing Ctrl-C or Ctrl-D
Claude Code now skips looking up the model behind a Bedrock inference profile when you are not using Amazon Bedrock
Faint terminal text can now be dimmed even when it has a background colour, if that colour is one of a certain set
A 'Started in the background' notice now records which agent was launched, so a replayed transcript can link the notice to that agent
When no clipboard method works, Claude Code now tells you it couldn't copy a URL and asks you to copy it from your terminal
If an MCP server rejects a task's ID with error -32602, Claude Code now waits and asks again instead of failing at once, unless the task has expired
The instruction telling Claude to end its turn after a structured-output tool call now names the correct tool and has more text at the end
Sending a session to the background mid-turn now carries pending task notifications and a scheduled-job note, and always waits 10 seconds to save
Stopping a background command whose output is saved elsewhere no longer adds "[killed]", and the notice points to that file
Unclear It is not clear what the new auto mode skip reason applies to.
Checkpoint commits now skip with a 'git_error' reason when Claude Code cannot tell whether a git operation is in progress
Unclear Where the recorded configuration-file details are compared, and so what happens when they differ, is not known.
If rewriting session metadata fails while a session file is created, Claude Code still saves the transcript entries waiting to be written
When ripgrep fails, Claude is told the search failed rather than found nothing, and to retry once instead of a slow shell search
When the login token can't be refreshed because the config disk is full, Claude Code now says so instead of reporting a sign-in problem
Updated SDK MCP servers are no longer dropped when MCP state is refreshed, and MCP task polls retry once the server rejects a task id
Several small fixes: restoring after a message no longer comes back empty, and submitting an empty prompt dialog no longer cancels it
Creating or deleting a loop from the loops dialog now updates the message list, not just adds a system message
Claude Code can now skip asking the terminal for its version at startup, since VTE terminals before 0.53 show that query as stray text
Unclear The exact condition that makes Claude Code skip the query is not stated beyond its link to VTE versions before 0.53.
When a background subagent fails, errors or stalls, Claude Code now saves a record that it has finished
A git fetch for a branch or tag missing on the remote now fails with a clear, permanent error, and vim mode's % does nothing when it has nowhere to jump
Unclear What the list of ccs_ names controls, and so what adding ccs_read_file to it changes for a reader, is not clear.
When a git command fails on a branch with no commits yet, Claude Code now treats the branch as having an empty list instead of no answer
Claude Code now holds back from setting the terminal title in terminals known to print unrecognised control codes as visible text
On Windows, Claude Code now keeps trying for a set time to write a task's final output line when the file is busy
When a login refresh fails because the disk holding ~/.claude is full, Claude Code now says so and that signing in again won't help
When Claude Code cannot tell whether a git cherry-pick or revert is underway, it now treats the answer as unknown instead of yes
If a git remote name is defined as a group of remotes, Claude Code now reports that and does not retry
A markdown table with a header row but no other rows now shows just its header row when drawn in vertical layout
Docker detection can now be skipped by a condition, CPU accounting reads the root path too, and several small fixes landed
Claude Code no longer treats its startup terminal check as settled on VTE before 0.53, which prints the check as text
When a conversation is rewound or replaced, Claude Code now closes a pending dialog first
6 more of these are in What probably matters to you, on page 1.
The fixed browser setup reply in the desktop app and on claude.ai is now controlled by a newly named switch, so any earlier rollout starts over
Claude Code contains new code for deciding where notifications go, but it is switched off and changes nothing yet
Claude Code has a new check for a slimmed-down prompt variant, off unless it is switched on remotely
Unclear What the temporal_hare feature changes is not shown.
Claude Code's terminal interface has new groundwork for watching for freezes, with nothing found using it yet
Claude Code now accepts an optional list of time periods, each with a start and end, in the usage data it receives
The "Show status in terminal tab" option is still controlled by a remote switch that falls back to off, with no change in behaviour
Claude Code now reads a new remote switch that, when on, can cut a check short or reverse its result. It is off unless switched on remotely
Unclear It is not clear what the affected check does, so what a reader would notice if the switch were turned on is unknown.
8 more of these are in What probably matters to you, on page 1.
Claude Code now recognises self-hosted BYOC remote environments and passes CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE along with related variables
Unclear It is not clear what the list does, so whether the variable is now passed to other processes is unconfirmed.
Claude Code now decides which memory scopes are available from the current context, and Managed is always one of them
The auto mode classifier's requests can now carry an extra tag, and when they do the auto mode value is sent whatever the permission mode
Unclear It is not clear what condition adds the tag or what it changes in how actions are judged.
In one particular mode, snapshots of plan and workshop files now save an empty path instead of the real one
Unclear Which mode causes the path to be left out is not stated.
Plugin sync now records how each round ended and its round number, and the check at the start of a turn can run without the turn waiting on it
Failure messages from remote sessions are now flagged and cleaned, runner errors are redacted, and cancelling records when the turn stopped
The entrypoint label in the billing header and the User-Agent now asks a helper first, then CLAUDE_CODE_ENTRYPOINT, then a fallback
Unclear It is not known when the other source supplies a value that takes precedence over CLAUDE_CODE_ENTRYPOINT.
Claude Code has instruction text telling Claude to put answers and summaries in its last message, as text between tool calls may not be shown
Unclear It is not clear when this instruction is given to Claude, or whether it is given at all in normal sessions.
If the host running Claude Code reports there are no system-wide settings, the folder named by CLAUDE_CODE_MANAGED_SETTINGS_PATH is now skipped too
When git fetch gives up after its retry limit because a ref does not exist, it now raises a separate kind of error
After copying through the terminal's OSC 52 method, the confirmation can now report native copying or no copy instead, under certain conditions
project_write file path option trimmed#The local_path description for project_write no longer says the file is uploaded as it is
Internal names behind the artifact tool's type_url, auto_open and page options changed, with no change in how they behave
For sessions connected to a remote host, Claude Code now reports how many tokens the session has used in total
Unclear It is not clear whether this reporting is switched on for every bridged session.
When Claude Code starts its background service, it now works out the launch command through an extra step, with no visible change in behaviour
Unclear What this extra step changes in practice is not clear.
Files received through file transfer are now written by first taking hold of the uploads folder and releasing it afterward
When a keypress is handled, Claude Code now processes pending work at once and runs a follow-up step with that key, instead of ignoring the result
Unclear It is not stated what the follow-up step does, so any visible effect is unclear.
Claude Code now tags keypresses that were read after a delay, so they can be told apart from keys typed live
Unclear Nothing is shown acting on the late mark yet, so it is unclear whether key handling behaves differently today.
When recording requests for replay, Claude Code now reuses fingerprints of earlier messages and spot-checks one at random instead of redoing all
The code that writes command output to disk can now add a closing note at the end and tracks separately whether the output was cut short
Unclear Nothing yet uses the closing note, so what it will contain is not clear.
Claude Code's search for PowerShell can now take a supplied set of locations and remembers what it found
When Claude Code serves tools to other programs over MCP, each call is now tracked, and in one mode results carry a CPU usage report
MCP tool results marked as not meant for Claude are now returned as they are, without being cut short or saved to a file
Unclear It is not clear what sets the not-meant-for-the-model mark, or whether it is ever set in normal use.
A check that recognises a particular built-in session MCP server now also accepts SDK-type servers that meet several conditions
Unclear What being recognised as this server allows or changes is not stated.
Saving the result of an MCP task now fails with an error when the target is the project folder, which no storage backend can accept
Unclear Which situations lead an MCP task result to be saved to the project folder is not known.
Claude Code now picks the folder for saved MCP task details in a different way, and skips saving when it cannot settle on one
Unclear Where MCP task details are now saved, and in which situations saving is skipped, is not clear.
When MCP tasks are restored after a restart, Claude Code now gives them a deadline for reconnecting
For MCP servers started as local programs, the shell prefix and starting environment are now worked out in one place and adjusted by config scope
Unclear What the extra adjustment does, and for which configuration locations, is not known.
Claude Code now decides whether background commands are off from a disable setting and another condition, with an exception when shells are kept elsewhere
Unclear It is not stated what turns background tasks off, so whether background commands are available in a given setup is unclear.
Background tasks marked as running elsewhere now report a rewritten output path and a final response, and SDK-type MCP configs drop their tools list
Unclear Which tasks count as running elsewhere is not stated.
Published verbatim by Anthropic for v2.1.301. 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 51 bullets, 8 name something an entry on this page also names, 15 name something no entry here does, and 28 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_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS so unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) ends a request at a usage limit that resets too far away instead of waiting
Probably new-env-var-caps-how-long-the-retry-watchdog-waits-on-a-usag claude-api skill, including setting up trace destinations with the ant CLI
Probably tip-for-multiple-sessions-is-hidden-in-some-cases-the-claud % motion to vim mode: jump to the matching bracket, alone or with d/c/y
Nothing to match on rows to a mod's Input: a text field of several lines in the terminal, where Enter submits and Shift+Enter or a backslash before Enter starts a new line
No entry names this classifier_verdict and permission_mode to OpenTelemetry tool_decision events, so auto mode classifier decisions can be told apart from permission rules
Probably auto-mode-classifier-verdict-added-to-analytics, tool-decision-telemetry-gains-permission-mode-and-config-dec classifier_category to OpenTelemetry tool_decision events, naming the built-in rule a classifier block matched, when OTEL_LOG_TOOL_DETAILS=1
Probably auto-mode-classifier-verdict-added-to-analytics, tool-decision-telemetry-gains-permission-mode-and-config-dec WorktreeCreate hook without asking when it may hold unpushed commits
No entry names this fable (and best) model alias erroring on the Anthropic API when the newest Fable model is not available to your organization: Claude Code now retries once on the previous Fable model
Nothing to match on >0q covering the folder trust prompt, and >4m before the shell prompt at exit, in terminals built on VTE older than 0.53 such as MATE Terminal on RHEL 8
No entry names this GOK text appearing in the prompt at startup in some versions of iTerm2
No entry names this #100691[Bug] Stray "GOK" appears in prompt at startup in iTerm2 only Open
#99985Text "GOK" appears in the prompt at startup in iTerm2 (kitty graphics query reply not consumed) Open
#98973Startup input box pre-populated with stray text ("GOK") when project CLAUDE.md/AutoMem files are loaded Open
#95448Kitty graphics probe: iTerm2's i=less OK reply fails the response regex and is typed into the prompt as GOK Open
application-inference-profile running your awsAuthRefresh command and delaying model-switch hooks when the provider is not Bedrock
No entry names this claude auth status or claude plugin list exited in the middle of a token refresh
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
#102265[BUG] Short-lived subcommand (claude plugin validate) exits mid OAuth refresh: the rotated refresh token is never saved, the next process gets invalid_grant and blanks the login Open
/rewind
No entry names this ask decision not showing which plugin or skill the hook comes from
Nothing to match on /diff not noticing a conflicted cherry-pick or revert in reftable repositories when one of its git checks timed out or failed
No entry names this cd in the same session
Nothing to match on $.model.fork returning nothing-to-fork when called before the first response of a new Claude Code process had finished, as in claude -p runs and cloud sessions
No entry names this /compact and auto-compact briefly freezing the UI while the visible transcript is rebuilt
No entry names this deniedMcpServers to keep those tools off
Probably mcp-server-filtering-now-explains-servers-kept-despite-allow [killed] line in their output file
Probably background-shell-exit-marker-replaced-by-a-structured-call, background-shell-kill-output-file-handling-changes-new-aut .catch handler to run only when the hook throws or times out; events raised beneath the hook's own calls now skip that hook without asking its .catch
Nothing to match on $.env.set to resolve with {} once the variable is set or unset, or with { deny } saying why when the write is not made
Probably hook-env-set-denials-now-return-a-deny-result $$ and multi-line \[ … \] blocks and inline $…$ and \(…\) math
No entry names this A model matched these bullets to the GitHub issues they fix, so a link can be wrong.
No change to the system prompt since v2.1.300.
Claude Code, interactive mode
860 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 36 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?