Device and process file path checks tightened#
The check that spots device and process paths such as /proc now normalizes paths and matches more forms, and the Read refusal names them as resolved
Short model names such as opus and sonnet now work beyond Anthropic's own API. Fable is now recognised as a short model name too. A new Claude Test panel in the terminal shows each test's pass, fail or blocked mark, with a progress bar and time left. It builds on the groundwork for that panel in v2.1.309. On Vertex and Bedrock, default models can now come from a published model document. Setting CLAUDE_CODE_RETRY_WATCHDOG_SCOPE=capacity limits the automatic retry waiting to capacity errors only.
Several features are in this build but not switched on yet. A /claude-api check that scans your project for retiring Claude model names is built and stays off. Sending a project's documents to Claude as plain text is also off unless switched on remotely. The tool that writes project documents gains a safety check that is off by default. When switched on, it refuses to replace a document whose text differs from what Claude last saw. Groundwork for picking up background agents left behind after a resume is present but hidden.
Starting a cloud session now recovers when this computer is not yet a trusted device. Claude Code re-enrolls the computer and retries, or tells you to run /login. Saving incoming attachments no longer overwrites files that have the same name. Inline images inside tmux now stay in place when the pane moves, resizes or regains focus. A NODE_EXTRA_CA_CERTS file with one blocked certificate no longer causes the whole file to be ignored. The bundled claude-code.d.ts type definitions file is removed.
Written by our agent from the shipped bundle, not by Anthropic.
Short model names such as opus and sonnet are no longer limited to Anthropic's own API, and fable is now recognised as one
Sessions & agentsMCP server settings accept a new connectorId field, stdio servers keep their original configuredCommand, and mcp_call refuses some servers' tools
ExtensionsIn proxied sessions, the built-in gh now refuses to run outside the session's proxy, and a new standalone-proxy mode sets up git and gh
Tools & outputOn Windows, strict sandbox mode now explains why a command was refused, and the CLAUDE_CODE_NANKEEN_KESTREL switch remembers it was on
InterfaceCLAUDE_CODE_RETRY_WATCHDOG_SCOPE limits the retry watchdog to capacity waitsSet CLAUDE_CODE_RETRY_WATCHDOG_SCOPE=capacity to keep the retry watchdog waiting through capacity errors without its other retry changes
Want the reasoning? Read walks the 22 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →9 more of these are in What probably matters to you, on page 1.
The check that spots device and process paths such as /proc now normalizes paths and matches more forms, and the Read refusal names them as resolved
A 'Cloud session' title can now appear above a pane, and Claude is told to name a suggested plugin in one short sentence
Claude Code now also removes GIT_TEMPLATE_DIR and ARGV0 from the environment it hands to git, under a specific condition
Claude Code changed how it checks a Bash command that starts with a colon-separated prefix when deciding whether to allow it
Unclear It is not clear whether any command is now allowed or refused differently than before.
For some kinds of configuration, the allow and deny lists for MCP servers now match against a second worked-out form of the command or URL
Unclear It is not clear which kinds of server configuration get the second check or how the second form differs from the first.
Claude Code rejects NAME=value command prefixes whose value looks like a path, and refuses prefix matches for Bash commands with wildcards, ~, = or !
When Claude Code runs without its interactive screen, it no longer starts loading memory context early as it takes the next queued command
When Claude Code shows an image's text description instead of the image, its diagnostic now names the specific terminal check behind it
Claude Code's git write protection now refuses a command that sets ARGV0 and explains that it changes the name git is started under
Claude Code no longer suggests a permission prefix for a PowerShell command when it or its arguments are themselves commands, under one internal condition
Unclear The internal condition that switches this behaviour on is not identified, so it is unclear when you will see it.
On Linux and macOS, Claude Code now checks system files to detect an automatically mounted /net folder and to list network search domains
The failure message for the self-hosted agent proxy now says "your self-hosted agent proxy" instead of an internal mode name
The Read tool now checks a path before reading and stops with 'Read refused by the device guard' if it points at a device file
When Haiku writes an agent's summary label, it now uses the task's language instead of the main language of the notes
If an MCP server asks you a question and no answer comes in time, Claude is told not to retry, to tell you, and to wait for your reply
When a Bash command starts with VAR=value, permission matching now checks the value as well as the variable name
Unclear It is not clear which values are now accepted or refused, so it is unclear whether commands that used to match a rule might now ask for permission.
A remote session restored from a saved setup now shows "Restored from snapshot of setup script" instead of "Started from saved setup"
read_file now refuses a path through a symlink whose target goes up a folder after its leading "../" parts
When Claude Code starts as an MCP server, it can now print a warning to its error output about deny rules on another host
Unclear When the warning appears and exactly what it says is not shown.
Remote session attaching was reworked, the GitHub proxy error skips an unknown status link, and a redundant linked-computer notice is hidden
Any MCP server that gives an authentication error while listing its tools is now marked as having failed sign-in
register_repo_root now refuses paths through a symlink whose target climbs out with extra ..; the Bash parser gains a backslash option
zformat, zparseopts, zstyle, zregexparse, getln and vared are now on Claude Code's list of recognised zsh builtins
Claude Code now treats more API errors as errors about an unsupported message role, not just those mentioning "Unexpected role"
The guard keeping git commands inside a worktree now catches risky git init options, find -exec with git, and bare git variable assignments
Unclear Whether the new checks are switched on depends on two server switches whose defaults are not known.
When an MCP tool call times out with questions still waiting for an answer, the error now adds an extra hint
The 'Sandbox cannot run' message now drops a leading 'cannot start here:' from its reason, so the explanation reads more cleanly
A status panel's refresh timer went from once a second to every 250 milliseconds, with full updates still once a second
Claude Code tightens a command-name check, adds a parser option for backslashes in quotes, and converts tabs when building edit diffs
Unclear What difference these changes make to the diffs and permission prompts a reader sees.
In the ANSI colour theme, the "You" label in brief mode now shows in bright white rather than bright blue
In one display case, a queued message's text now sits on a full-width user message background instead of plain text
A sign-in style error while listing an MCP server's tools is now recorded as an auth failure, and CCR requests carry a tool call id more often
Unclear It is not clear whether marking the sign-in failure changes anything you see, such as a prompt to sign in to the server.
Tool search now trims the query and runs an extra cleanup step before lowercasing it, so matches may differ slightly
Unclear What the added cleanup step does to the search text, and so which searches now match differently.
The ready message for a restored remote session now reads "restored from snapshot" instead of "restored saved setup"
Before reconnecting a connector, the sign-in tool now clears any failed or sign-in-failed saved connection first
Incoming attachments are now saved without replacing files of the same name, and names held by links, pipes or folders are left alone
When Claude Code checks a gateway and looks up its models, it now trusts the extra CA certificates you have configured
When Claude Code clears a five-hour usage limit that had been hit, it now refreshes that limit's status first
In cloud sessions, a request that has been stopped no longer counts as eligible for the automatic permission check
In headless sessions, Claude Code now sends the held end-of-compaction signal whenever a turn ends without success
Under a certain condition, Claude Code holds back the signal that compaction has ended until it knows how compaction turned out
Unclear It is not clear what condition switches this behaviour on, so it may not apply to every user.
In the Help dialog, Esc now closes an open inner list first, and the cloud session screen drops its 'Cloud session' title
4 more of these are in What probably matters to you, on page 1.
The remote session worker gains skipPlainTaskProgress, tied to tengu_misty_spindle_enabled and off by default, which appears to filter plain task-progress updates
Unclear Exactly which progress updates are skipped when the option is on.
Claude Code now tracks a separate flag-gated panePreview alongside consentPreview for MCP servers, apparently staging an MCP pane preview
Unclear It is not clear what the pane preview shows or does, or whether it is switched on for anyone by default.
A remote switch can now swap in alternate instruction text for some tools, and the existing text is used unless it is switched on remotely
Unclear Which tools are affected and what the alternate text says is not shown.
A part of Claude Code can now check a remote switch about waiting for a batch to finish; the switch falls back to off
Unclear It is not stated what the batch is or what changes for a user when the switch is on.
6 more of these are in What probably matters to you, on page 1.
Self-hosted runners now send a capabilities list when they register and a capabilities header when fetching session settings; the orchestrator client sends an empty list
The script that routes git and gh commands from the sandbox now has a relay mode using a proxy and a separate standalone mode
Cloud sessions can now look up subagent details in batches, and some "requesting" status rows are sent live without being stored
The test MCP server bundled with Claude Code can now be started with --pane, alongside the existing --preview
Unclear Nothing shows what makes Claude Code start the server with --pane.
Claude Code reads CLAUDE_CODE_DESKTOP_CONNECTOR_NAMES at startup, and when set, accepts MCP server names starting with claude_ai_
Unclear It is not shown which ways of launching Claude Code pass the check that lets this variable take effect.
The feedback survey can now report follow-up text results with a logs_followup signal, and every_rating needs one more condition
When Claude Code fetches context for a claude.ai Project, it now also passes on information from the server about the project's document text
Unclear What Claude Code does with the document text information returned by the server is not shown.
The account information Claude Code saves after you sign in now includes a field named vouchedAtLogin whenever it has a value
Unclear What the field records, and whether it changes anything about signing in, is not stated.
Claude Code dropped the step that held back early memory requests in Cowork, keeping only a note of the last unanswered one
Claude Code now recognises a "goals" attachment type next to the existing goal status one
Unclear It is not shown what this attachment type does for you or where it appears.
Records of model requests now cover side queries and include the model call names, and the effort retry message is reworded
The step that summarises a long conversation takes an extra option, and failed automatic summaries report more about the agent involved
When Claude Code resumes and loads saved transcripts of agents from your own machine, it now treats those local files as trusted
In non-interactive runs, Claude Code now resets and records which tools each turn blocks instead of passing the block list straight through
Unclear What a reader would notice differently from this change is not stated.
Telemetry records of tool use and permission decisions now include the API request_id, and a few other usage records gain extra fields
Requests for commit signing and for the keys used to check tokens now carry an extra connection setting, and a token error message is fixed
Unclear It is not confirmed that the extra connection setting is the proxy or TLS configuration.
For header helper commands supplied by an organization, Claude Code now prepares the command's environment only when it is needed instead of upfront
Claude Code now merges each new usage-limit reading with the previous one for the five-hour, seven-day and included overage windows
Unclear It is not clear how the old and new values are merged, so whether figures look smoother or can show stale values is unknown.
Inside tmux a terminal feature check now reports the feature as unlikely to work; inside screen it still reports it as not supported
Unclear It is not shown which terminal feature this check is for.
Organization settings merging, gateway sign-in handling and cloud session flushing were adjusted internally
When setting up remote managed settings at startup, Claude Code now reads signature details alongside the policy and settings
The CronCreate description now always tells Claude to use Monitor for watching logs or processes, and explains whether jobs survive
Claude Code uses a different check to decide whether a background request to the API fails fast or keeps retrying
Unclear It is not clear which background requests now fail fast and which keep retrying.
Claude Code's request to read a document can now set an upper limit on the size of the response
When settings set environment variables, Claude Code can now record each variable's earlier value so it can be put back later
Unclear It is not clear when this recording is used, so it is unclear whether removing a variable from your settings now restores its old value.
When Claude Code checks your Google Cloud credentials, it now hands a set of client options to Google's authentication library
Unclear It is not clear which options are passed, so it is unclear whether this changes proxy or certificate handling for the credential check.
When a new turn starts, Claude Code now abandons a memory context fetch still running from the last turn, and stops reporting early fetch timing
Claude Code now sets up a reader for its command-line options early, before the rest of startup runs
Unclear It is not clear what this earlier reading of command-line options changes for someone running Claude Code.
Claude Code now logs when an artifact is published without being asked, and can skip the approval shortcut in that case
When a certain mode is on, notices about comments Claude did not reply to automatically use new, more explanatory wording
Unclear It is not clear which mode switches on the new wording.
Under some conditions, artifact comment notices say "comment watch" and point to /tasks for stopping watches, no longer mentioning resume_replies
Unclear It is not known what switches the new wording on or whether it is on by default.
Prompt caching for artifact sessions now has a third group, for sessions where artifact tools replace the built-in ones
Under an internal switch, Claude's artifact publishing instructions show connector tools as mcp__<connector>__<tool> instead of the claude_ai prefix
The artifact tool's results gained an optional yes-or-no field, ask_first
Unclear What ask_first does when it is set, and whether you will see Claude ask before acting because of it.
The check that decides whether Claude may read comment threads on an artifact was reworked; the approval prompt wording stays the same
Withheld CCR artifacts now carry a specific error, file results can note an unchecked link, and project references can name a version
The client for remote sessions now keeps track of tool results that are being held back within a turn
Unclear Whether remote sessions actually hold any tool results back yet is not shown.
Resuming a remote session gains an option to verify subagent transcripts and load them lazily, and reports more hashed identifiers
Claude Code now recognises auto mode scans and local memory imports as kinds of background task
The check that decides when a background supervisor is switched off now looks at whether waking is enabled and, in one mode, at more conditions
Unclear Which feature this supervisor belongs to, and whether it reaches ordinary use, is not shown.
register_repo_root now expands paths from a base folder and accepts some paths that climb through links
Unclear It is not clear which paths are newly accepted by the link-climbing option.
When saving session data fails, Claude Code now records that a write failed
Claude Code now sends held-back tool results right away when one of them needs to be saved
The maximum size of a batch of session events Claude Code sends to the server is now set by a different fixed value
When a remote switch is on, Claude Code now runs an extra step before starting its usage reporting
Unclear It is not stated what the extra step does.
Two usage reports Claude Code sends, about the system prompt and about tools, now include one more piece of information
Usage data from Claude Code's file syncing now counts linked files, and how they were handled when linking was refused
Claude Code's usage reports for leaving plan mode and for finishing compaction now carry which agent or subagent the event came from
When automatic compaction fails, the usage data Claude Code records now includes which agent was running
The feedback survey now includes your response in its usage data only when you answered, not for other survey events
Two reason codes Claude Code reports when resuming an agent now end in "held" where they used to end in "seeded"
When Claude Code starts an MCP server, it now records whether that server came from an organization
Claude Code now tries a second way to read MCP tool names and checks MCP server environment variables by their value as well as their name
Unclear Which MCP tool names or environment variable values are now accepted or rejected that were not before is not stated.
Anthropic has not published official notes for v2.1.310 yet. This section updates automatically when the entry appears in the upstream changelog. Everything else on this page came out of the bundle instead, which is why the two lists don't match.
3 of 30 tool descriptions changed. 1 of 28 tool schemas changed. The appended system-reminder blocks moved: 1 line added.
Claude Code, interactive mode
15 prompt changes in this release could not be quoted from the build, so no entry on this page describes them.
640 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 29 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?