Usage data about Bash commands now records the kinds of commands run#
The usage data Claude Code sends about Bash commands now lists the kinds of commands used, worked out by a new parser
Claude Code can now download files with two new tools, FetchAttachment and DownloadTaskFile. Self-hosted runners get --hold-idle-file and --max-hold-min, which keep a session held while a file you update stays recent. Apps that embed Claude Code can pass a separate sign-in token for cloud sessions with CLAUDE_CODE_SESSIONS_OAUTH_TOKEN. Organizations can now list fingerprints of approved plugin releases in managed settings. A hooks plugin then loads only from a folder that matches one of them. Setting CLAUDE_CODE_PLAIN_DELTA_FAST_PATH turns on a quicker way to pass along plain streamed text when Claude Code runs without its interactive screen.
Some work in this build is not switched on yet. A built-in plugin that connects Claude to the Claude Platform developer docs is bundled but stays off. Background memory extraction can be made to run as a task you can stop, but this is off by default. Claude Code can also combine held-back pieces of a streamed reply into one update, and that is off unless switched on remotely. Several new server-controlled switches appear too, and what they control is not known.
Agent worktrees are no longer removed while another task is still working inside them. Attachments too big to hold in memory are now saved to the uploads folder instead of being rejected. Large images also get a smaller copy for Claude. Interrupting Claude Code while it reads an MCP resource or folder now cancels the read cleanly. Text with wide characters no longer overflows the terminal, because Claude Code now re-wraps such lines character by character. These are part of the fixes, and the full list is below.
Written by our agent from the shipped bundle, not by Anthropic.
Claude Code recognizes a --personal flag, and session start-up and cloud session creation gain persistentVolumeFromSessionId
InterfaceA new CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS variable appears, and some permission rules are now marked as not waivable in bypass mode
Remote sessions gain handlers that place downloaded files in a session folder, and plugins can paint text and decorations into the prompt box
ExtensionsNew environment variable CLAUDE_CODE_PLAIN_DELTA_FAST_PATH turns on a shortcut for streamed output in headless sessions
Managed settings can list pluginDigests on a marketplace, so plugins in prependPlugins or appendPlugins run at the organization tier
mcpMount settings layer and remembered security warningsSettings & configWant the reasoning? Read walks the 50 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →6 more of these are in What probably matters to you, on page 1.
The usage data Claude Code sends about Bash commands now lists the kinds of commands used, worked out by a new parser
Claude Code now records usage data about AGENTS.md once per session instead of from every process, unless CLAUDE_CODE_AGENTS_MD_ROWS_EVERY_PROCESS is set
When a shell command uses & to run something in the background, Claude Code's usage data now records it as a background job
When Claude Code runs as an MCP server, its tool-call usage data now includes the number of started MCP servers and event-loop stall time
Claude Code's startup usage report now records what kind of path CLAUDE_CONFIG_DIR holds, such as absolute or tilde, but not the path itself
A request now counts as a cache miss when its uncached and recached tokens together pass the limit, not uncached tokens alone
Claude Code now pauses sending diagnostic logs to Datadog when a proxy refuses the host or its address can't be looked up
A handful of small internal changes add usage counters, a startup timing mark and minor handling tweaks with little visible effect
Claude Code now sends a usage report the first time a background job's state.json file fails its validity check
Claude Code can now read a shell command's CPU time from the whole process tree, the command's own process and the cgroup, and drops the figure if a read fails
Conversation continuation now works out a maximum age from the environment or a server value capped by a fixed range
Unclear What happens to a conversation once it passes this age is not stated.
When you attach to a remote session, Claude Code now passes a service name taken from the session title and an access token for your device
Claude Code reads a new server setting naming the model families and SDK hosts that hold a fork, plus a time window; with no server value nothing is held
Unclear What holding a fork actually does for a session is not stated.
In remote and worker sessions, Claude Code can now start holding back events from the second tool call instead of the first
Unclear What this changes for someone using a remote session is not clear.
Subagent records can note how deep they were spawned, and remote event uploads now say whether a send is a first try or a resend
Reading local files in some remote sessions now passes an extra list, except when CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE is self_hosted
Unclear What the extra list holds, and so which file reads it affects, is not known.
Remote sessions gain a new handoff setting, a check for when a handed-off turn needs rewinding, and a clean stop when account memory is withdrawn
When placing file writes during a remote turn handoff is refused because permissions changed, Claude Code now tries once more
With CLAUDE_CODE_REMOTE set, Claude Code no longer rewrites its global config when fetched feature settings haven't changed
In remote sessions, keep-alive signals are now tracked per wait and may be held back to an interval when only background tasks are pending
Unclear It is not known what decides when the signals are held back during background-only waits.
Code for uploading git bundles in remote sessions now loads on demand, and one more reason counts as a final failure
Connections for remote sessions now pass a new option, onConnectNeedsRecord
Unclear What this option does when a remote session connects is not known.
The resource watchdog still marks a stuck disk read but now writes its log line about it only under certain conditions
Built in behind a server switch: during a tool search, Claude Code can retry some web-based MCP servers that failed to connect
Unclear What the server switch falls back to when the server sends nothing is not stated.
Claude Code now skips a per-tool check on MCP servers unless one of their tools mentions x-mcp-header
Reconnecting an MCP server can now reuse the settings it was given instead of reading them again from project or user settings
Unclear Which reconnects keep their old settings, and so may ignore your edits, is not known.
The check for MCP web servers held since Claude Code started has moved into a helper and behaves as before
Claude Code now tracks reconnecting when a search happens, and has a background task kind for memory work done after a turn
Some MCP results now skip a validation step, and per-tool output checks are prepared only when a tool needs them
Unclear Which MCP connections use the mcp-wire-codec format, and so skip the result check, is not stated.
Claude Code now waits to download the official MCP registry list until it's needed, unless CLAUDE_CODE_MCP_REGISTRY_FETCH_AT_STARTUP is set
Unclear The condition that decides whether the fetch is delayed is not known, so it is unclear whether this applies to you.
A loop over dynamically added MCP servers now skips some servers based on their configuration, not just their name
Unclear Which servers the extra condition now skips is not stated.
Claude Code's line-length guard for streamed responses now jumps ahead on long lines instead of counting every byte
For SDK clients, Claude Code now reports whether progress for UserPromptSubmit hooks was visible to the user
When a PreToolUse hook changes what a tool will be given, the permission check now learns it was changed
Unclear What the permission check does with this flag is not stated.
The step that hands events to configured hooks was reorganised and now skips direct dispatch when a held-hook check passes
Unclear Whether this changes when or whether your hooks run is not known.
A step that builds an identifying fingerprint for each hook no longer skips every hook whose type is not command
Unclear Which non-command hook types are now included, and what the fingerprints are used for, is not stated.
When your hook settings mix command hooks with other kinds, Claude Code now records which other kinds are present
The check that decides whether installed plugins' hooks load now starts with a new condition and drops an old special case
Unclear What the new condition checks is not known, so it is unclear whether installed plugins' hooks now load in more or fewer cases.
Claude Code gained a maximum-age limit read from an environment variable or the server, with a 90-minute floor on the server value
Unclear What the maximum age applies to, and which environment variable sets it, is not stated.
The five settings that run your own command for a credential or header now all start that command through one shared runner
Unclear It is not known whether the shared runner changes how or when these helper commands actually run.
A check that depends on where a setting comes from now always skips your user settings, alongside the sources it already skipped
Unclear What this check controls is not stated, so it is unclear which of your user settings now behave differently.
The list of settings contains an empty placeholder left by a feature removed from this build; it has no effect
How Claude Code notes a skipped special or oversized CLAUDE.md file was reorganised, with no change in behaviour
After fetching settings, Claude Code now refreshes only if the server's response says something actually changed
Resuming a cloud session can now restore an interrupted permission prompt that sits behind a note, behind a server-controlled switch
Unclear What the server-controlled switch falls back to, and so whether the recovery step runs for you, is not established.
An internal message lets a cloud worker say, before its first turn, which open requests it kept from an earlier worker
Cloud and remote sessions now check a second token source before the stored login, and retry fetching session events
Saving files from tasks was reorganised, and the error for a session with nowhere to save now says it cannot save task files
When a cloud session sets up its git repository, the access check now learns whether it was skipped because of throttling
Unclear What a cloud session now does when its repository access is throttled is not stated.
Claude Code has new checks for whether to compact the conversation after a long request is refused, plus logging of request sizes
Unclear It is not clear whether anything uses these checks yet or whether they are switched on.
After a prompt-too-long error, Claude Code's compaction can now pick a further step based on a credits boundary
Unclear It is not stated what the credits boundary is or when it applies.
When a conversation is compacted, Claude Code can now list which on-demand tools were loaded before the summary, behind a switch that is off by default
Claude Code adds new recorded reasons for compaction and a background task shown as memory save
Unclear It is not stated whether any of these are in use yet.
Claude Code now records which tools were used in a session and puts that list into the summary written when a conversation is compacted
Claude Code changed a check that decides by plan: Max always qualifies, Team, Enterprise and Pro only under some conditions, others never
Unclear Which feature this check controls, and whether anything uses it yet, is not known.
The Monitor tool's instructions now always say error output goes to the output file but does not trigger notifications
File scanning now records more kinds of errors, re-included gitignore files are tracked, and failure records can note a timeout
The error shown when the disk is too full for a temp folder now includes an error code, and several small pieces were added for workers and tasks
A Windows file path check now passes extra values internally, with no visible change in behaviour
When run inside another app, Claude Code can now also ask that host app for session sign-in tokens, as well as token refreshes
Tools can now check whether a spending cap is set, which is true whenever maxBudgetUsd has a value
Headless runs gain a faster path that sends plain pieces of text output straight away, and a way to mark a turn as refused
The description of a headless-mode timing field now covers stopped, deferred-tool and error turns, and hosted workers sending it on errors
The timer that watches for stalled output to programs using Claude Code is now set once and checked, instead of reset on every message
A new check spots prompts asking for an explanation, such as "explain", "walk me through" or "why does"
Unclear It is not clear whether anything uses this check yet or what it changes when it matches.
The step that joins prompt sections can now insert an extra block of text after the first section
Unclear It is not clear what text, if any, Claude Code puts into this extra block or when.
When Claude Code wraps text in a tag, it now escapes any closing tag for that wrapper in the text so the wrapper cannot be ended early
An ordering table for prepended content now lists user content first, ahead of append, built-in and core layers
Unclear What these layers are, and so what this changes for a reader, is not known.
New checks look at whether a turn ended on a status update or a shown decision, or did only scheduled or triggered work
Unclear Nothing shows what Claude Code does with the result of these checks.
A new server-set number, defaulting to 0, now applies to tool calls made by background subagents; what it controls is not yet clear
Unclear It is not clear what the number controls, such as a time limit or a count.
Summaries of background agents can now wait while the sub-agent's own request has no reply yet, up to a time limit
When a background agent is resumed, Claude Code now passes it notes about the tools it used and the tools available to it
On Linux, working-folder sync now listens for file change notifications and falls back to polling; CLAUDE_CODE_DISABLE_WORKING_SYNC_WATCH turns this off
Claude Code now remembers each image's size in bytes and pixels instead of working it out again every time it estimates usage
The size limit check on streamed data now skips work it does not need and scans long lines faster
One tool's permission check and its run step are now loaded only when they are first needed
The permission rule for dangerous removals is now marked as waivable in bypass-permissions mode while staying marked as immune to it
Unclear It is not known what reads the new waivable marking, so whether dangerous removals are now allowed in bypass mode is unclear.
The logic that picks the starting permission mode now considers whether settings are never passed along, and treats that as false unless told otherwise
Unclear Which sessions set this input, and so which ones get a different default permission mode, is not stated.
Startup checks of permission rules were reorganised; the warning for a rule that names no known tool reads the same
Unclear It is not clear whether the reorganisation changes which warnings appear or when.
Security warnings from setup are now stored as text entries, and duplicates and removals are matched by that text
The tools used during a turn are now recorded and passed along, with reading a file counted as using a read tool
Session snapshots now save which tools were used, web fetch summaries accept a word limit, and some task types leave the background tracker
Session transcripts store a list of tools used, and that list is copied when you branch a session into a new one
Unclear Whether this list is recorded by default is not known.
Before shrinking a saved conversation file, Claude Code now estimates the space it would free and skips early when that is small
The switched-off option for sending tool descriptions from a saved snapshot now also keeps a count of entries it built
The dumpPrompts debugging feature now converts raw-byte request bodies to text before writing them out
A counter used when compressing requests now starts again from zero when a conversation's stored data is cleared
Auto mode can now check whether the server-side safety check would decide a permission, without making that check
Unclear It is not known what you will see differently in auto mode because of this.
Whether auto mode context is on is now looked up every time it is needed, defaulting to on, instead of being remembered for the whole session
The message shown when auto mode's safety check is unavailable now takes an extra input, and Claude Code records which prompts ask for an explanation
Unclear It is not known what the extra information changes in the message you see.
Claude Code now works out a model's long-context size from a value served with the model's details
Unclear It is not clear where the served value comes from or whether your context window size changes.
An internal model override is now read from settings handed to the lookup instead of a shared store, with no visible change
The quiet background fetch of the published model list now runs again on later calls instead of only once at startup
The space set aside for the skill listing can now have a server-set minimum, which applies only when skillListingBudgetFraction is not set
Unclear The second condition that must hold before the server minimum applies is not known.
The instructions for the tool that suggests saving recurring workflows as skills now describe a review card, a limit of 3 proposals, and edits to your own skills
Unclear It is not clear what this tool is called or whether it is switched on for anyone.
Claude Code now records the file path of a skill that comes from a plugin, where before it recorded none
The result of the artifact_mcp_laptop_publish_row tool now gets a block of text appended to it
Unclear The content of the appended text and when exactly it is added are not known.
The offer to turn on the Chrome integration automatically works as before and is still off unless switched on remotely
Claude in Chrome's MCP server now answers startup checks itself and loads the full server only when a real call arrives
Claude Code checks three new feature switches that count as on when no server value arrives; what they control is not known
Unclear What these three switches control is not known.
Published verbatim by Anthropic for v2.1.311. 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 92 bullets, 18 name something an entry on this page also names, 22 name something no entry here does, and 52 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.
--hold-idle-file and --max-hold-min to self-hosted-runner, to keep an idle session while your host reports processes it left running
Probably self-hosted-runner-holds-idle-release-while-a-left-running-p, self-hosted-runner-logs-a-leftover-hold-line-in-its-watchdog, self-hosted-runner-can-hold-sessions-while-a-host-file-stays claude -p and SDK sessions saving transcript messages out of order or keeping messages that were taken back
No entry names this SubagentStop hooks running about twice a minute for each running subagent instead of once when it finishes
No entry names this .ignore/.rgignore negation rules that re-include git-ignored files
Nothing to match on claude mcp add, claude mcp remove and /mcp naming the current folder instead of the project entry in ~/.claude.json that holds a local-scope server when run below a repository root
Probably mcp-clear-authentication-verifies-the-clear-and-reconnects, slack-mcp-server-gets-a-channel-posting-instruction, claude-api-skill-moved-into-a-plugin-gated-by-tengu-peppy-cr, new-bundled-plugin-cc-plugin-claude-platform-registered-in-t claude mcp list and claude mcp get showing the error code twice on failed-connection lines (for example ENOENT: ENOENT: …)
No entry names this claude daemon restart; it now suggests claude daemon stop --any and says it ends background sessions
No entry names this claude respawn <id> starting the background service before reporting that no background session matches the id
No entry names this /effort not warning about a prompt cache miss in plan mode when the plan model differs from the session model
Probably effort-line-can-say-it-may-wait-for-your-next-message, effort-step-keybinding-with-cache-miss-confirmation, shiftupdown-bound-to-effort-increasedecrease-in-chat-keyb /ide saying the VS Code extension was installed before the install finished or when it failed
Probably ide-extension-install-flow-and-prompt-footer-spacing, ide-installs-the-extension-with-progress-ui agent; Cowork cloud sessions now ignore that setting
Nothing to match on --resume, --continue, /resume or --session-id, including after /clear or a crash, and /branch writing to the original session's list
Probably team-lead-process-recorded-clear-keeps-task-list-link, resume-restores-prompt-waits ! open /tmp/shot.png or /review look at /tmp/shot.png, attaching the image and dropping its path from the prompt
Probably review-ultra-help-text-clarified #101693Option to disable automatic conversion of image file paths into [Image #N] attachments in the prompt input Open
"\" or (\), disappearing from Claude's responses
No entry names this DISABLE_COMPACT is set
Probably disable-compact-env-var-now-treated-specially-by-the-setting, disable-compact-now-also-stops-teammate-in-process-auto-comp DISABLE_COMPACT is set
Probably disable-compact-env-var-now-treated-specially-by-the-setting, disable-compact-now-also-stops-teammate-in-process-auto-comp /code-review, or another skill that runs in a sub-agent, running a second time when a cloud or background session restarts
Probably review-ultra-help-text-clarified /ide saying it had installed the JetBrains plugin when nothing was installed
Probably ide-extension-install-flow-and-prompt-footer-spacing, ide-installs-the-extension-with-progress-ui /mcp showing a remote server as failed after "Clear authentication" when the server works without sign-in
Probably mcp-clear-authentication-verifies-the-clear-and-reconnects, slack-mcp-server-gets-a-channel-posting-instruction, claude-api-skill-moved-into-a-plugin-gated-by-tengu-peppy-cr, new-bundled-plugin-cc-plugin-claude-platform-registered-in-t /mcp showing "authenticated" for a remote server that Claude Code sends no credentials to
Probably mcp-clear-authentication-verifies-the-clear-and-reconnects, slack-mcp-server-gets-a-channel-posting-instruction, claude-api-skill-moved-into-a-plugin-gated-by-tengu-peppy-cr, new-bundled-plugin-cc-plugin-claude-platform-registered-in-t #98942[BUG] Claude Code marks an anonymous MCP server authenticated when it lists a tool Open
--plugin-dir folder of plugins loading as one plugin when an empty .mcp.json was at its top
Probably empty-mcpjson-is-skipped-claudemd-files-naming-devices-a /usage never showing large prompt-cache misses under "What's contributing to your limits usage?"
No entry names this CLAUDE_CODE_RETRY_WATCHDOG), indefinitely
No entry names this bwrap: Can't create file when a --plugin-dir folder was also an added directory and permissions.blockReadsOutsideWorkingDirectories was on
No entry names this /teleport and claude --teleport to warn when a compacted cloud session loads from its last compaction, so the messages it summarized aren't in the local copy
No entry names this #name and no longer says the address bar stays the same as you switch views
Nothing to match on claude --model opus
No entry names this ultrathink in the interactive terminal to run its turn at xhigh effort on Opus 5.5, Sonnet 5.5, Haiku 5.5 and Fable 5.1 through Anthropic's API; typed while Claude is working, it raises the rest of that turn
Nothing to match on ultrathink rainbow to appear only where the keyword can raise effort, and not when the word is quoted or part of a file path
Nothing to match on --output-format json and stream-json output to write DEL, C1 control and Unicode format characters inside strings as \uXXXX escapes; parsed values are unchanged
No entry names this [1m] suffix and its label on models where the suffix has no effect; the suffix is still accepted
Probably model-name-resolution-no-longer-special-cases-the-1m-suffix /code-review to tell Claude to put the effort level first and use max only when asked
Probably review-ultra-help-text-clarified DISABLE_COMPACT in settings files and in a mod's $.env.set so they can only turn compaction off, not back on
Probably disable-compact-env-var-now-treated-specially-by-the-setting, disable-compact-now-also-stops-teammate-in-process-auto-comp CLAUDE_CODE_SYNC_SKILLS with feature-flag fetching off to reuse a claude.ai skills list up to 10 minutes old that another session on the machine fetched
No entry names this claude purge to say it deletes data only on this computer, not anything stored by Anthropic
No entry names this DISABLE_TELEMETRY set while VS Code's telemetry setting is off, so they send no usage metrics or error reports and fetch no feature flags
No entry names this A model matched these bullets to the GitHub issues they fix, so a link can be wrong.
1 of 30 tool descriptions changed. The appended system-reminder blocks moved: 4 lines added, 5 lines removed.
Claude Code, interactive mode
12 prompt changes in this release could not be quoted from the build, so no entry on this page describes them.
437 documentation changes were recorded within 24 hours either side of this release, nearest first. The closest 12 are below. They're here because they happened near this release in time. That's not a claim that this release caused the edit, or that the page documents anything in it.
The 79 literal strings found in the bundle, with the number of entries that name each one. Picking one searches for it. A name is here because this build's code mentions it, which is not the same as it working or being finished.
What's wrong with this entry?