Internal git checks now go through a shared runner#
The internal checks for the current git commit and unpushed commit count now use a shared way of running git
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.
The internal checks for the current git commit and unpushed commit count now use a shared way of running git
Remote sessions gain two settings, refreshed from the server, for when streamed output is sent and how long held output waits
Claude Code gains several internal additions for remote and attached-project sessions, including a set_attached_project control message
Unclear It is not clear whether any of these are used yet or how set_attached_project is reached.
Claude Code can now send a handoff message into a remote session without asking Claude to reply
Unclear It is not clear whether anything in Claude Code sends this message yet.
Settings sent through apply_flag_settings are now removed unless the session service confirms only the owner's account can write to the session
Remote session workers can flag a request so a refused-permission error on it no longer adds to the count of repeated errors
The keep-alive check now learns whether a session is only waiting for you to answer a permission card
In remote sessions, image, audio and video uploads can now say whether the session already has a matching file, except in self_hosted setups
Behind a server switch, a main-conversation turn where Claude says nothing now ends with an empty reply marked as finished
In remote non-interactive sessions waiting on background shell commands, the long wait length can now come from the server instead of being fixed
The message shown when a permission is denied can now mention a session limit, and waiting requests record their folder
Unclear The wording a reader sees when a denial mentions the session limit is not known.
On some remote workers, a line arriving on standard input is dropped with a warning, because only the session stream may deliver input
Unclear It does not say what makes a worker one where only the session stream may deliver input.
Claude Code adds two internal labels for remote sessions, one about handing over while draining and one about answers from subagent cards
When loading a saved session, Claude Code now checks the key order of each line and records many more counts about the scan
On resume, Claude Code can look past trailing context rows when deciding whether your last turn was interrupted
Unclear How these cases change what resume offers to continue is not shown.
In remote sessions, Claude Code now records agents that were no longer tracked because a person stopped them
Claude Code's usage reporting gains fields about plugin steering, Remote Control devices, unanswered memory context and where permissions were asked
Claude Code has a new internal reporting step that is skipped when a remote switch is on and another condition holds
Claude Code now records the web address and directory entry of claude.ai connector tools it uses, checking the address is https
Usage data sent for permission prompts now includes the folder the prompt was asked in, and two new field names were added
Claude Code now reports when a background shell command is stopped at its time limit, restarted, and what work follows
Usage reports can now include whether REPL mode is on, and three new event names are allowed through
Under some condition, Claude Code now sends pending usage data first and waits for its sign-in refresh afterwards
Usage data about loading cloud subagent transcripts now records their size, the event count, and which limit was exceeded
Claude Code's usage data about shell commands now notes when a zsh command begins with '=', which is reported as an error
Claude Code records about 15 more measurements when it scans a transcript to resume a session, and more detail when it clears idle tool uses
When Claude Code cannot read a shell command's CPU time from /proc, it now always logs it and reports unexpected errors
Choosing to ask an admin from the rate-limit menu no longer sends a mode field in its usage report; the menu itself is unchanged
Forked agents can now be started with a pinned effort level, and their REPL session is closed when they finish if a check allows it
Unclear It is unclear when the REPL clean-up runs, so whether subagents actually use their own REPL sessions in this release is not settled.
When one agent hands work back to another, the message now begins with markers carried over from earlier messages
The number applied to background subagent tool calls is now fixed at 180000 rather than set by the server, and is 0 in more cases
Unclear It is not clear what the 180000 controls for background subagent calls.
The time limit for a subagent now takes the triggering message into account, and REPL mode is now kept per session
Agent task notices can carry a caller note and warn Claude to treat text relayed from a Remote Control session as data
Background tasks now record what they were started for, and subagents can record which action launched them
A newly created cloud session can now carry a flag saying it may run on a runner, plus a start notice for self-hosted runners
Unclear It is not clear what a user sees or can do with these new session details.
Cloud worker sessions add a check on narrowing settings to a list, applied when CLAUDE_CODE_ENTRYPOINT is unset or on an allowed list
Permission requests can now include a conversation ID and a compaction ID, and Claude Code can read such requests coming from a cloud session
Unclear It is not clear whether reading permission requests from cloud sessions is switched on for anyone yet.
Claude Code has three new internal labels about moving a local session to the cloud, including by copying it
Unclear It is not clear whether moving a session to the cloud is something you can do yet.
When creating a cloud session, Claude Code now records a refused request separately from one that failed
Remote sessions may now hold back prompt snapshot entries until pending messages upload, changing transcript upload order
Unclear The holding rule comes from the server, so which sessions are affected is not known.
When workflow results contain text marked as coming from a Remote Control session, Claude is told to treat it as data, not instructions
When a file is placed, the result now includes its sha256 checksum and its size
Audio capture and clipboard support check a server setting before loading fallback module files, and may skip them
Unclear What the further check tests is not clear, so it is unknown when audio capture or clipboard support would stop working.
The part of Claude Code that samples process resources now stores its last memory reading along with when it was taken
When Claude Code downloads a file, it now notes the size the server reported, so a download that arrives short can be spotted
A check that used to treat every document attachment like an image now leaves some documents out
Unclear Which documents are now left out, and what that changes for them, is not known.
Claude Code now checks a remote experiment setting and can send one more beta feature request, but what either one does is not known
Unclear What this experiment and the new beta entry control is not known.
A new check compares a value against a number set from Anthropic's servers, which falls back to 0
Unclear What this check controls is not known.
When the server sends nothing, a remote switch no longer always falls back to off and may be on depending on how Claude Code was started
Unclear It is not clear which ways of starting Claude Code get an on fallback, or what the switch controls.
Claude Code skips re-saving unchanged feature flag results in one more case, and has a new option for fetching flags while signed out
A streaming connection can now ask to open a fresh network connection when it reconnects
Unclear It is not clear what marks a connection this way, so it is unknown which sessions get the fresh connection.
The remote switches for Chrome auto-enable, trimming trailing tags from MCP output and one other were only renamed internally
Claude Code can now show a 20-second warning when MCP servers are switched off in a REPL-mode session
When a code mode is set, Claude Code writes a "repl-mode" entry into the session's saved record
New guidance tells Claude to do a turn's investigating in as few REPL calls as possible, in certain conditions
Unclear When this guidance is given to Claude is not known.
In REPL mode, Claude is now told to run a script that collects queued notifications until none remain, instead of calling the tool directly
When the end_conversation tool is called from inside another call, Claude Code can now check which message sent it and end that turn
Unclear It is unclear what switches the new behaviour on, so whether it applies to a given user is not known.
In one mode, the tool that waits for MCP servers says their tools become callable inside the REPL instead of joining the main tool list
Unclear It is not known what switches this REPL mode on, so readers cannot tell whether they will see it.
The preview tunnel now sends content as raw bytes instead of base64-encoded text
Claude Code now remembers whether a remote-control device report existed when a session was killed, so that state carries over
The preview tunnel now accepts requests as text or binary, passes connection data as raw bytes instead of base64 text, and drops malformed requests
Reports on deleted attachment copies over the bridge now name seven failure reasons and use per-type size thresholds
Unclear It is not clear whether these checks only produce reports or can also stop an attachment from reaching a remote session.
Preview tunnel connections can now ask the relay for binary data, falling back to JSON when that keeps failing
A kind of relayed message that used to produce nothing can now pass on a tool result when a condition holds, and a text mix-up was fixed
Unclear It is not clear what condition makes this kind of message carry a tool result.
Certain shell commands are checked twice for permission when a remote switch is on, and a deny from the second check wins
Unclear Which commands match the pattern, and what the second check does differently, is not clear.
Claude Code no longer gives special end-of-command handling to shell commands that contain <( or >(
Claude Code's shell command check skips its quick cached path in more cases and decides "too complex" commands with a single shared check
Unclear It is not clear whether the set of commands that trigger a permission prompt actually changes.
The setup line Claude Code runs before shell commands to switch off zsh extended globbing now ends with a variable part instead of fixed text
Unclear It is unclear what text is now added to the end of the setup line, so its effect on commands is not known.
After a shell command runs, Claude Code now passes on the kinds of command and shell use, and logs more about it
A notification tool's status field, which had to be "proactive", can now be left out
Claude Code can now pass on only queued remote notifications you wrote, and only nudges Claude about your own pending ones
Claude Code changed how an unidentified status or queue display is set up, with no visible effect known
Unclear Which part of the screen this affects is not known.
The theme selection screen is now drawn with a setting saying its title does not come from the app hosting it
Unclear It is not clear whether the theme picker looks any different as a result.
A list row that previewed prompts no longer builds the first two plus a "+N more" count itself and shows a prepared preview instead
Unclear Which list this is, and whether the preview it shows now looks different, is not known.
Claude Code can now skip sending the program_use_case_id value on a request, depending on an extra check made when the request is built
If a side request that labels the turn's use case gets a not-found error, Claude Code stops sending that label for that model for the turn
When keeping request bodies for debugging is switched off, Claude Code now also clears the copies kept for subagents
A report about request bodies now also records a gzip blocks mode, and stream blocks are now marked when they finish
When Claude reads or publishes an artifact, the content now comes with a size limit and details of who wrote it
Claude Code now works out a framing mode for artifact files and applies it when it writes them, cleaning up if a write fails
Unclear It is not clear what the framing value does for the person opening the artifact.
The check on publishing an artifact now tracks whether the audience is outside your organisation, alongside the existing outside-org flag
Fetched artifact files and saved assets are now tracked before and after writing to disk, with cleanup if the write fails
Unclear What the steps run before and after each write record, or whether they change anything a reader can see, is not known.
Claude Code can now ask Anthropic's servers which organization a sign-in token belongs to
Claude Code can now check its stored credentials to see whether a login ended because it reached its time limit
After you switch accounts or sign out, Claude Code now waits on one more step before reporting that your previous login was restored
Unclear What the extra step checks is not known, so it is unclear which situations now stop counting as a restored login.
The error shown when your sign-in can no longer be refreshed now also records whether it ran out of time
When a session is in code mode, Claude Code no longer trims its tool list to the usual allowed set
Unclear It is not stated how a session enters code mode or whether readers' builds can reach it.
The Poll tool in code mode can now be called by sub-agents, drops repeated hook messages, and refuses tool calls when a PreToolUse hook hangs
Unclear It is not clear which condition makes this code mode and its Poll tool available.
A step in Claude Code now runs only when a code mode experiment is switched on, and is skipped otherwise
Unclear It is not clear what turns the code mode experiment on or what this step changes when it does.
When certain internal checks pass, JavaScript in a tool's code field is repaired before the input is used and checked
Unclear It is not clear what the two checks test, so it is unknown whether any user gets this.
When a message to a stopped teammate restarts it, Claude Code now records the message's origin before restarting
When a task cannot be claimed, Claude Code now gives only the reason and the task, no longer the lists of blocking or busy tasks
When claiming a task fails because it is blocked, the result no longer includes the list of tasks blocking it
When old tool results are trimmed from context, the thresholds now add tool calls made since you came back from being idle
Unclear It is not clear what decides whether the after-idle path is used.
Claude Code can record images and documents in tool results that have not been sent yet, and swap them for a placeholder
Unclear It is not clear whether this runs for anyone yet, or what triggers the replacement.
After old tool results are cleared, Claude Code now records how many tool uses went, the token count, and whether that count was measured
Claude Code's list of start-up labels gains one for adding an MCP server from the web, and another list gains a recorded value
When Claude Code refuses to read an unlisted MCP skill resource, a resource outside the loaded skills now gets its own log message
The dialog for importing MCP servers now has a setting that controls whether cancelling is active, and the Chrome setup screen was only renamed internally
Unclear It is unclear what, if anything, changes for you when you cancel the MCP import dialog.
Claude Code gained internal checks for resuming an interrupted turn and for listing queued commands, with no visible effect described
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?