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

Version 2.1.225

This release centers on Remote Control reliability: the bridge now refuses to mint a new session when reattach is required, retries token re-mints with auth-specific error messages, recovers expired worker credentials, re-arms itself after a re-login, and surfaces a login prompt when token refresh is exhausted. Artifact tooling gained pagination and single-thread filtering for comments, retries on 429 and 503 responses with a visible progress line, and detection of summons another session has already answered. Cross-session messaging is more predictable, with held peer messages that supersede, re-arm, expire in headless sessions, and settle as expired at shutdown, plus clearer text about why a message is held and whether a peer is cloud or Remote Control. Auto mode now falls back when the primary classifier refuses, denies safeguard-refused calls without recording a verdict, and its nudge dialog actually switches the running session or explains why it cannot. Fixes include a streaming read index that skipped messages, gateway 429s without rate-limit headers driving the usage indicator, and child processes inheriting an IDE entrypoint identity.

Official notes ✓ synced Package @anthropic-ai/claude-code Diff v2.1.224 → v2.1.225Provider claudeModel claude-opus-5 (effort medium)
15
Use it now
87
You'll notice
16
Not switched on
12
Env Vars / Flags

Official Changelog

Official · Anthropic
Anthropic’s official release notes
Published verbatim by Anthropic for v2.1.225 — shown here alongside the source-level analysis below. Text is unmodified from the upstream changelog.
View on GitHub ↗
  • Added gateway spend-limit support to Claude Code's usage warning; the limit-reached message now names the cap, its reset time, and the operator's message (requires the gateway on 2.1.225)
  • Added a workspace trust prompt to claude agents for untrusted directories, matching the behavior of claude
  • Fixed a transient 401 replacing a long-lived CLAUDE_CODE_OAUTH_TOKEN with a stored login's short-lived token, breaking headless sessions until restart
  • Fixed MCP OAuth servers on macOS intermittently failing with a burst of 401 errors, as if never authenticated, after a keychain read timed out
  • Fixed auto mode counting a safety-filter refusal of its own permission check toward the consecutive-block limit; the action is still denied, but the model is now told to move on rather than retry
  • Fixed cross-session messages staying parked without a notice or expiry in headless sessions and during startup
  • Fixed conversation history breaking on Remote Control session resume after very large conversations were compacted
  • Fixed hovering over a session in another project in the agents list changing the directory the next agent starts in
  • Fixed claude self-hosted-runner registering and then failing every session when --base-dir cannot be created or written; it now exits at startup with a clear error
  • Fixed Claude Code on the web sessions being misreported as stuck, re-sending a growing event backlog on every reconnect
  • Improved Remote Control: photos attached from the Claude app are now shown to Claude directly instead of being read from disk with a separate tool call
  • [VSCode] Fixed Focus view folding away the latest to-do list, a pending question's context, and settled answers; thinking-only folds show "Thought for Ns" and re-collapse when their turn completes
  • SendMessage can now start a conversation with your Remote Control sessions on other machines by name (ListAgents shows them as name [ref]), instead of only replying after they message you first
  • SendMessage: a Remote Control recipient you already confirmed is never swapped for a same-named session on this machine when its own list couldn't be checked
Source: anthropics/claude-code · CHANGELOG.md · 14 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

7 of 155

Present but switched off

10 of 18
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

30 items

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

Artifact comments can be filtered to one thread or resumed with a cursor #

Juicy

You can read one artifact comment thread by id, or resume a cut-off listing with a cursor.

thread_idcursorcomments
Use it now · Artifacts

OAuth 401 recovery no longer silently replaces a user-supplied token #

Juicy

Your explicitly set OAuth token is no longer silently swapped for a stored credential after a 401.

CLAUDE_CODE_OAUTH_TOKENCLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
Use it now · Auth

Artifact publishes retry 429 and 503 with a live progress line #

Artifact publishing now retries when the service is busy, showing a live attempt counter instead of failing.

You'll notice · Artifacts

Held-message approval dialog now defaults to Deny #

The prompt for messages from another Claude session now defaults to Deny, so a stray Enter drops it.

You'll notice · Remote Control

Remote Control re-arms itself after a re-login #

Juicy

Remote Control now turns itself back on after you log in again, instead of staying dead.

