← All changelogs v2.1.224 claude · claude-opus-5 (effort medium)
Claude Code · Source-level changelog

Version 2.1.224

This release brings self-hosted runners into the CLI: a new claude self-hosted-runner command group (orchestrator, setup, doctor, code-sign, decode-token) that anyone can reach without a flag, plus claude --environment ccpool_... to start a cloud session on one of your own environments, non-interactively if you pass a prompt. Memory becomes read-write with a memory_write tool that creates or overwrites whole documents, refusing read-only stores, empty content, oversized content and anything a secret scan flags, and requiring CLAUDE_MEMORY_STORES, the allow_memory_sync permission and CLAUDE_CODE_DISABLE_ORG_MEMORY left unset. Cross-session messaging arrives in usable form for the parts that ship on: a /list-agents command, a new crossSessionInbound setting with accept, hold and refuse, coordinator messages delivered by default when it is unset, and a confirmation prompt for cross-machine sends when peer isolation is on. Sandbox credential masking gains JWT decoding, per-claim masking and AWS SigV4 re-signing via awsPairs, and runners can now refuse repo-committed settings that reach outside the workspace, defaulting to warn. Several things are present but switched off: the ListAgents tool and the local messaging inbox need tengu_harbor_kite or CLAUDE_CODE_HARBOR_KITE and a non-Windows machine, artifact document-database actions need tengu_umber_lattice or CLAUDE_CODE_ARTIFACT_DB, untracked-file upload to cloud sessions needs tengu_violin_wood with remoteFileMode set to container_sync, SSE work hints need CCR_SHR_SSE_HINTS, and the attention budget and PR review artifact have no trigger at all in this build.

Official notes ✓ synced Package @anthropic-ai/claude-code Diff v2.1.223 → v2.1.224Provider claudeModel claude-opus-5 (effort medium)
44
Use it now
168
You'll notice
41
Not switched on
81
Env Vars / Flags

Official Changelog

Official · Anthropic
Anthropic’s official release notes
Published verbatim by Anthropic for v2.1.224 — shown here alongside the source-level analysis below. Text is unmodified from the upstream changelog.
View on GitHub ↗
  • Added self-hosted environments: claude self-hosted-runner turns your own machines or containers into a place Claude Code web, mobile, and desktop sessions can run, on Team and Enterprise plans
  • Added archive plugin source: install plugins from a zip over HTTPS without git or npm, with optional SHA-256 pinning
  • Added a cancel-and-confirm step when removing an unavailable paste changes a command's text
  • Added ANTHROPIC_BEDROCK_REGION_PREFIX env var for Bedrock to prefer a specific cross-region inference profile over the AWS_REGION-derived one
  • Added crossSessionInbound and dialogExpiry settings: cross-session messages sent to a session running with bypassed permissions are held for your approval, and messages to other sessions auto-deliver
  • Added sandbox credential-masking options: extract and onExtractNoMatch for structured env values, decode: "jwt" with maskClaims for JWT-aware masking, and awsPairs/sigv4 for AWS SigV4 re-signing; these need network.tlsTerminate and are honored only from user, managed, or --settings settings
  • Added cross-session SendMessage: Claude Code sessions can now message each other, on any of your machines, with ListAgents to discover them (macOS and Linux)
  • Fixed long (>200 char) project paths resolving to another project's session directory under a shared sanitized prefix; session list, rename, fork, delete and /resume no longer cross projects
  • Fixed SendMessage reporting "Message sent" when the write to a teammate's inbox had actually failed; failed deliveries are now reported as errors
  • Fixed sandbox filesystem deny entries written with a trailing slash (e.g. denyRead: "~/.aws/") being silently bypassable on Linux and macOS
  • Fixed sandbox violation details never appearing in Bash tool results; Claude now sees which file or network access was denied and why
  • Fixed MCP tools that connect mid-turn being deferred for tool search without their names announced to the model
  • Fixed plugin install records being silently corrupted when the same plugin is installed in multiple projects
  • Fixed recalled or restored paste content occasionally attaching wrong data or silently losing text when the paste had aged out or placeholder numbers collided
  • Fixed copy-on-select on Wayland sometimes not reaching the clipboard; the two selection writes no longer race
  • Fixed the feedback survey's transcript share silently failing on long sessions; a failed share now shows an error instead of a success message
  • Fixed Remote Control auto-start intermittently failing with "Remote credentials fetch failed" on a cold start with a stale login token
  • Fixed Remote Control and SDK clients showing a blank "(no content)" message after /clear and other output-less commands
  • Fixed a Remote Control session recreated after its server session expired uploading prior local conversation history into the new session
  • Improved fullscreen mode to keep the full pre-compaction history in scrollback across repeated compactions, instead of only the most recent interval
  • Improved Remote Control: attached web and mobile clients now see compaction progress and the post-compaction boundary instead of a silent pause; /clear resets now propagate to attached clients
  • Improved Remote Control: connection failures now show a persistent failure indicator with details and a reconnect shortcut, instead of only an 8-second toast
  • Removed the 200-subagent-per-session spawn cap; long-running sessions no longer refuse new agents (concurrency and depth limits still apply)
  • Changed managed settings: the approval prompt no longer re-appears after re-login or org switching when the organization's settings are unchanged
  • Changed the feedback-survey transcript share: with your consent it now also uploads the last request's model settings — the system prompt (which includes your CLAUDE.md instructions), tool definitions, and model parameters. Secrets are redacted as before, and these fields are dropped first if the share is too large
  • Changed the Bash tool description to always note that command output is displayed to the model, not reliably to the user
  • Changed recalled paste placeholder numbers to renumber when accepted into the input
  • Changed Remote Control to archive the stale server session instead of leaving a dead one listed when a fresh session is minted after compaction or /resume
  • [VSCode] Fixed the extension showing Remote Control as connected after the connection failed
  • Fixed a session resume silently reconnecting Remote Control after the user turned it off (--resume, SDK hosts, and the VS Code extension)
  • [VSCode] Fixed sessions not honoring remoteControlAtStartup when explicitly enabled
Source: anthropics/claude-code · CHANGELOG.md · 31 entries · synced automatically when Anthropic publishes official notes for a version.
Source-Level Analysis
Reverse-engineered from a diff of the bundled CLI — deeper, structured detail. Unofficial.

Highlights

12 of 352
The rest of the release is below, all 352 findings. Filter it, or open any card for the full detail and source evidence.

Present but switched off

10 of 48
Shipped inside the bundle with its gate off, its guard hardcoded false, or nothing calling it. What the code shows, not a roadmap: no claim about what is released, announced or planned.
Filter

What probably matters to you

109 items

Anything you can use today, anything that visibly changes, and anything worth poking at. One line each, open for detail.

/list-agents shows every Claude session you can message #

Juicy

Type /list-agents or /peers to see every Claude session you can message, with status and age.

/list-agents/peers
Use it now · Slash Commands

MCP tools that need you to click through are not silently pre-approved #

MCP tools that need you to click through always reach you instead of being auto-approved.

You'll notice · MCP

--teleport and --cloud show up in claude --help #

Juicy

`--teleport` and `--cloud` now show up in `claude --help`.

--teleport--cloud--remote
Use it now · CLI

claude plugin eval writes a report and publishes it by default #

Juicy

Plugin eval now writes report.html and publishes it to claude.ai unless you pass --no-publish.

claude plugin eval--no-publish--publish-report--report
Use it now · Plugin Eval

Auto mode can classify questions instead of stopping #

Juicy

In auto mode, a question can be classified and handled instead of halting the run.

CLAUDE_CODE_AUTO_MODE_CLASSIFY_ASK_USER_QUESTION
Use it now · Auto Mode

Cross-machine messages ask first when peer isolation is on #

Juicy

With isolatePeerMachines on, cross-machine messages now stop and ask for your approval.

isolatePeerMachines
Use it now · Cross-Session Messaging

New dialogExpiry setting for how long forwarded dialogs wait #

Juicy

Set dialogExpiry to control how long a forwarded permission prompt waits before resolving to its safe default.

dialogExpiryCLAUDE_CODE_USER_DIALOG_TIMEOUT_MS
Use it now · Permissions

