A queued message can end a turn that is being held#
Claude Code now watches its message queue, and a new message can end a held turn so it can be followed up
Unclear It is not clear when a turn is held, or whether this is switched on for readers.
You can now move a session on your computer into a new cloud session. Claude Code copies the newest turns after checking the move is safe. A new /project command names the claude.ai Project for usage reports, and --save keeps that choice. Admins can set disableReplyCheck in managed settings to stop Claude being re-prompted when a turn ends without a reply. Setting CLAUDE_CODE_ULTRAREVIEW_LAUNCH_RECORD to a file path makes each successful ultrareview launch write its session id there. This release has 425 entries, and 240 of them are usable today.
26 entries are in the build but not switched on yet. The biggest is an experimental REPL mode, where Claude writes JavaScript that calls its tools. It comes with an opt-in dialog and limits on resuming and moving sessions. More pieces of a code-running mode landed this time, including script tracking and a tool that waits while idle. A check that can skip compacting a long conversation is also here, but it stays off unless switched on remotely. Session-long "always allow" choices for MCP connector tools, which link Claude to outside services, are recorded only when a remote switch is on.
Some of this release's fixes make broken config files safer to deal with. If the config file is corrupt or empty, Claude Code looks for the best backup and tells you what it did. A global config file that cannot be read is now left alone instead of being overwritten. A failed message send in a remote session no longer leaves it stuck sending. Cloud sessions that fail during setup now wait for the refusal message, so you can see why the launch failed. Saving over a file mounted into a container now works when the file is busy.
Written by our agent from the shipped bundle, not by Anthropic.
A new path moves a local session to a cloud session by copying its recent turns, via /teleport and claude --cloud, with many safety checks
Sessions & agentsSelf-hosted runner reply-check behaviour can now be turned off with a managed disableReplyCheck setting or shaped by a CLAUDE_CODE_REPLY_GATE_POLICY variable
ElsewhereSetting CLAUDE_CODE_EXPERIMENTAL_CODE_MODE asks Claude Code to switch on an experimental Code Mode, which it can refuse for several reasons
A new /project command, gated by tengu_gentle_cupcake, sets attributionProject for usage reports; IDs may start with chan_ and --settings is a source
ExtensionsCLAUDE_CODE_MEMORY_PUSH_DELETE_MODE now accepts recorded, and Claude is told how to delete a shared-memory file with a plain rm command
Sessions & agentsWant the reasoning? Read walks the 46 entries that probably matter to you, each one opening to what changed and why.
Read this release → Every row →5 more of these are in What probably matters to you, on page 1.
Claude Code now watches its message queue, and a new message can end a held turn so it can be followed up
Unclear It is not clear when a turn is held, or whether this is switched on for readers.
When a queued message is bumped to run immediately, Claude Code now records the priority it had before
Claude Code can run a quick first check before neutralising fake control tags in content, controlled by a remote setting
Claude Code's text cleaner now draws rules from three sources, adds a pass for control tags, and fixes replacements to apply to the text being cleaned
Unclear What the rule sources contain and what the extra control-tag step removes is not clear.
Claude Code now looks for several marker texts in a message and adds each one it finds, where before it handled only one
Unclear It is not clear which marker texts are on the list or what they change for a reader.
In a new script mode for skills, Claude is told to run a skill you type as /<skill-name> through the Skill tool from inside a script
Unclear It is not clear what switches skills into script mode or whether that mode is available to users.
Listing a folder outside an MCP server's loaded skills now gives one error telling Claude to copy the address from the skill's first sentence
When Claude Code refuses a skill file path, it can now say outside_loaded_skills as the reason
Unclear It does not say what makes a path count as outside the loaded skills.
In REPL mode, tool search now lists matching tools that only a REPL script can call and tells Claude to use them from the REPL tool
Unclear It is not clear what turns REPL mode on.
The two checks deciding when Claude Code refreshes the tools it tells Claude about have swapped roles
Unclear It is not clear how this changes what Claude sees in practice.
Claude Code's diagnostic for a deferred tool being called before its description was sent to the model has been changed
After compaction, Claude is told to treat restated text from Remote Control on another device as data, not instructions
When Claude Code compacts a conversation, its usage report now carries a hash of the summary instructions instead of a label for which version was used
Claude Code can now compare the saved identity behind managed policy with the current one and report whether it changed or couldn't be read
Claude Code can now report that a feature is unavailable because a device policy disabled it
Unclear It is not known which feature or features this reason can apply to.
The list of interface pieces allowed on mobile now includes Input and Select, alongside boxes, text, buttons, links, code and markdown
Unclear Which mobile views or plugins draw on this list is not clear.
When Claude Code draws a screen for a mobile target, it replaces text inputs and selection lists with empty space unless they are allowed
Unclear It is not clear which mobile surface uses this, or whether any reader sees it yet.
Permission handling can record that an earlier stored answer still stands, and falls back to the session's host when finding who answered
Unclear It is not clear what a reader would notice differently when a stored answer is marked as still standing.
Claude Code applies new conditions before it refuses a tool that cannot show you a permission prompt, and lets some allowed decisions through
Requests that warm the prompt cache when a session resumes now get their cache length under the same rules as SDK requests
Claude Code can hold a turn while a request that warms the prompt cache settles, up to a time limit
Unclear It is not clear where the time limit comes from or whether the wait is switched on for users.
One tool now hands Claude its results together with a note, instead of the bare results, when no opt-in is required
Unclear It is not clear which tool this is or what the note says.
When two tools have the same name, Claude Code no longer always keeps the first one and can replace it with a later one
Unclear Which tool now wins in a name clash is not clear.
The status spinner's verb list drops older names for the file, search, Bash and notebook tools; WebFetch, WebSearch, Task and LSP keep theirs
Claude Code dropped the failure reason it gave when the hosted egress proxy could not be reached at startup
Published verbatim by Anthropic for v2.1.318. 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 84 bullets, 26 name something an entry on this page also names, 22 name something no entry here does, and 36 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.
assume_role on mantle upstreams of the Claude apps gateway, for a role in another AWS account and for per-developer AWS cost attribution
Probably bedrock-style-assume-rolebearer-token-check-extended-to-ma, mantlebedrock-gateway-attribution-warning-reworded-and-made effort option to a mod's $.model.fork, so a quick side job can run at low whatever effort the session uses; the result reports the effort sent
Probably hook-matchers-mcp-tool-name-matching-and-modelfork-effort claude auth status (loginExpiresAt) and to claude -p JSON results (credential_expires_at)
Probably stop-message-uuid-description-extended-to-claude-p, result-messages-gain-credential-expires-at claude -p text output, starting 10 days before a stored claude.ai sign-in ends
Probably stop-message-uuid-description-extended-to-claude-p --continue sometimes losing the earlier conversation after a malformed tool call's retries ran out (regression in 2.1.314)
No entry names this #96628[BUG] After a tool call fails to parse, the retry notice can point `parentUuid` at a row that is never written, so `--resume` loses everything before it Open
/logout, claude auth logout and claude mcp remove reporting success, and changes to trust, consent or MCP settings being dropped with no word, when the config file could not be updated on a shared network home directory
No entry names this Not logged in when another terminal or host signs in again to the same account and organization on the same home
Probably auth-status-output-gains-an-extra-line claude mcp add and remove writing the config without its lock: they now wait for it or exit 1, though another job's save can still replace a saved server
Probably claude-mcp-add-web-add-a-claudeai-connector-from-the-cli claude plugin commands exiting before a slow token refresh was saved, which could sign you out on the next run
No entry names this #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
claude plugin validate passing a custom-named marketplace file that claude plugin marketplace add rejects
No entry names this allowedProviders list that another login on the same machine had stored
No entry names this claude -p and SDK sessions
Probably stop-message-uuid-description-extended-to-claude-p claude -p and Agent SDK sessions reporting success when an API error cut off a reply while a mod hooked turn.step
Probably stop-message-uuid-description-extended-to-claude-p claude remote-control hosts, the background daemon and self-hosted runners failing to start new sessions (spawn ENOENT) after an update or version cleanup removed the binary of a still-running process
No entry names this sudo claude) being treated as dead by version cleanup, which could delete its binary
No entry names this /remote-control showing a session as available after a failed connection
Probably remote-control-failure-messages-tell-the-user-how-to-recover, remote-control-callout-flow-refactored-remote-control-dial /design revoke reporting success when the request failed with a 404
No entry names this Setup hook writes to CLAUDE_ENV_FILE not reaching the Bash tool in some cloud sessions
No entry names this NODE_EXTRA_CA_CERTS file is empty, not PEM, or starts with a damaged certificate: readable certificates are now used, with a warning on stderr
Probably much-longer-node-extra-ca-certs-diagnostics-two-new-cases, node-extra-ca-certs-partial-load-of-unparseable-ca-files, ca-cert-drop-message-expanded /mcp in cloud sessions counting tools the model can't use; a server's row now shows how many of its tools are available
Probably mcp-listing-and-ultrareview-credits-refactor-forked-slash turn.step hook making a stopped reply finish as a success in headless runs
No entry names this claude -p with no ~/.claude.json backup: it now takes a fresh backup before deleting the last good one
Probably config-lock-only-saves-and-lock-wait-env-var, stop-message-uuid-description-extended-to-claude-p, config-file-backup-and-empty-file-recovery setup-token being refused at start on machines with forceLoginOrgUUID, when the token belongs to a permitted organization
Probably warning-when-the-oauth-sign-in-is-near-its-end, expired-login-messages-login-reached-its-time-limit #106324[BUG] forceLoginOrgUUID is incompatible with setup-token OAuth tokens Open
~/.claude.json that isn't valid JSON with defaults; the start now fails, says how to restore the file, and leaves it as is (anthropics/claude-code#87551)
Probably config-lock-only-saves-and-lock-wait-env-var, config-file-backup-and-empty-file-recovery ~/.claude.json with no backup being reported as corrupted; Claude Code now starts as it does when the file is missing
Probably config-lock-only-saves-and-lock-wait-env-var, config-file-backup-and-empty-file-recovery ~/.claude.json naming an empty or cut-off backup, or failing on a read-only file
Probably config-lock-only-saves-and-lock-wait-env-var, config-file-backup-and-empty-file-recovery claude -p names claude auth login and claude setup-token
Probably warning-when-the-oauth-sign-in-is-near-its-end, stop-message-uuid-description-extended-to-claude-p, expired-login-messages-login-reached-its-time-limit ~/.claude.json, settings files and the stored login survive saves on shared network home directories: they are less often deleted, briefly emptied or replaced by a near-empty or older copy
Probably config-lock-only-saves-and-lock-wait-env-var, config-file-backup-and-empty-file-recovery /bin/bash
Probably bash-heredoc-on-stdin-teaching-macos-binbash-only-flag-d claude -p, SDK apps) to stop rewriting ~/.claude.json on every run when nothing in it changed
Probably config-lock-only-saves-and-lock-wait-env-var, stop-message-uuid-description-extended-to-claude-p, config-file-backup-and-empty-file-recovery /ide from an outside terminal or your editor's extensions view
Probably awayidle-jetbrains-plugin-not-found-message-now-tells-user prompt.submit to stay in the user's turn rather than go out as a system message
No entry names this deniedMcpServers URL entries to also block Anthropic-provided servers whose upstream URL matches, and connectors in cloud sessions and on self-hosted runners, where the session is given the connector's own URL; otherwise deny a connector by name
Probably mcp-deniedmcpservers-matches-mcp-url-parameter-addresses /permissions rule details, built-in rules and delete confirmation views to use the standard dialog; pressing Ctrl+C twice there now goes back or cancels instead of quitting
No entry names this /claude-api managed-agents-onboard to give a new agent's built-in tools, and a quickstart template's MCP tools, the auto permission policy ("Judge risky actions") by default, matching the Claude Console; say "run without asking" to opt out
No entry names this external_account) credentials file is about to expire
No entry names this listen.trusted_proxies: they now say to list only a proxy that adds the connecting address to X-Forwarded-For itself
Probably gateway-guidance-on-x-forwarded-for-and-trusted-proxies-rewo CLAUDE_RUNNER_SPAWN_REASON to the orchestrator's spawn-runner hook environment: why Anthropic sent the request (e.g. runner_lost, resumed); unset when none was sent
Probably cloud-sessions-and-spawn-reason-in-the-runner --release-idle-session-min is the last argument with no value (still ignored) or has a value of only spaces (still read as 0)
Probably self-hosted-runner-server-sent-idle-session-release, self-hosted-runner-idle-limit-from-anthropics-control-plan ok session=… now prints at every log level on stdout (was debug only, stderr) with reason=… after jti=…, and nack session=… ends its fields with reason=… after retryable=…; update scripts that match retryable=true: or retryable=false:
No entry names this gh run view --log and gh api log requests now get the log in most environments, not an unreachable redirect
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.317.
Claude Code, interactive mode
No prompt capture for v2.1.318, so this release's prompt surface is unknown.
482 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 62 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?