/login
You'll notice · Remote Control

Artifact comment threads are paginated with a cursor #

Truncated artifact comment listings now hand you a cursor to fetch the remaining threads.

cursor
Use it now · Artifacts

Child processes no longer inherit an IDE entrypoint identity #

Juicy

Commands you spawn no longer inherit an IDE entrypoint or remote session id from your editor session.

CLAUDE_CODE_ENTRYPOINTCLAUDE_CODE_REMOTE_SESSION_ID
Use it now · Environment

Remote Control disconnect notices point at /login for auth failures #

If Remote Control drops due to auth, the notice now tells you to run /login.

/login/remote-control
Use it now · Remote Control

SDK spawn failures explain musl/glibc loader mismatches #

SDK spawn errors now explain musl/glibc binary mismatches and tell you which option overrides the path.

options.pathToClaudeCodeExecutable
Use it now · SDK

Gateway spend precheck returns headers for allowed requests too #

Juicy

Successful gateway calls now return rate-limit headers, so you can see overage state before being blocked.

anthropic-ratelimit-unified-overage-disabled-reason
You'll notice · Admin Gateway

/review can now chain into /verify #

Juicy

/review can hand off to /verify after reporting findings, but the chaining is switched off here.

/review/verify
Not switched on · Slash Commands

Bundled "verify" skill can become model-invocable behind a gate #

Juicy

The bundled verify skill could be triggered by Claude itself, but for now only you can start it.

Not switched on · Skills

PR-prep skill reminder before git commit #

Juicy

Before committing, Claude can be made to state which verify, simplify and code-review skills it ran.

tengu_opal_circuit
Not switched on · Skills

Self-hosted runner startup timeout resolution extracted #

Juicy

You can set a startup timeout for self-hosted runners, otherwise the built-in default applies.

SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS
Use it now · Elsewhere

Auto-default nudge actually flips the mode, and reports the outcome #

Saying yes to the auto-mode prompt now actually saves auto as your default permission mode.

permissions.defaultModeauto
Use it now · Permissions

Routine trigger tool can create webhook triggers #

Juicy

The remote trigger tool can create webhook triggers so routines fire on outside events.

create_webhook_triggerCLAUDE_AI_ORIGIN
Use it now · Background Tasks

The routines/triggers tool can create webhook triggers #

Juicy

Claude can now attach a webhook trigger, like a GitHub event, to a routine instead of a schedule.

create_webhook_trigger
Use it now · Background Tasks

Bundled skill-backed slash commands forward more capabilities #

Juicy

Slash commands from bundled skills now support arguments, completions, background runs and effort settings.

You'll notice · Slash Commands

Remote Control auto-revive after re-login #

Juicy

After you log back in, Remote Control can turn itself back on without you re-running the command.

/remote-controltengu_bridge_auth_revive
You'll notice · Remote Control

Streaming read index no longer skips messages #

Messages sent after a conversation reset or a cancelled request are no longer silently dropped.

You'll notice · SDK Transport

Artifact comments listing gained pagination and single-thread lookup #

You can now fetch a single artifact comment thread or page through long listings with a cursor.

thread_idcursor
Use it now · Artifacts

Device bridge websocket URLs are checked against a host allowlist #

Juicy

The device bridge now only connects to approved hosts, with local overrides limited to localhost.

CLAUDE_REMOTE_TOOLS_BRIDGE_URL
Use it now · Sessions

SDK can defer permission mode resolution to the CLI #

Juicy

SDK callers can let the CLI pick the permission mode from settings instead of forcing "default".

resolvePermissionModeInCli
Use it now · SDK

CLAUDE_REMOTE_TOOLS_BRIDGE_URL added to the remote-settings env filter #

Juicy

Remotely managed settings can no longer redirect your bridge connection by setting that URL variable.

CLAUDE_REMOTE_TOOLS_BRIDGE_URL
You'll notice · Settings

Untrusted-device recovery can be turned off by a flag; unarchive gets its own 403 handling #

Juicy

Untrusted-device failures still recover automatically, and expired trusted-device sessions now tell you to run /login.

/login
You'll notice · Auth

Auto-mode nudge now switches the running session, or explains why it can't #

Juicy

Saying yes to the auto-mode prompt would switch your current session too, not just future ones.