New setting: crossSessionInbound #

Juicy

crossSessionInbound accepts accept, hold or refuse for messages arriving from your other sessions.

crossSessionInboundacceptholdrefuse
Use it now · Cross-Session Messaging

Sandbox network rules can specify a port #

Juicy

Sandbox allow and deny rules can now target a specific port instead of the whole host.

Use it now · Sandbox

plugin eval: report publishing flags reworked #

Juicy

Plugin eval publishes its HTML report by default; --publish-report now means require publishing.

--publish-report--no-publish--reportclaude plugin eval
Use it now · Plugin Eval

Artifact tool now explains exactly which credential is blocking it #

The artifact tool now names the exact credential blocking you, with a fix for each.

ANTHROPIC_API_KEYapiKeyHelper
You'll notice · Artifacts

Clearer denial when a tool needs approval but no prompt can be shown #

When no prompt can be shown, denials now tell the model not to fake success.

You'll notice · Permissions

Cross-session messages render as a chat line #

Messages from another session now render as a chat line instead of raw XML.

You'll notice · Cross-Session Messaging

Feedback tool now covers Claude's own behaviour, not just product bugs #

Claude will now offer to draft feedback when it itself goes wrong in your session.

You'll notice · Feedback

History search puts the cursor on the text you searched for #

After a reverse history search, the cursor lands on the text you searched for.

You'll notice · Input

Linux sandbox violations show the real command #

Linux sandbox violations now show the real command, so ignoreViolations patterns match what you wrote.

ignoreViolations
You'll notice · Sandbox

Messages from other sessions can be held for your approval #

Messages from a session with a mismatched permission mode are held and shown with an approve/deny dialog.

You'll notice · Cross-Session Messaging

Plugins enabled only by repo settings are no longer auto-installed and recorded #

A plugin switched on by repo settings alone is no longer installed into your own records.

You'll notice · Plugins

Remote Control disconnects appear in the transcript #

Losing Remote Control now adds a transcript warning hinting at `/remote-control` to reconnect.

/remote-control/remote
You'll notice · Remote Control

Sandbox network denials now tell you why #

Blocked network calls in the sandbox now tell you the host, port and reason.

You'll notice · Sandbox

Tell another Claude session something and hear back when it was not delivered #

If another session holds, denies or ignores your message, you now see a warning instead of silence.

You'll notice · Cross-Session Messaging

Memory writes are scanned for secrets before they land #

Memory writes get scanned for secrets and refused, naming what matched and that the store is shared.

Not switched on · Memory

self-hosted-runner orchestrator polls for spawn hints and runs your own spawn script #

Juicy

An orchestrator subcommand polls for capacity hints and runs your own spawn-runner script to autoscale.

self-hosted-runner orchestrator--hook-concurrency--hook-timeout--expected-spawn-seconds--min-idle
Use it now · Self-Hosted Runner

Advisor tool options and session budgets documented #

Juicy

Bundled API docs now cover advisor tool limits, caching, and session spend budgets you can set or remove.

max_usesmax_tokenscachingmax_list_cost
Use it now · API Docs

Compact summaries are flagged as synthetic in SDK output #

Compaction summaries are flagged synthetic in SDK and stream-json output so you can filter them.

stream-json
Use it now · SDK Output

Git identity, commit signing and proxied clones for runner sessions #

Juicy

--configure-git sets a commit identity and installs SSH commit signing backed by a code-sign subcommand.

--configure-gitself-hosted-runner code-sign--use-anthropic-git-proxy
Use it now · Self-Hosted Runner

Plugins can be installed from a zip archive #

Marketplaces can offer plugins as zip downloads with an optional sha256 pin that doubles as the version.

archivesha256
Use it now · Plugins

Plugins can be installed from an HTTPS zip archive #

Zip plugin installs strip a single wrapping directory so the plugin lands at top level.

sha256
Use it now · Plugins

Remote sessions can run on self-hosted runner pools #

Juicy

You can target your organization's own runner machines when starting a remote session.

/remote
Use it now · Self-Hosted Runner

Runner collects metrics from its child sessions and re-exports them #

Juicy

Set OTEL_METRICS_EXPORTER=prometheus and child sessions report through the runner, giving one scrape target per machine.

OTEL_METRICS_EXPORTER
Use it now · Self-Hosted Runner

Sandbox credential masking gains JWT handling, per-claim masking and AWS SigV4 re-signing #

Juicy

Sandbox credential masking can fake JWTs, mask single claims, and re-sign AWS requests after swapping keys.

sandbox.credentialsdecodemaskClaimsawsPairssigv4
Use it now · Sandbox

Self-hosted runner operator tools #

Juicy

Nine operator tools can inspect runners, sessions, secrets, health, metrics and logs, loaded only via --base-tools.

CLAUDE_CODE_REMOTE
Use it now · Self-Hosted Runner

Advisor entry added to Managed Agents multiagent rosters #

Multiagent rosters can include one advisor entry so the main thread consults a stronger model mid-turn.

advisor
You'll notice · Claude API Skill

Memory documents carry version tokens and report conflicts #

Org memory documents now show version tokens and report conflicts so concurrent edits get retried instead of clobbered.

You'll notice · Memory

/ultrareview prompts and free-quota counts, all switched off by default #

Your remaining free cloud reviews can appear in the slash menu and in tips after commits.

/ultrareviewCLAUDE_CODE_ULTRAREVIEW_QUOTA_FIXTURE
Not switched on · Code Review

Artifact tool gains a document database, off by default #

Juicy

Published artifacts can gain a document database Claude reads and writes, off unless you set the env var.

CLAUDE_CODE_ARTIFACT_DB
Not switched on · Artifacts

Cross-session messaging inbox now actually starts at startup #

Juicy

Startup can now actually open the local socket that lets other sessions message you.

CLAUDE_CODE_HARBOR_KITECLAUDE_CODE_MESSAGING_SOCKET
Not switched on · Cross-Session Messaging

Effort slider can show what each level costs #

The thinking-effort picker can show what each level costs relative to the default.

Not switched on · Thinking Effort

Fleet view can list sessions it has no record of #

Fleet view can show other running sessions it never tracked, once two gates are on.

Not switched on · Background Tasks

New ListAgents tool for finding other sessions you can message #

Juicy

A tool that lists other Claude sessions you can message exists but stays off by default.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

SendMessage can address other sessions directly and reports delivery timing #

Juicy

Messages can be addressed to a specific session by socket or id, blocked unless peer messaging is enabled.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

Untracked files can be uploaded to a cloud session's working directory #

Juicy

Cloud sessions can upload untracked files, but only behind an off-by-default gate and a project setting.

remoteFileModecontainer_sync
Not switched on · Cloud Sessions

self-hosted-runner decode-token inspects a session token, verifying it by default #

Juicy

decode-token prints a session token's claims, verifying signature and expiry by default.

self-hosted-runner decode-tokenCLAUDE_CODE_SESSION_ACCESS_TOKEN--header--no-check-expiry--no-verify
Use it now · Self-Hosted Runner

Self-hosted runner installs a code-sign shim #

Juicy

The runner writes a code-sign helper script, using CLAUDE_RUNNER_CLAUDE_BIN if you set it.

CLAUDE_RUNNER_CLAUDE_BINself-hosted-runner code-sign
Use it now · Self-Hosted Runner

Inference geography can be pinned on a Managed Agents agent #

The Claude API docs describe pinning inference geography to us or global on an agent's model.

inference_geo
You'll notice · Claude API Skill

Workshop document writes counted separately in the activity summary #

Writes to workshop documents are counted separately from scratchpad writes in the activity summary.

You'll notice · Activity Summary

Attention budget: state and telemetry land, nothing can trigger it #

Juicy

A per-session attention budget with up and down shortcuts is built but completely unreachable.

Not switched on · Context Management

Forked sessions are told once that their twin is still running #

A forked session can be told once that its twin is still live and how to reach it.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

Git checkout machinery for self-hosted runners ships in full #

Juicy

Full git checkout machinery for self-hosted runners now ships, but you cannot reach it interactively.

CLAUDE_RUNNER_FETCH_DEPTH
Not switched on · Runners

Newer cloud session creation endpoint for review and plan sources #

Cloud sessions from review or plan sources can use a newer creation endpoint allowing --project grouping.

--project
Not switched on · Cloud Sessions

Server can push work hints over SSE so the runner picks up jobs faster #

Juicy

The runner can hold a live server connection and wake instantly on work, but it defaults off.

CCR_SHR_SSE_HINTS
Not switched on · Self-Hosted Runner

Directory sync apply starts with the working-file syncer #

Juicy

Startup also starts a directory sync apply step alongside the working-file syncer in normal local sessions.

CLAUDE_CODE_ENVIRONMENT_KINDCLAUDE_CODE_DISABLE_WORKING_SYNC
Under the hood · Sync

Plan-mode reentry records whether artifacts come first #

Re-entering plan mode records whether the setup calls for artifacts first.

Under the hood · Plan Mode

Two session-restore options are wired up but do nothing yet #

Session restore passes budget-preserving options that the receiving code currently ignores.

Not switched on · Session Restore

Storage backend plumbed through several call sites but not switched on #

Several config and session lookups can accept a new storage backend, but none supply one yet.

Under the hood · Internals

New memory_write tool for saving documents to a connected memory store #

Juicy

Claude can now save documents into a connected memory store, with secret scanning blocking risky writes.

memory_writememory_listmemory_readCLAUDE_MEMORY_STORESCLAUDE_CODE_DISABLE_ORG_MEMORY
Use it now · Memory

"pool" renamed to "environment" in runner flags, old names still work #

Juicy

Runner "pool" flags are renamed to "environment"; old names still work but warn.

--environment-secret-fileSELF_HOSTED_RUNNER_ENVIRONMENT_SECRET--pool-secret-fileSELF_HOSTED_RUNNER_POOL_SECRET--environment
Use it now · Self-Hosted Runners

ANTHROPIC_BEDROCK_REGION_PREFIX pins the Bedrock inference-profile region #

Juicy

Set ANTHROPIC_BEDROCK_REGION_PREFIX to pick which regional inference profile your Bedrock models resolve to.

ANTHROPIC_BEDROCK_REGION_PREFIX
Use it now · Bedrock

claude self-hosted-runner command group #

Juicy

A whole new claude self-hosted-runner command tree is available to anyone who types it.

claude self-hosted-runnerself-hosted-runner orchestratorself-hosted-runner setupself-hosted-runner doctorself-hosted-runner code-sign
Use it now · Self-Hosted Runner

Create a cloud session without a terminal #

Juicy

Create a cloud session straight from the command line with --environment and a prompt, optionally as JSON.

--environment
Use it now · Cloud Sessions

Cross-session messages from a coordinator are now delivered by default #

Juicy

Task notifications from a coordinator session now arrive automatically unless you set crossSessionInbound to refuse or hold.

crossSessionInboundrefusehold
Use it now · Cross-Session Messaging

New environment variable CLAUDE_CODE_MESSAGING_SOCKET #

Juicy

Point CLAUDE_CODE_MESSAGING_SOCKET at a socket path to enable session-to-session messaging and stream-json message replay.

CLAUDE_CODE_MESSAGING_SOCKETstream-json
Use it now · Cross-Session Messaging

New setting: dialogExpiry #

Juicy

dialogExpiry accepts 60s, 5m, 10m or never for how long forwarded dialogs and held messages wait.

dialogExpiry
Use it now · Permissions

Start a cloud session on a self-hosted environment with --environment #

Juicy

Start a cloud session on your own environment with claude --environment, plus hidden --ref and --on-branch companions.

--environment--pool--correlation-id--ref--on-branch
Use it now · Cloud Sessions

sandbox.ignoreViolations can now be scoped to specific commands #

Juicy

You can silence sandbox violations for one command instead of all of them.

Use it now · Sandbox

Bridge messages from peers can no longer skip the approval gate #

Text arriving over the editor bridge from peers can no longer run immediately without approval.

You'll notice · Editor Bridge

Clearer message when a tool needs approval and no prompt can be shown #

In headless runs, denials now tell the model approval is impossible and not to retry.

You'll notice · Permissions

Exiting no longer races history writes #

Quitting right after a turn no longer loses your last history entry.

You'll notice · Sessions

Forked skill launches: session cap removed, duplicate race closed #

Juicy

The cap on forked-skill subagents per session is gone, and duplicate launches are blocked.

You'll notice · Subagents

Invalid sandbox credential settings now fail closed instead of being ignored #

A malformed sandbox.credentials block now denies everything instead of quietly disabling protection.

sandbox.credentials
You'll notice · Sandbox

Login errors for artifacts say which credential is in the way #

Artifact login errors now name which credential is blocking you and how to fix it.

You'll notice · Artifacts

New post-commit review hook fires after git commits #

After a git commit completes, Claude is now nudged to review what it just committed.

You'll notice · Git Integration

Prompt history remembers pasted content and how you submitted #

Recalling an old prompt now restores its pasted attachments and remembers how you submitted it.

CLAUDE_CODE_SKIP_PROMPT_HISTORY
You'll notice · Prompt History

Runner management tools require a first-party login and say so #

Runner management tools now require `claude login` on Anthropic's API; API keys are rejected.

claude loginANTHROPIC_BASE_URL
You'll notice · Self-Hosted Runners

Sharing a transcript retries with smaller payloads instead of failing #

Sharing an oversized transcript now retries with trimmed versions instead of just failing.

You'll notice · Sessions

The per-session subagent spawn limit is gone #

Juicy

You can spawn as many subagents as you want in one session; the per-session cap is gone.

You'll notice · Subagents

claude eval --interactive is documented #

`claude eval --interactive` now appears in help; `--interview` remains a hidden alias.

--interactive--interview
Use it now · Plugin Eval

self-hosted-runner setup and doctor walk you through it in a scoped Claude session #

Juicy

setup and doctor relaunch Claude with a restricted toolset to walk you through runner install and diagnostics.

self-hosted-runner setupself-hosted-runner doctor
Use it now · Self-Hosted Runner

Artifact kill switch now applies to more artifact paths #

Juicy

The artifact kill switch now actually disables two more paths that ignored it.

CLAUDE_CODE_DISABLE_ARTIFACTdisableArtifact
Use it now · Artifacts

Feedback drafting tool queues a report you review before sending #

Claude can draft a feedback report locally that waits for you to review and send via /feedback.

/feedback
Use it now · Feedback

Local messaging socket: where it lives, who can read it, and refusing to steal a live one #

Juicy

The messaging socket lives under XDG_RUNTIME_DIR with locked-down permissions and refuses to hijack a live one.

--messaging-socket-pathCLAUDE_CODE_MESSAGING_SOCKETXDG_RUNTIME_DIR
Use it now · Cross-Session Messaging

Plugins can be installed from a zip archive over HTTPS #

Install plugins from an HTTPS zip, with a sha256 pin checked on every download.

archivesha256
Use it now · Plugins

Prometheus metrics on the runner and orchestrator health port #

Juicy

The runner and orchestrator serve Prometheus metrics at /metrics on the health port.

--health-port/metrics/healthz
Use it now · Self-Hosted Runner

Runner can refuse repo-committed settings that reach outside the workspace #

Juicy

The runner can warn about or block repo-committed settings that grant access outside the workspace.

--confine-repo-settingsSELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS
Use it now · Self-Hosted Runner

Runner lifecycle controls: scheduled retirement, idle release, outcome branch push #

Juicy

New flags retire a runner at a set time, release idle sessions, and control drain behaviour.

--retire-atSELF_HOSTED_RUNNER_RETIRE_AT--release-idle-session-min--startup-timeout-min--kill-session-after-min
Use it now · Self-Hosted Runner

Self-hosted runner hooks get the session UUID #

Juicy

Runner hooks now get CLAUDE_RUNNER_SESSION_UUID and CLAUDE_CODE_REMOTE_SESSION_UUID so your scripts can key on the session.

CLAUDE_RUNNER_SESSION_UUIDCLAUDE_CODE_REMOTE_SESSION_UUID
Use it now · Self-Hosted Runner

Tunnel from the orchestrator to a private GitHub Enterprise host #

Juicy