Not switched on · Permissions

Device bridge registers this machine as a remote-tools device #

Juicy

Your machine can register as a named remote device with a tool that reports its environment.

CLAUDE_REMOTE_TOOLS_BRIDGE_URLallow_remote_sessions
Not switched on · Device Bridge

Self-hosted runner checks its base directory before starting work #

The self-hosted runner fails fast if its base directory is unwritable or the mount hangs.

--base-dirSELF_HOSTED_RUNNER_BASE_DIR
Use it now · Elsewhere

Live "authoring progress" spinner text while Claude writes a workshop page #

Juicy

The spinner can narrate what Claude is drafting on a workshop page, like "drawing figure 3".

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

New Features

16 items

Impersonation warning when a local session claims a pinned remote identity #

If a session claims a peer identity that isn't on your machine, the message is blocked as suspicious.

You'll notice · Cross-Session Messaging

Headless sessions expire held peer messages instead of holding forever #

Headless runs no longer hang forever on a peer message that needs an approval nobody can give.

You'll notice · Cross-Session Messaging

Spend-cap responses carry unified rate-limit headers #

Spend-limit blocks now tell you which cap period you hit and when it resets.

You'll notice · Rate Limits

Held cross-session messages are now settled as expired at shutdown #

Quitting now settles pending peer messages as expired so the sending session gets a definite answer.

You'll notice · Cross-Session Messaging

New bash-parse rule flags two statements sharing a line #

Commands cramming two statements onto one line are now flagged as too complex to auto-approve.

You'll notice · Permissions

Remote Control bridge sessions get [ref] handles in listings #

Sessions reached over Remote Control now show a reference handle so you can message them by name.

You'll notice · Remote Control

Artifact publish now retries 503s with a visible progress line #

Publishing an artifact now retries when the service is busy and tells you it is waiting.

You'll notice · Artifacts

Org-memory decision can be reopened, and is bound to an identity #

Shared org memory now remembers who settled a decision and lets a settled decision be reopened.

Under the hood · Elsewhere

Held cross-session peer messages: supersede, re-arm and already-resolved notice #

Held peer messages now cancel their approval prompts cleanly instead of leaving stale ones hanging around.

You'll notice · Cross-Session Messaging

Artifact replies detect that another session already answered the summon #

If another session already answered an artifact summon, yours says so instead of duplicating the reply.

You'll notice · Artifacts

Artifact tool now tells Claude that finished deliverables should be published #

Claude is now pushed to publish finished reports or plans and hand you the link.

You'll notice · Artifacts

Remote Control bridge: token-refresh exhaustion now surfaces a login prompt #

When remote control can't refresh your token, it now tells you to run /login instead of stalling.

/login
You'll notice · Remote Control

Auto mode denies safeguard-refused classifier calls without recording a verdict #

A safety refusal during auto mode denies the action but no longer counts against your denial limit.

You'll notice · Permissions

Bridge recovery for expired worker credentials on close code 4094 #

When your remote worker credential expires, the bridge now re-mints it and refreshes login instead of dying.

You'll notice · Remote Control

Artifact comment replies can declare that they answer a summon #

A reply to an artifact comment can mark itself as answering a summon, and only once.

You'll notice · Artifacts

New user-facing hint when the Remote Control server returns a malformed response #

If the Remote Control server sends something unreadable, you now get a clear message suggesting an update.

You'll notice · Remote Control

Improvements

45 items

send_message: clearer story about sessions on other machines #

Messaging an unknown peer now explains that sessions on other machines could not be checked, so retry.

You'll notice · Remote Control

OAuth token refresh timers re-check in 60s chunks #

Login token refreshes now survive laptop sleep and long suspends more reliably.

You'll notice · Auth

VS Code-owned sessions get their own settings defaultMode handling #

In VS Code sessions, unsafe default permission modes from settings are refused and fall back to normal.

permissions.defaultModebypassPermissions
You'll notice · Permissions

Artifact comment errors distinguish missing thread from degraded fetch #

Artifact comment errors now tell you whether a thread is really missing or just dropped from fetch.

You'll notice · Artifacts

Replies are suppressed when another session already answered the summon #

If another session already answered a comment, the duplicate reply is dropped instead of posted.