Pass --scm-connector-host to tunnel Anthropic requests into a GitHub Enterprise server only your network can reach.

--scm-connector-host--scm-connector-id--scm-connector-provider--scm-connector-ca-file--scm-connector-host-rewrite
Use it now · Self-Hosted Runner

Managed Agents sessions can carry a hard dollar spend cap #

The bundled Claude API docs now describe a hard dollar spend cap that pauses a session idle.

budgetmax_list_cost
You'll notice · Claude API Skill

Turn summary now counts workshop page edits and hook time #

Turn summaries now count workshop page edits and how long PreToolUse hooks took.

You'll notice · Activity Summary

An auto-generated index of your memory files #

Claude can auto-generate an index of your memory files and feed it in as a source.

CLAUDE_CODE_REMOTE
Not switched on · Memory

Artifact tool gains document-store read and write #

Artifacts get document read and write operations with separate remembered consent for each.

Not switched on · Artifacts

Effort picker can show relative cost, gated off #

Effort levels can be labelled with relative cost like ~2x, hidden behind an off gate.

Not switched on · Thinking Effort

Files received from a peer session are verified before use #

Files another session sends you are size- and hash-checked and confined to a staging folder before use.

Not switched on · Cross-Session Messaging

Memory writes will require the version token from your last read #

Memory writes will need the version token from your last read, forcing a read before overwriting.

Not switched on · Memory

Permission prompts for artifact database access #

Artifact database access asks permission first, with reads and writes scoped differently.

CLAUDE_CODE_ARTIFACT_DB
Not switched on · Artifacts

Untracked files can be seeded into a cloud session #

Juicy

Teleporting to a cloud session can upload your untracked files so the remote starts with them.

remoteFileModecontainer_sync
Not switched on · Cloud Sessions

Teammate messages carry the sender's permission mode #

Messages between agents now carry the sender's permission mode, preserved across relays.

Under the hood · Agents

Eval-authoring guidance had two wrong field names #

Plugin eval guidance now names the real fields, suite.plugins and costUsd.

suite.pluginscostUsdaggregate-result.json
Use it now · Plugins

Two environment knobs for runner git fetches #

Juicy

Two env vars change how runner git fetches handle retries and stalled delta resolution.

CLAUDE_RUNNER_FAIL_FAST_FETCHCCR_DELTA_RESET
Use it now · Self-Hosted Runner

Tighter limits on the first publish of a review page #

First publish of a review page now caps followups, unchanged items and text lengths.

You'll notice · Review Pages

Artifact database access must be declared when publishing #

An artifact must declare database capability when published, or database calls fail and ask you to republish.

CLAUDE_CODE_ARTIFACT_DB
Not switched on · Artifacts

Cloud sessions can be created through a newer request shape #

Cloud session creation can use a newer request shape for review and plan sources.

--project
Not switched on · Cloud Sessions

Forked sessions can be told their original is still running #

A forked session can be told its original is still running and how to message it.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

Memory index built by scanning files rather than read from disk #

A memory index can be generated by scanning recent files rather than read from a stored index.

Not switched on · Memory

PR review artifact publishing, present but hard off #

Juicy

A full pull request review page with diagrams and comparisons is built but never offered.

Not switched on · Artifacts

Assistant text is scanned for harness-shaped tags #

Claude's own replies are scanned for text imitating internal control markup, and matches counted only.

Under the hood · Permissions

Model catalog ships per-effort cost multipliers #

Bundled models carry per-effort cost multipliers, though nothing in this build reads them.

Under the hood · Model Catalog

Startup remote-control setting now tracks where its value came from #

Remote control startup now records where its on/off value came from, but nothing reads that yet.

remoteControlAtStartup
Under the hood · Remote Control

Wizard operator tools have a one-way on switch #

Juicy

A session switch for wizard operator tools exists, defaults off, and can never be turned back off.

Not switched on · Tools
Everything else · 243
Smaller changes and internals, grouped as the pipeline found them. Nothing is dropped, it is only further down.

New Features

24 items

Visible failure state when sharing a transcript doesn't go through #

A failed transcript share now says so in the dialog and points you at /feedback.

/feedbackDISABLE_FEEDBACK_COMMANDDISABLE_BUG_COMMAND
You'll notice · Transcript Sharing

Cowork warns when your default environment isn't in the org's list #

You get a logged warning if your default self-hosted environment isn't in your org's list.

You'll notice · Cloud Sessions

Remote-control autostart decision is resolved in one place #

One resolver now decides whether Remote Control starts and in which mode, weighing flags, settings and env vars.

CLAUDE_CODE_REMOTE--remote-controlCLAUDE_BRIDGE_REATTACH_SESSIONCLAUDE_BRIDGE_REATTACH_OUTBOUND_ONLY
Under the hood · Remote Control

Two warnings when a Bedrock region prefix cannot be confirmed #

Bedrock now warns when it can't confirm a region prefix, or when models resolve elsewhere.

ANTHROPIC_BEDROCK_REGION_PREFIX
You'll notice · Bedrock

Peer address shown in the session info panel #

The session info panel now shows your peer socket address when cross-session messaging is on.

CLAUDE_CODE_MESSAGING_SOCKETCLAUDE_CODE_HARBOR_KITE
You'll notice · Cross-Session Messaging

Invoking the prototype skill directly starts prototype mode #

Invoking the prototype skill yourself now actually starts prototype mode.

You'll notice · Elsewhere

Remote Control errors are typed as auth or terminal #

Remote Control failures are labelled auth or terminal, and auth ones point you at /login.

/login
You'll notice · Remote Control

MCP OAuth failures name the specific issuer mismatch #

MCP OAuth failures now tell you it was an issuer mismatch instead of a generic error.

You'll notice · MCP

Sandboxed commands are tagged with an attribution id #

Sandboxed commands now carry an id into the sandbox config so activity traces back to its command.

Under the hood · Sandbox

Cloud seeding tells you when there are too many untracked files #

If you have too many untracked files, cloud seeding refuses and tells you which budget you blew.

.gitignore
You'll notice · Cloud Sessions

Skills can be loaded from a mounted GitHub repository #

Skills can load from a mounted repo's .claude/skills, in cloud sandboxes only.

.claude/skills
You'll notice · Skills

Local runner spawn writes into ./runner-setup and checks 127.0.0.1:8080 #

The setup wizard spawns a detached runner into ./runner-setup and warns it outlives your session.

--api-url--base-dir--environment--environment-secret-file--health-port
You'll notice · Self-Hosted Runner

Invalid extraKnownMarketplaces entries are dropped with a warning #

Bad marketplace entries in your settings are now removed and reported as warnings instead of silently accepted.

extraKnownMarketplaces
You'll notice · Plugins

Sandbox violations record the command that caused the blocked request #

Blocked network requests are now recorded with the command that made them, not just dropped.

You'll notice · Sandbox

Sandbox network denials name the command that caused them #

Blocked outbound connections now name the shell command responsible.

You'll notice · Sandbox

Published plans are rendered from a plan template and tracked #

Published plans now use their own page template and get their own tracked addresses.

You'll notice · Artifacts

Remote Control tells you when a credential expired instead of just dropping #

An expired Remote Control credential now closes with a clear message telling you to run /login.

/login
You'll notice · Remote Control

Workshop file writes are counted in the turn summary #

Workshop file writes are counted separately per turn and shown in the status display.

You'll notice · Artifacts

Peer messages carry the sender's permission mode #

Messages between sessions now carry whether the sender was bypassing permissions or prompting.

Under the hood · Cross-Session Messaging

Prototype runs and publishes now report their own telemetry #

Prototype runs and publishes now emit their own telemetry events with the artifact slug.

Under the hood · Elsewhere

Plugin eval can validate and report its own JSON output #

Plugin eval JSON output is validated before printing, and suppressed with a stderr warning if invalid.

claude plugin eval--json
You'll notice · Plugin Eval

Messages relayed between your own sessions are now labelled as such #

Messages relayed from your other sessions are now tagged as peer sends rather than looking like scheduled triggers.

Under the hood · Cross-Session Messaging

Improvements

89 items

Artifact publish prompts now name claude.ai #

Publish prompts now say your file becomes a private page on claude.ai instead of an "Artifact".

You'll notice · Artifacts

Remote transcript upload detects rewritten history and skips suppressed sessions #

Remote transcript uploads track message ids, so compaction no longer loses or duplicates work.

You'll notice · Sessions

Inherited plugins no longer force a lockfile refresh #

Plugins inherited from elsewhere no longer force your plugin lockfile to refresh.

You'll notice · Plugins

Remote bridge retries once after refreshing an expired token #

A remote bridge session that hits an expired token now refreshes and retries once.

You'll notice · Sessions

Session lookup can match a project by the directory recorded in its transcript #

Sessions in truncated or same-named project folders now resolve using the recorded working directory.

You'll notice · Sessions

Clearer error when --bg and --environment are combined #

Combining --bg and --environment now explains they are different backends and shows the right command.

--bg--environment
You'll notice · CLI

Remote worker conflicts say whether the registration was stale or superseded #

Worker registration conflicts now say whether the registration was stale or superseded.

You'll notice · Sessions

Question prompts are classified using the whole prompt, not just the question text #

Question prompts are classified using labels, descriptions and headers, not just the question text.

You'll notice · Permissions

Memory listings point at each store's index document #

Memory listings now show each store's index document path, and reads carry a version.

You'll notice · Memory

Bug reports carry the last API request #

Bug reports you send now include the most recent API request for context.

You'll notice · Feedback

Read-only memory stores are refused up front #

Saving to a read-only memory store now fails immediately and lists stores you can write to.

You'll notice · Memory

Cross-session sends take plain text without a summary #

Messages to another session accept plain text without a summary; structured objects are rejected.

You'll notice · Cross-Session Messaging

Reattaching to a remote session can skip replaying history #

Reattaching to a remote session can skip resending history the client already has.

You'll notice · Sessions

Forking a session tells the model the fork is separate #

After forking, Claude is told the fork is a separate session reachable by name.

You'll notice · Sessions

Peer lookups say when other machines' sessions could not be checked #

If peer listing failed, the not-found message now says other machines could not be checked.

You'll notice · Cross-Session Messaging

Sandbox credential matching ignores ports and schemes in host entries #

Sandbox credential host entries written with a port or scheme now still match.

You'll notice · Sandbox

Archive-installed plugins get a real version instead of "unknown" #

Plugins installed from an archive now show a real version instead of "unknown".

You'll notice · Plugins

claude plugin eval init no longer suggests a flag that will not help #

The no-terminal message for eval init dropped a flag suggestion that would not have helped.

You'll notice · Plugin Eval

Plugin install retries inside a wrapper directory #

Plugin installs now retry inside an archive's wrapper folder when declared paths are missing.

You'll notice · Plugins

Shell commands run from a skill preamble get distinct IDs #

Commands run from a skill preamble get their own IDs, so results no longer collide.

You'll notice · Skills

A locally configured self-hosted pool always appears as a target #

Your configured self-hosted pool now appears in the picker even if the server omits it.

You'll notice · Self-Hosted Runners

Git clone errors no longer mangle URLs containing dollar signs #

Clone errors no longer mangle text when the repository URL contains dollar signs.

You'll notice · Elsewhere

Failed peer listings are reported rather than looking empty #

A failed peer listing is now reported as a failure rather than an empty roster.

You'll notice · Cross-Session Messaging

Inline plugin downloads retry the final file move #

Inline plugin downloads retry the final file move, cutting spurious install failures.

You'll notice · Plugins

Feedback drafts explicitly cover the model's behaviour, not just the product #

The feedback tool now says it covers Claude's own behaviour, not just product bugs.

You'll notice · Feedback

Compaction boundaries can appear in streamed output #

Compaction boundary markers can now show up in streamed output.

You'll notice · Compaction

Team memory prompt no longer explains saving when nothing can be saved #

With no writable team memory, Claude is no longer told how to save memories.

You'll notice · Memory

Expired pastes are dropped from the prompt with an explanation #

Expired pastes are dropped from your prompt with a notice instead of sending a placeholder.

You'll notice · Input

Host credentials path normalised like every other sandbox rule #

A trailing slash in your host credentials file path no longer changes whether the rule matches.

CLAUDE_CODE_HOST_CREDS_FILE
You'll notice · Sandbox

Sandbox violation text is stripped of angle brackets #

Angle brackets are stripped from sandbox violation text before it is stored.

Under the hood · Sandbox

Command execution can redirect child output #

Command helpers can now redirect child output instead of always buffering it in memory.

Under the hood · Elsewhere

Clearer failure when a plugin uses an unsupported source type #

A plugin source this version does not recognise now tells you to update Claude Code.

You'll notice · Plugins

SendMessage skips the auto-mode classifier #

Messaging another agent skips the auto-mode classifier and no longer counts toward denials.

You'll notice · Cross-Session Messaging

Artifact publish errors say whether retrying can help #

Artifact publish errors now say whether retrying will help, based on the HTTP status.

You'll notice · Artifacts

Sandbox proxy only buffers request bodies when there is one #

The sandbox proxy only buffers request bodies when one exists, and tears down bad requests.

You'll notice · Sandbox

claude plugin eval init --interactive fails clearly without a terminal #

Asking for the eval interview without a terminal now fails clearly and tells you the alternative.

--interactive
You'll notice · Plugin Eval

Bedrock inference profile lookup failures are logged #

Bedrock profile lookup failures are now logged instead of silently falling back to built-in models.

You'll notice · Bedrock

Trailing slashes in permission and sandbox path rules #

Permission and sandbox path rules now strip trailing slashes consistently, including UNC paths.

You'll notice · Permissions

Guidance on when multiagent is worth it, and a corrected docs link #

Multiagent docs gained a staged guide on when extra agents are actually worth it.

You'll notice · Agent SDK Docs

Agent versions are sequential integers, not timestamps #

Agent versions are documented as counting up from 1, not timestamps.

Under the hood · Agent SDK Docs

Proxy tears down both sockets on a rejected request, and chunks bodyless forwards #

The proxy now closes both sockets on a rejected request instead of leaving half-open connections.

You'll notice · Sandbox

Clearer answer when a message target is not found #

An unresolved message target now says which of three reasons applied, hedging if listing timed out.

You'll notice · Cross-Session Messaging

Sandbox proxy credentials are unique per sandbox instance #

Concurrent sandboxes now get unique proxy usernames instead of sharing one identity.

HTTP_PROXYALL_PROXYCLOUDSDK_PROXY_USERNAME
You'll notice · Sandbox

MCP OAuth discovery cache is re-validated against policy #

Cached MCP OAuth details are rechecked against policy, so moved servers no longer authenticate stale.

You'll notice · MCP

Memory paths capped at 1024 bytes and reserved names refused #

Memory paths over 1024 bytes and reserved names like skills or hooks are now refused.

You'll notice · Memory

Plugin marketplace downloads get a size cap and redirect checks #

Marketplace downloads now cap response size and vet redirects before following them.

You'll notice · Plugins

Long tool results are clamped in the memory tool output #

Memory tool output is trimmed to 10 lines unless you run in verbose mode.

You'll notice · Memory

Settings refresh skips notifying when a login or logout races it #

Logging in or out mid-refresh no longer lets stale settings overwrite your new state.

You'll notice · Settings

Plugin install from a marketplace now honours archive auth on one more path #

Installing from a marketplace entry now forwards archive credentials on one more code path.

You'll notice · Plugins

Self-hosted environments get a labelled section in the picker #

The environment picker now shows a labelled divider above your self-hosted entries.

You'll notice · Self-Hosted Runners

Broken marketplace entries say what is wrong with them #

A broken marketplace entry now tells you what failed validation instead of a generic message.

You'll notice · Plugins

Clearer warning when writing into an unsynced memory-store copy #

Writing into a stale local copy of a memory store now warns that nothing syncs it.

CLAUDE_MEMORY_STORES
You'll notice · Memory

Sandbox proxy logs blocked requests and repairs lost request framing #

The sandbox proxy now logs each denied request with its method, URL and reason.

You'll notice · Sandbox

WSL settings are read without blocking the settings refresh #

On WSL, reading inherited Windows settings no longer blocks the periodic settings refresh.