You'll notice · Artifacts

Workspace trust is now enforced before the agents/fleet view #

Opening the agents view now asks you to trust the workspace first if you haven't.

You'll notice · Permissions

agents-listing description updated for Remote Control #

The agent list now calls bridge sessions your Remote Control sessions on other machines.

You'll notice · Remote Control

Held cross-session messages name managed or repo settings as the cause #

When a peer message is held, you now see whether org or repo settings caused it.

--setting-sources
You'll notice · Cross-Session Messaging

Peer listings flag an incomplete bridge walk #

Peer listings now warn when the session walk didn't finish, so partial lists aren't mistaken for complete.

Under the hood · Cross-Session Messaging

Remote Control unarchive re-auths trusted devices, and malformed /bridge responses are terminal #

Unarchiving a remote session now retries with device trust and stops retrying broken bridge replies.

You'll notice · Remote Control

Clearer permission prompt for messaging a Remote Control session #

The messaging prompt now says your note arrives marked as from another Claude session, not you.

You'll notice · Cross-Session Messaging

Trusted-device 403s handled on elevated-auth requests #

A rejected session can now tell you it's stale and needs re-login, not just untrusted device.

You'll notice · Sessions

Classifier-unavailable denial message shortened via shared fragments #

The "temporarily unavailable" denial message is shorter and no longer shows HTTP status details.

You'll notice · Permissions

Remote Control: token refresh chain gives up loudly, and auth changes invalidate in-flight attempts #

Remote Control now reports dead token refreshes instead of failing silently, and re-logging in cancels stale connection attempts.

You'll notice · Remote Control

Runner pool wording renamed to "environment" #

Session relaunch messages now say "environment" instead of "pool".

You'll notice · Sessions

Auto-mode classifier failures are distinguished from classifier denials #

When the auto-mode classifier can't decide, you no longer get a bogus denial message or permission-rule hint.

You'll notice · Permissions

Bridge reattach can fail hard instead of silently starting a new session #

After re-authenticating, Remote Control reattaches to your existing session or says it's gone, instead of quietly starting a new one.

You'll notice · Remote Control

Org memory can be superseded when the identity changes #

Org memory remembers who enabled it, and a different account trying to enable it is rejected.

You'll notice · Elsewhere

Held-message answer picker hides numbering and pre-focuses a default #

The held-message prompt drops the numbered list and opens with a choice already highlighted.

You'll notice · Remote Control

Code-session failures are now a terminal/non-terminal discriminated union #

Expired logins during code sessions now refresh and retry automatically instead of failing the operation.

You'll notice · Auth

PID 1 no longer counts as an ancestor when verifying a peer connection #

Sessions running as the main process in a container no longer get wrongly matched to peer connections.

You'll notice · Cross-Session Messaging

Host initialize payload reports the current permission mode #

IDE and remote hosts now learn your current permission mode the moment they connect.

Under the hood · Elsewhere

Unified rate-limit tracking now also applies on the gateway auth source #

Gateway-authenticated sessions now get the same rate-limit tracking and 429 handling as subscription ones.

You'll notice · Rate Limits

Stale-peer send failure text points at the peer list tool #

Failed sends to a vanished peer now explain why and point you at the peer list.

You'll notice · Remote Control

Artifact deploy retries 429 and 503 responses #

Artifact deploys now retry when the server is rate limited or unavailable, and abort cancels retries.

You'll notice · Artifacts

Skill-backed prompt commands pass through more metadata #

Skills turned into slash commands now keep their menu text, aliases and tool permissions.

You'll notice · Slash Commands

Artifact reply composer prompt rewritten #

Artifact replies now answer commenters' questions directly and flag change requests instead of promising them.

You'll notice · Artifacts

Workshop template: waiting-state painter on the opening publish #

Workshop pages show a painter animation while waiting for the first real version, with a reload hint.

You'll notice · Artifacts

Shared "auto mode unavailable" message and a warning-kind notice #

The "auto mode unavailable" message is now consistent everywhere and shown as a warning.

You'll notice · Permissions

Handoff classifier refusals allow the output with an unreviewed warning #

When a safety check on subagent handoff output is refused, the work passes through with a warning.

You'll notice · Subagents

Cross-session send prompts distinguish cloud from Remote Control peers #