You'll notice · Elsewhere

Clearer refusal when a name matches a device-gated remote session #

Messaging a reply-only remote session now explains why, instead of a generic not-found.

You'll notice · Cross-Session Messaging

Rate limit status is pushed to the remote client #

Your rate limit status now reaches a connected remote client right away.

You'll notice · Sessions

cloud CLI: piped stdin no longer silently overrides a task description #

Piped input no longer silently overrides a task description you passed to --cloud.

--cloud--environment
You'll notice · Cloud Sessions

MCP auth failures distinguish issuer mismatches #

MCP OAuth issuer mismatches are now recorded separately from other auth errors.

Under the hood · MCP

Peer session listing reports truncation #

Peer session listings now say when there are more sessions than shown.

You'll notice · Cross-Session Messaging

Reattaching to a vanished bridge session skips history backfill #

Reattaching to a vanished remote session mints a fresh one without backfilling missing history.

You'll notice · Sessions

Eval reports shorten very long judge evidence #

Eval reports now shorten huge evidence blocks and point at the full text on disk.

You'll notice · Plugin Eval

Bridge disconnects say what kind of failure happened #

Dropped bridge connections now say what kind of failure happened rather than one generic message.

You'll notice · Sessions

Stricter cleanup of JWT masking rules #

Malformed JWT masking options in credential rules are now discarded.

You'll notice · Sandbox

Teammate message failures are labelled, and inbox write failures reported #

Failed teammate messages now say the recipient was unreachable, including when their inbox write failed.

You'll notice · Cross-Session Messaging

Wayland clipboard copies run one after the other #

On Wayland, clipboard and primary-selection writes now happen in order, not simultaneously.

You'll notice · Elsewhere

Pastes that can no longer be loaded are handled explicitly #

Pastes whose data can no longer be read are marked unavailable instead of lingering oddly.

You'll notice · Input

Memory store listing shows each store's index #

The Memory tool's store list now ends each line with the store's index.

You'll notice · Memory

Blocked-by-proxy responses are detected from a second header #

Proxy-blocked requests are recognised from a second header, so more networks get the proper message.

You'll notice · Internals

Publicly shared artifacts are labelled correctly #

A publicly shared artifact now correctly reads "anyone with the link".

You'll notice · Artifacts

Messages from peer sessions are shown unless suppressed #

Activity messages from a peer session with no named sender are now shown by default.

You'll notice · Cross-Session Messaging

Bash tool told that command output may not reach you #

Claude is told you may not see command output, so it should summarise results.

You'll notice · Bash Tool

Pasted content marked unavailable is skipped when expanding input #

Pastes marked unavailable are skipped when your input is expanded.

You'll notice · Input

Analytics shutdown waits for queued work before closing sinks #

Analytics now drain queued events before shutting down, so crash-path events have a chance to send.

Under the hood · Telemetry

Two more MCP connections skip issuer metadata validation #

Two more MCP transports now skip issuer metadata validation, matching the rest.

Under the hood · MCP

Archive-installed plugins are no longer mistaken for ref-tracking ones #

Zip-installed plugins keep their pinned version instead of being re-fetched on every load.

You'll notice · Plugins

Subagents cannot call memory_write #

Only your main conversation can write memory documents; subagents are blocked from memory_write.

You'll notice · Memory

Remote Control sessions now explain that they are reply-only #

Messaging a Remote Control session now explains it is reply-only until it messages you first.

CLAUDE_CODE_HARBOR_KITE
You'll notice · Cross-Session Messaging

Published artifacts handle a third theme state #

Published pages now handle an unstamped theme, so they respect your browser's light or dark setting.

You'll notice · Artifacts

Allowlist blocks recognised from a second proxy header #

Artifact fetches recognise a second proxy header as a network allowlist block.

You'll notice · Artifacts

Exported Claude archives no longer need every index file #

Importing an exported Claude archive now only requires conversations.json; missing indexes are rebuilt.

You'll notice · Internals

Contradictory publish flags are rejected up front #

Passing both --no-publish and --publish-report now errors before the run starts.

--no-publish--publish-report
You'll notice · Plugin Eval

Remote environment picker marks self-hosted entries #

The environment picker labels self-hosted entries and shows a dimmed live runner count.

You'll notice · Self-Hosted Runners

Drain loops should break on budget_reached, not just terminal stops #

Skill guidance now says polling loops should break on any stop reason except requires_action.

Under the hood · Agent SDK Docs

vault_ids documented as create-only, and deployments can be updated #

Docs say vault_ids cannot change mid-session, and deployments now have an update endpoint.

You'll notice · Agent SDK Docs

Task budgets and session budgets are no longer conflated #

Docs now warn that task_budget is advisory tokens while session budgets are hard dollar caps.

task_budget
You'll notice · Agent SDK Docs

A plugin entry that fails validation now keeps the reason #

A marketplace entry with bad fields keeps its validation error instead of looking unsupported.

You'll notice · Plugins

Sandbox AWS credential pairs get precedence rules and scope warnings #

Conflicting AWS credential pairs in the sandbox now resolve predictably and warn about risky setups.

credentials.awsPairs
You'll notice · Sandbox

Plugin archive downloads are checked on every redirect hop #

Plugin archive downloads re-check policy at every redirect and strip headers on cross-origin hops.

You'll notice · Plugins

Bug Fixes

34 items

Pasted content that has expired is reported instead of silently dropped #

If a pasted attachment has expired, you get told instead of quietly sending a prompt without it.

You'll notice · Paste Handling

Bridge event checks fail closed when their config is malformed #

If the bridge event rules are unreadable, only fully verified events are accepted.

Under the hood · Editor Bridge

Failed @name messages now tell you they failed #

Direct messages you send with @name now warn you when delivery fails.

You'll notice · Team Messaging

Conversation resets are never dropped from a full event queue #

A conversation reset can no longer be discarded when the event queue is overloaded.

Under the hood · Editor Bridge

MCP OAuth discovery state no longer wiped during a concurrent re-save #

A race no longer wipes working MCP OAuth discovery data during a concurrent save.

You'll notice · MCP

MCPB archive errors truncate the offending file name #

Bad extension archives can no longer flood your terminal with a giant file name.

You'll notice · Plugins

Failed team mailbox writes are no longer treated as sent #

Messages to teammates that failed to write now return an error instead of a false success.

You'll notice · Team Messaging

Pasted content that can no longer be loaded is kept as a placeholder #

Resuming a session keeps unavailable pastes as placeholders so surrounding text stays aligned.

You'll notice · Paste Handling

Mailbox write failures are reported instead of being assumed to succeed #

Plan submissions and shutdown requests to another agent now fail visibly when delivery fails.

You'll notice · Team Messaging

Clearer message for a relative memory path #

The error for a relative memory path now suggests a properly joined path.

You'll notice · Memory

Flag-conflict error names the flag you actually used #

The cloud-session conflict error now blames --environment, the flag you actually typed.

--environment
You'll notice · CLI

Teammate mailbox failures are reported instead of silently swallowed #

Claude is now told when a message to a teammate did not get delivered.

You'll notice · Team Messaging

Bash mode no longer swallows pasted non-image content #

A !-prefixed line containing pasted text is no longer misfiled as a shell command.

!
You'll notice · Bash Mode

Transcript forwarding over the bridge no longer duplicates or stalls #

Forwarding your transcript to a connected editor no longer duplicates messages or stalls.

You'll notice · Editor Bridge

Proxy survives malformed requests and broken sockets #

The sandbox proxy no longer crashes on malformed requests or broken sockets.

You'll notice · Sandbox

Plan temp files left by interrupted writes are now swept #

Leftover temp files from interrupted plan writes are now cleaned up by the retention sweep.

You'll notice · Plan Mode

Undelivered permission requests to a team lead now surface #

A permission request that never reached your team lead now tells you to retry.

You'll notice · Team Messaging

REPL bridge survives /clear instead of dropping #

Running /clear no longer disconnects the editor bridge; it follows you onto the new session.

/clear
You'll notice · Editor Bridge

MCP stdio connections remember how the last child process ended #

Reconnects to a local MCP server now know whether the previous process exited or was killed.

Under the hood · MCP

Sandbox credential restrictions no longer lost when settings are merged #

Managed limits on which AWS credentials the sandbox may use survive settings merges now.

You'll notice · Sandbox

Restored input renumbers pasted attachments #

Restored input renumbers old paste markers so they can't point at the wrong attachment.

You'll notice · Paste Handling

Plan approvals report mailbox write failures instead of claiming success #

Plan approvals sent to a teammate now report failure and retry instead of claiming success.

You'll notice · Team Messaging

Trailing slashes no longer change glob-permission warnings on Linux #

Trailing slashes in Read and Edit permission rules no longer change the wildcard warning on Linux.

You'll notice · Permissions

Replayed sessions no longer show empty command output #

Replaying a stored session no longer shows blank assistant messages for empty command output.

You'll notice · Elsewhere

HTTPS proxy denials report why, and dead sockets are torn down #

Blocked proxy requests now report why, and dead connections are closed rather than written to.

Under the hood · Sandbox

Status messages from nested sessions are passed up again #

Compaction status from a nested session is now shown in the session you are watching.

You'll notice · Compaction

Background settings poll no longer clobbers a login or logout #

Logging in or out mid-refresh no longer gets overwritten by stale background settings.

You'll notice · Settings

Mailbox write failures are logged instead of thrown away #

Failing to create another session's inbox directory is now logged rather than ignored.

Under the hood · Team Messaging

Generic 5xx text from the peer service is now treated as retryable #

Server errors while listing peer sessions are recognised properly and treated as retryable.

You'll notice · Team Messaging

Teammate spawn fails loudly instead of opening an idle pane #

Spawning a teammate now errors out instead of leaving an idle agent with no instructions.

You'll notice · Team Messaging

Refused cross-session messages are dropped before attachments are built #

Messages refused from another session are dropped before their attachments are fetched.

Under the hood · Team Messaging

Rate-limit headers from before a login change are discarded #

Rate-limit info from before you logged in or out can no longer overwrite fresh state.

You'll notice · Rate Limits

Editor bridge waits for a pending conversation reset #

The editor bridge pauses writing until a queued conversation reset actually lands.

Under the hood · Editor Bridge

Pasted images in the question dialog no longer collide with other pastes #

Images pasted into a question prompt no longer collide with pastes made elsewhere.

You'll notice · Paste Handling

In Development

26 items

Memory prompts can describe connected memory stores #

Memory prompts now describe each connected store and its index by name instead of mount paths.

You'll notice · Memory

Incoming peer messages get their own transcript rendering #

Messages from another session render as an @sender header with indented body instead of raw tags.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

MCP OAuth checks the issuer a server echoes back, telemetry only for now #

MCP OAuth now checks a server's echoed issuer, but only records mismatches rather than blocking.

Under the hood · MCP

Automatic memory context can scan a whole memory directory #

Memory context can list every file in your memory directory instead of one file.

CLAUDE_CODE_REMOTE
Not switched on · Memory

Status text for a large workflow #

Status text for an oversized workflow exists, pointing at /workflows to stop it.

/workflows
Not switched on · Workflows

Server-supplied CLI arguments are validated on self-hosted runners #

Self-hosted runners now reject malformed or blocklisted CLI arguments handed down by the server.

Under the hood · Self-Hosted Runners

MCP servers checked for the issuer they echo back #

Claude checks whether an MCP server points authentication elsewhere, logging mismatches without blocking.

You'll notice · MCP

Memory extraction can be told to save only personal memories #

Memory extraction can be told to save only personal memories, with nothing visibly setting that mode.

Not switched on · Memory

/ultrareview tips after reviews and commits #

Code review and post-commit tips can point you at a deeper cloud review, off by default.

/ultrareview
Not switched on · Code Review

Two keybinding tables have a compiled-out entry #

Two shortcut lists have a hole where a conditional keybinding was compiled out.

Under the hood · Terminal UI

Two new remote-config gates for bridge event forwarding #

Two new server-controlled switches govern whether reset and rate-limit events get forwarded.

Under the hood · Remote Bridge

Progress and failure messages for cloud file seeding #

Cloud file uploads show progress and a clear outcome, falling back to the git bundle on failure.

container_sync
Not switched on · Cloud Sessions

Memory store listing gains each store's index path #

Listing memory stores can also report each store's index document path.

Not switched on · Memory

Session info reports the messaging socket path #

SDK and stream-json startup output can report the messaging socket path when the inbox is running.

messaging_socket_path
Not switched on · Cross-Session Messaging

Socket peers are identified by pid, start time and ancestor chain on Linux #

On Linux, incoming session messages can be traced to the sending process and its ancestors.

Under the hood · Cross-Session Messaging

Loop file can come from stored state instead of disk #

Your loop.md can come from stored state when a storage handle is available, otherwise from disk.

loop.md
Under the hood · Internals

Second LSP tool schema, one strict shape per operation #

The language-server tool gained a per-operation schema, but nothing chooses it over the old one.

Under the hood · LSP Tools

Scheduled tasks can resolve loop.md defaults asynchronously #

Scheduled tasks resolve loop.md content asynchronously and skip a fire rather than run unresolved.

loop.md
Under the hood · Scheduled Tasks

Remote bridge peers documented as reply-only #

Remote bridge sessions are described as reply-only and unreachable by name.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

Startup tip for /ultrareview #

A startup tip suggests cloud branch review and shows how many free reviews you have left.

/ultrareview
You'll notice · Code Review

Cross-session messaging explains why it is unavailable #

Messaging another session now tells you why it failed instead of silently doing nothing.

CLAUDE_CODE_HARBOR_KITE
Not switched on · Cross-Session Messaging

Memory-consolidation prompt gains two variants #

Memory consolidation prompts gained prune-only and tools-unavailable variants for different session types.

CLAUDE_CODE_REMOTE
Under the hood · Memory

New artifact login messages are defined but not yet shown #

Three clearer artifact login messages are written but never displayed; you still see the old one.

Not switched on · Artifacts

AskUserQuestion dialog fallback cannot fire in this build #

A fallback to the question dialog when auto-classification is unavailable can never fire here.

CLAUDE_CODE_AUTO_MODE_CLASSIFY_ASK_USER_QUESTION
Not switched on · Auto Mode

Remote file store gains create preconditions and cancellation #

Remote file creates can refuse to overwrite an existing file and both calls accept cancellation.

Under the hood · Remote File Store

Directory sync can apply a file seed and record the result #

A directory can be seeded with a listed set of files, skipping anything already there.

Not switched on · Cloud Sessions

Internal Changes

66 items

Memory store descriptors gain visibility and prompt-index fields #

Memory store records can now carry a visibility setting and a prompt index path.

Under the hood · Memory

PDF page extraction and several caches read through the storage layer #

PDF page images and several caches now read through a shared storage layer instead of raw files.

Under the hood · Internals

MCP telemetry identifies servers by a hash, not the base URL #

MCP telemetry identifies servers by a hash rather than their raw URL.

Under the hood · MCP

MCP client version mismatch now reports before it throws #

An MCP client version mismatch now reports the two versions before raising its error.

Under the hood · MCP

Control-tag sanitizing rules are now shared #

The rules that neutralise control tags in subagent output are now shared with a new assistant-output scanner.

Under the hood · Permissions

Remote-control registration reports a bridge epoch #

Remote control registration and heartbeats now include an identifier for the current bridge lifetime.

Under the hood · Remote Control

Tool schemas rewritten onto shorter helpers #

Tool schemas were mechanically shortened with no change to descriptions or constraints.

Under the hood · Build

Bridge close codes distinguish auth failure from recoverable stalls #

Remote bridge disconnects now use distinct close codes for session problems versus expired tokens.

Under the hood · Remote Control

Tool schemas moved onto shared constructors #

Dozens of tool schemas were rewritten onto shared helpers purely to shrink the bundle.

Under the hood · Build

Tool-search telemetry records the real mode and a finer skip reason #

Skipped tool-search events now report the real mode in effect and a more precise skip reason.

ENABLE_TOOL_SEARCH
Under the hood · Tool Search

Schema definitions switched to direct imports #

Skill frontmatter and several other schemas now import validation helpers directly; nothing changed.