Prompts for messaging another session now say whether the peer is cloud or Remote Control.

You'll notice · Cross-Session Messaging

Artifact comment results render thread-filtered reads #

Reading a single artifact comment thread now shows clearer results, including when the thread isn't found.

You'll notice · Artifacts

Cross-session send says whether the recipient is in the cloud or on another machine #

Delivery confirmations now correctly say whether your message went to a cloud or remote machine session.

You'll notice · Cross-Session Messaging

Code-session create and poll failures are classified by reason #

Code session failures are now sorted by cause, so retries and error messages make more sense.

You'll notice · Sessions

Self-hosted runner prompt reworded around environment secret files #

The self-hosted runner prompt now talks about environment secret files instead of pool secrets.

You'll notice · Elsewhere

Remote Control: new terminal error reasons and clearer failure surfacing #

Remote Control failures now tell you what actually broke and that you can rerun /remote-control to retry.

/remote-control
You'll notice · Remote Control

Error redaction covers invalid HTTP header messages #

Error and telemetry text now scrubs invalid HTTP header values so they can't leak into reports.

Under the hood · Telemetry

Search tokenizer emits compound candidates from single-character tokens #

Search now joins stray single-character tokens with their neighbours, so split-up terms match better.

You'll notice · Elsewhere

Bridge reconnects only refresh OAuth for the close codes that need it #

Remote Control reconnects skip needless token refreshes, so ordinary disconnects recover faster.

You'll notice · Remote Control

Session descriptions understand bridge and remote sessions #

Sessions reached over Remote Control are now described as being on another machine, not this one.

You'll notice · Remote Control

Background job state keeps respawn flags, and non-allowlisted tokens are stripped #

Background jobs now save the flags needed to relaunch them, dropping any unrecognised flags with a warning.

Under the hood · Elsewhere

Bridge heartbeats now count as proof of auth #

A successful Remote Control heartbeat now clears stored auth failures, so you get fewer spurious re-login prompts.

You'll notice · Remote Control

Held peer messages now say which settings tier held them #

When a cross-session message is held, you now see whether org, repo or local settings did it.

crossSessionInbound
You'll notice · Cross-Session Messaging

Self-sent peer message detection ignores PID 1 #

Inbound peer messages are no longer mistaken for your own when running inside a container.

You'll notice · Cross-Session Messaging

Bridge auth failures no longer burn reconnect attempts #

A login problem on the bridge no longer eats your reconnect attempts and is now named clearly.

You'll notice · Sessions

Bug Fixes

14 items

REPL sampling helpers report validation errors as progress instead of failing silently #

Bad arguments to the in-REPL sampling helpers now show a visible error instead of vanishing.

You'll notice · Elsewhere

Compaction payloads clamped alongside preserved event ids #

Compaction now trims the saved conversation payload to match the preserved message list, avoiding mismatches.

You'll notice · Compaction

Bridge hook resets now fire the pending archive instead of dropping it #

Changing directory mid-session no longer silently drops a pending archive in the bridge.

You'll notice · Sessions

Artifact watch list wording fixed for pluralization #

The artifact watch summary now says "watches" instead of a garbled plural.

You'll notice · Artifacts

Fleetview group-header selection no longer fights the current selection #

Picking a group header in Fleetview no longer bounces your selection back and forth.

You'll notice · Fleetview

Bundled skill extraction verifies existing files instead of failing on them #

Re-installing a bundled skill over identical existing files now succeeds instead of erroring.

You'll notice · Skills

Post-tool-use commit awareness no longer fires inside subagents #

Commit-awareness notes now appear once in your main session instead of from every subagent.

You'll notice · Hooks

Bridge population recording forgets superseded sets #

The bridge now drops stale session listings instead of keeping outdated ones around.

Under the hood · Sessions

Gemini command import stops rejecting a bare exclamation mark #

Importing Gemini commands containing a plain exclamation mark no longer fails validation.

You'll notice · Slash Commands

Artifact share status reports "public" for tokenless reads and hides a stale owner role #

Shared artifacts no longer show you as owner when the response gives you only public read access.

You'll notice · Artifacts

Unknown control messages complete their command lifecycle #

An unrecognized message no longer leaves your command hanging forever waiting for a result.

You'll notice · SDK Transport

"Reachable agents" listing includes bridge sessions #

Machines reachable only over the bridge now appear instead of showing "No reachable agents."

You'll notice · Fleetview

Gateway 429s without unified rate-limit headers no longer drive the usage indicator #

A gateway spend block no longer scrambles the rate-limit usage indicator you see.

You'll notice · Rate Limits

Virtual-scroll follow re-pin also updates a second focus setter #

Scroll-following in long lists keeps focus and scroll position in sync more reliably.

You'll notice · Fleetview

In Development

17 items

Verify-skill suggestion suppressed unless the opal circuit is on #

The nudge suggesting the verify skill is now silenced unless a gate turns it on.

tengu_opal_circuit
Not switched on · Skills

Remote Control re-mint retry loop and auth-specific failure messages #

Remote Control now retries reconnecting with backoff and tells you to run /login when auth fails.

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

Untrusted-device credential rejection surfaces as a rejection #

An untrusted device now gets a clear rejection instead of a silent failure and endless retries.

You'll notice · Remote Control

Cloud and remote sessions try to start device registration #

Cloud and remote sessions try to start device registration, which does nothing while the gate is off.

allow_remote_sessions
Not switched on · Device Bridge

Auto-mode classifier now falls back when the primary model refuses #

When the auto-mode model refuses a request, a backup model now gets a try instead of failing.

Not switched on · Elsewhere

Workshop authoring-progress hooks fire during streaming #

Streaming now feeds tool and partial-input events to the workshop progress display.

CLAUDE_WORKSHOP_PROGRESS
Not switched on · Artifacts

Public-reader artifact gate moved to a wrapper and now keys on the asset token alone #

Reading an artifact as a public non-member reader still refuses; the switch stays off in this build.

Not switched on · Artifacts

Artifact tool parses an optional cursor argument #

The artifact tool now accepts a cursor value, groundwork for fetching comments page by page.

Not switched on · Artifacts

Auto-mode default nudge requires the session to actually support auto #

The auto-mode suggestion would only appear in sessions where auto mode can actually be used.

Not switched on · Permissions

Remote Control refuses to mint a fresh session when reattach is required #

Remote Control can now fail loudly instead of silently starting a new session when it can't reattach.

Not switched on · Remote Control

Leaked recovery-flag detection and worker-credential recovery cap #

Remote Control auth recovery stops looping forever when a credential keeps failing or a flag sticks.

You'll notice · Remote Control

Device bridge lifecycle telemetry #

The device bridge reports its whole connection lifecycle, but none of it fires yet.

Not switched on · Device Bridge

Keybindings can be pre-warmed from the storage backend #

Your custom keybindings can load in the background at startup so they're ready sooner.

tengu_keybinding_customization_release
You'll notice · Terminal UI

Dream prompt rebound, shipping-policy text absent #

Instructions telling background sessions to open a draft PR unprompted are not present in this build.

Under the hood · Sessions

Auto-mode nudge dialog simplified #

The auto-mode suggestion dialog now just dismisses itself instead of switching your session to auto.

Not switched on · Elsewhere

Transcript directory scans ask the storage backend to skip scope stats #

Listing your past transcripts now skips some extra bookkeeping, which may make it a bit lighter.

Under the hood · Sessions

Daemon auth cooldown and status can go through the v5 storage layer #

Background daemon login cooldown and status can live in a storage service instead of local files.

Under the hood · Elsewhere

Internal Changes

33 items

Classifier refusals are tagged separately in blocking telemetry #

Safety-classifier refusals are now logged distinctly from ordinary parse failures.

Under the hood · Telemetry

Daemon auth cooldown and status write through the v5 backend #

Daemon login cooldown and status writes go through the storage backend and now surface errors instead of hiding them.

Under the hood · Elsewhere

Org-memory discovery can be re-decided after an account change #

Organization memory can be rediscovered after you switch accounts, and it refuses in untrusted folders.

Under the hood · Elsewhere

Transcript recording and eviction moved into one recorder #

Transcript saving and cleanup logic is consolidated in one place; nothing changes for you.

Under the hood · Elsewhere

Held peer messages record their hold cause on re-evaluation #

Queued messages from other sessions now report why they are still being held.

Under the hood · Cross-Session Messaging