Under the hood · Build

Workshop document writes counted apart from scratchpad writes #

Session metrics count workshop document edits separately from scratchpad edits.

Under the hood · Artifacts

Schemas rewritten onto internal helpers #

More schemas were rewritten onto short helpers for bundle size only.

Under the hood · Build

409 conflicts read their cause from a header #

Conflict responses now read their cause from a header, distinguishing a live worker from a stale registration.

Under the hood · Remote Control

Plugin manifest loading is instrumented #

Plugin manifest loading now reports whether the file was unreadable, invalid JSON or the wrong shape.

Under the hood · Plugins

Settings validation knows which file it is checking #

Settings warnings can now name which settings file caused them.

Under the hood · Settings

Auto-mode telemetry marks MCP tools #

Auto-mode approval events now note whether the tool came from an MCP server.

Under the hood · Permissions

All schema definitions rewritten to a smaller builder style #

Every schema in the bundle moved to standalone builder functions to cut size.

Under the hood · Build

Tool and config schemas rebuilt on internal builders #

More tool and config schemas moved onto internal builders with identical shapes.

Under the hood · Build

MCP connection failures report a sibling probe result #

Failed MCP connections now report an extra probe result for easier diagnosis.

Under the hood · MCP

Git credentials are supplied by an inline helper instead of a script #

Remote git operations no longer write a credential helper script to disk, passing an inline function instead.

Under the hood · Git

Remote Control startup source labels moved to a lookup table #

Labels for where the remote-control startup setting came from now live in one table.

remoteControlAtStartup
Under the hood · Remote Control

Schema construction moved off a shared namespace #

All 686 namespaced schema calls became direct helpers, which explains most of this release's diff.

Under the hood · Build

Auto-mode telemetry records whether the tool was MCP #

More auto-mode permission events record whether the tool was from an MCP server.

Under the hood · Permissions

Runner ingress tokens are written per epoch #

Runner session tokens are written to per-epoch files instead of one shared file.

Under the hood · Runners

Settings presence checks can read through the newer settings store #

Checks for explicitly set settings keys can now read from the newer settings store.

cleanupPeriodDays
Under the hood · Settings

Counter for managed settings discarded mid-fetch #

A discarded managed-settings fetch now gets its own error counter.

Under the hood · Settings

New MCP error code #

MCP clients now recognise a new denied-issuer-echo error code.

Under the hood · MCP

Concurrent-session pid file can go through the v5 store #

Session registration can write its process-id file through the newer store when one is available.

Under the hood · Internals

ZIP extraction reports what it wrote #

Plugin ZIP extraction now returns the exact files it wrote, not just a count.

Under the hood · Plugins

SDK schema definitions restructured #

SDK message and control-protocol schemas were restructured with no change to fields or defaults.

Under the hood · Elsewhere

SendMessage records why a message was not delivered #

Undelivered agent messages now record why, such as an unreachable recipient or a failed mailbox write.

Under the hood · Agents

Auto-memory prompt drops a self-narration step #

The memory prompt no longer asks Claude to narrate a save-or-not verdict before acting.

You'll notice · Memory

MCP telemetry is rate limited and tool names bucketed #

MCP telemetry now drops events past a rate limit and reports how many were dropped.

Under the hood · MCP

Schemas across the binary rewritten onto internal builders #

Nearly every schema was rewritten onto smaller internal builders with no change in behaviour.

Under the hood · Build

MCP events forwarded to Datadog, with identifying fields removed and a per-server cap #

MCP events are forwarded for logging with identifying fields stripped, and skipped entirely if analytics are off.

Under the hood · Telemetry

Schema definitions rewritten to use direct helper calls #

Schema definitions now call validation helpers directly; nothing behaves differently.

Under the hood · Build

REPL bridge failures record whether they were an auth problem #

Bridge failures are now labelled as authentication or terminal, though nothing reads the label yet.

Under the hood · Remote Control

Cached data moves to a keyed storage backend #

Changelog, model and issue caches now read from a keyed storage backend when one exists.

Under the hood · Internals

Version bump to 2.1.224 #

The version is now 2.1.224 everywhere it is printed.

Under the hood · Internals

Session history check reads raw bytes #

Checking whether a session has history is faster because it scans raw bytes instead of decoding everything.

You'll notice · Sessions

Bridge websocket closes record why #

Remote bridge socket closes now record a cause alongside the numeric code.

Under the hood · Remote Control

Remote settings responses carry the identity that fetched them #

Recorded consent is now attributed to the identity that actually fetched the remote settings.

Under the hood · Settings

Telemetry for how remote-control autostart was decided #

Whether remote control auto-started, and why, is now recorded.

Under the hood · Remote Control

Simpler transcript edit operation #

Removing messages from conversation history is now a plain drop-and-append with no boundary trimming.

Under the hood · Compaction

Worker shutdowns carry a typed reason #

Background worker exits now carry a typed reason such as expired token or epoch conflict.

Under the hood · Remote Control

Settings warnings are assembled asynchronously #

Settings warnings now wait for retention config before deciding whether to warn about paused cleanup.

Under the hood · Settings

Schema declarations rewritten to shorter helpers #

Schema declarations across the bundle were shortened with no change to accepted values.

Under the hood · Build

SendMessage telemetry marks blocked waits and resumes #

Message delivery telemetry can flag when the sender blocked waiting for completion.

Under the hood · Agents

Plans and session records read through the keyed store #

Plans and session records are now addressable through the keyed storage layer, not just as files.

Under the hood · Internals

Grading results record whether a criterion was scored #

Evaluation grader output now says explicitly whether each criterion was scored.

Under the hood · Elsewhere

Exec wrapper can redirect child output streams #

Child processes can have their output redirected, so Wayland clipboard writes stop spewing output.

Under the hood · Elsewhere

Mailbox lock-release failures name the operation #

Failed mailbox lock releases now name which maintenance job failed.

Under the hood · Agents

Startup no longer waits on org-memory discovery #

Startup no longer waits on org memory discovery; the wait depends only on your configured memory stores.

CLAUDE_MEMORY_STORES
You'll notice · Memory

Pasted image IDs come from a counter #

Pasted image numbering comes from a counter instead of rescanning your whole conversation.

Under the hood · Input

Dropped unverified bridge events are now counted #

Unrecognised bridge events rejected by device attestation are now logged and counted instead of vanishing.

Under the hood · Remote Control

Ultrareview promo surfaces now report impressions #

Each place showing the ultrareview prompt now reports that it appeared; the entitlement gate is unchanged.

Under the hood · Code Review

Artifact share status reports the viewer's role #

Artifact share status now reports the viewer's permission role as well as the share mode.

Under the hood · Artifacts

Telemetry forwarding now strips identifying fields and caps MCP event volume #

Internal metrics forwarding strips identifying fields, buckets tool names and caps per-server MCP volume.

Under the hood · Telemetry

MCP version mismatch is reported before it throws #

MCP version mismatches are reported to telemetry before the same error is raised.

Under the hood · MCP

PDF extraction and the retention sweep take a storage handle #

PDF extraction and the retention sweep now receive a storage handle instead of finding one themselves.

Under the hood · Internals

Plan-exit dialog rebuilt on plain hooks #

The plan-exit dialog was rebuilt on plain hooks and its feedback box now gets paste cleanup.

Under the hood · Plan Mode

PR review artifact assets moved, not changed #

PR review skill docs and its HTML template moved location but are byte-identical.

Under the hood · Code Review

Schema definitions rewritten with shorter helpers #

Almost every input schema was shortened, which accounts for most of this release's diff size.

Under the hood · Build

Removed

4 items

Private memory directory dropped from the prompt #

Claude no longer mentions a private memory folder, and team memory is set up purely through the environment.

You'll notice · Memory

Agent spawn counters deleted #

The counter tracking spawned subagents was deleted and nothing replaced it.

Under the hood · Subagents

Bash prompt line about where command output goes #

Claude is no longer told that command output goes to it rather than to you.

You'll notice · Elsewhere

conversation_reset events are no longer forwarded #

Conversation reset events no longer turn into outbound messages, so nothing downstream hears about a new conversation id.

Under the hood · Session Events