SDK query context construction was consolidated #

The non-interactive query path builds its context in one shared place, meant to behave identically.

Under the hood · SDK

Fewer shell-outs for environment probing #

Docker detection and git identity lookups no longer spawn subprocesses, so startup is slightly lighter.

You'll notice · Environment Detection

SDK spawn errors carry a telemetry class and redacted paths #

Launch failure reports now scrub secrets out of file paths before sending them.

You'll notice · SDK

Telemetry event schema drops repl_code and git_remote_url, adds MCP and auth fields #

Usage reporting stops sending your repo remote URL and adds MCP server and tool names.

You'll notice · Telemetry

Experiment-exposure telemetry gains variation_key and stops padding empty strings #

Experiment tracking records which variation you got and omits blank optional fields.

Under the hood · Telemetry

Account identity readable without a full config load #

Your account details can now be read straight from the config file when credentials refresh mid-session.

Under the hood · Auth

Tool renderers can now supply a progress renderer #

Artifact tools can now show live progress lines in the transcript while they work.

Under the hood · Artifacts

Bundle module-initialization graph reshuffled around the coordinator user-context module #

Startup module loading was reshuffled internally, with nothing visible changing for you.

Under the hood · Elsewhere

Docker detection consolidated behind one helper #

Detecting whether you're inside Docker now happens through one shared helper.

Under the hood · Elsewhere

Aborted transport operations report a consistent 'aborted' error class #

Cancelling a connection is now recorded as an abort rather than a generic failure.

Under the hood · Elsewhere

Heuristic classifier summaries are emitted without a flag #

Lightweight conversation summaries are now always generated instead of needing a flag.

Under the hood · Telemetry

Credential-store cache gained an unused failure slot #

The login credential cache now has a slot to remember read failures, but nothing uses it yet.

Under the hood · Auth

Session listing can enumerate from the storage backend #

Resuming sessions can list them from a storage service instead of scanning folders on disk.

Under the hood · Sessions

SDK subprocess errors carry an error class and sanitized message #

SDK subprocess failures are now grouped by cause with paths and stderr scrubbed from reports.

Under the hood · SDK

Task-notification wake routing runs on a timer #

Background task notifications get checked on a repeating timer and delivered per agent without duplicates.

Under the hood · Terminal UI

Tool description cache key gained a segment #

Tool descriptions are cached separately depending on which tools are loaded, avoiding stale reuse.

Under the hood · Elsewhere

Session env files can go through the storage abstraction #

Session environment files can be read and written through a storage layer instead of directly on disk.

CLAUDE_ENV_FILE
Under the hood · Elsewhere

Bundled command registration split apart #

Built-in command setup was split into separate build and register steps.

Under the hood · Slash Commands

Version bumped to 2.1.225 #

The version reported by /status and --version is now 2.1.225.

/statusclaude --version
You'll notice · Elsewhere

Secret-redaction patterns factored into shared lists #

Secret-scrubbing rules live in one shared list so more paths can strip credentials consistently.

Under the hood · Telemetry

OTel export drops repl_code and git_remote_url, promotes MCP server and tool names #

OpenTelemetry export no longer reports your git remote URL and now reports MCP server and tool names.

You'll notice · Telemetry

Bridge teardown distinguishes a skipped re-mint loop from a skipped teleport #

Session teardown reporting now distinguishes two different kinds of skipped cleanup.

Under the hood · Telemetry

Protobuf and CEL runtime restructured into CommonJS module exports #

Bundled protobuf and expression-evaluator code was repackaged, with no change you can see.

Under the hood · Elsewhere

Error telemetry message extraction hardened #

A weird thrown error can no longer break error reporting on its way out.

Under the hood · Elsewhere

Replay harness reports exhausted cached calls #

Internal replay testing now says which tool ran out of cached calls before failing.

Under the hood · Elsewhere

Bash command patterns and transcript markers moved modules #

Test and typecheck command patterns moved between modules without changing what they match.

Under the hood · Elsewhere

Spinner control moved behind an event emitter #

The spinner's text and colours are now updated through a shared event channel.

Under the hood · Terminal UI

Classifier failure telemetry gained a stopReason field #

Failure reports for the classifier now include why generation stopped.

Under the hood · Telemetry