Claude Code v2.1.273

278 entries read v2.1.272 → v2.1.273 Markdown Unofficial

This build carries 15 gated additions, none of them reachable yet. A new OAuth scope, user:plugins, is requested only when PLUGINS_SCOPE_REGISTERED is set, and remote teleport sessions can seed their workspace from a git bundle once an unresolved flag opens up. Remote-control clients gain a wired-in fork_conversation call for branching a running session, and headless startup now has a gated "headless hearth mount" bridging in webagent MCP tools. A stricter "strict" lane for parked-permission answers exists in the code but is never selected, and a gated cleanup step (tengu_silly_waterfall) is ready to prune duplicate stray transcript messages once switched on.

Of 101 shipped entries, tool presets can now exclude specific tools with a "!ToolName" syntax, and two new sandbox settings, isolation.required and isolation.persistHome, add VM-style isolation controls. The claude remote-control command and spawned sessions both gain --chrome / --no-chrome flags for controlling Claude in Chrome. Artifacts pick up two new file-based types, "slides" and "design", alongside the existing "design-system" type, and the parked-permission timeout is now a configurable value instead of a hardcoded constant. The session inbox can now render inbound messages relayed from Slack directly in the UI.

Among 37 fixes, Claude Code now recovers gracefully when a safety classifier cuts off a response mid-tool-call, and the model catalog's "flag rows" feature is removed in favor of a new servedCatalogOffBeforeAsking field. The MCP server's webhook route now returns a proper 405 for the wrong HTTP method instead of a misleading 404, and session usage totals now take the higher of two token counts while task token accounting skips advisor and compaction iterations. On macOS, the Read tool now checks a file's actual disk identity against files already held open by a write, and publish requests are automatically retried once if the server never responds.

Reading as
Show only
Tier
Flag state
Names
Pick an entry · j / k steps through · rest on a row to peek
20 entries

What probably matters to you

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

In dev
Nothing to try yet
Useful4 Signal3
Group of 2 Remote Control no docs found

Remote Control can fork a running conversation#

A remote client can now ask Claude Code to fork the current conversation into a new branch, with a notice posted if it fails

Feature flag
tengu_cozy_pixel Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
fork_conversation

What

  • A new fork_conversation bridge control request is now wired into the REPL for Remote Control sessions. It validates a target message UUID and title, then spawns a background fork of the current conversation, letting a remote client branch a running session mid-conversation.
  • If starting that fork fails, Claude Code now posts an informational/warning message into the newly forked session explaining that the fork could not be started.

Why

This lets remote clients branch an in-progress conversation without losing context, and makes sure the user still finds out if the fork didn't actually start.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

+New
Use it now
Useful5 Signal2
Group of 3 Artifacts

New file-based artifact types: slides and design#

Artifacts can now be 'slides' and 'design' types stored as project files, alongside the existing design-system type

Details 0 0 Feedback
slides

What

  • A new slides artifact type stores each slide as its own HTML file (project/slides/<id>.html), with a project/deck.json index describing the deck's order, sections and fonts.
  • A new design artifact type stores each artboard as its own file under project/, with a project/canvas.json index.
  • The instructions Claude Code gives the model for these file-based types were rewritten to explain that content goes into files under project/, tracked with a createdOnFiles marker object, and published together in one step.

Why Previously, artifact types like these worked through an older "store document" model. Storing slides and designs as individual files with an index lets Claude Code build and update multi-file artifacts (a slide deck, a set of design artboards) more directly, and lets the model describe changes file-by-file instead of as one document blob.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

In dev
Nothing to try yet
Useful4 Signal4
Permissions

New "strict" parked-permission answer lane defined but never selected#

A new stricter permission-answer matching path exists in the code but isn't yet used

Details 0 0 Feedback
What

Claude Code has a mechanism for "parking" a permission request (asking whether a tool can run) and later matching it up with the answer that comes back. A new, more conservative matching path called routeStrictAnswer has been added for this. It carefully re-checks the request ID, the specific tool call ID, the tool name, and that the tool call is still the most recent one before accepting an answer, rejecting mismatches for reasons like not_the_park, decided, tool_name_mismatch, or not_queued. This new path only runs when an internal setting is set to "strict", and nothing in this change actually turns that setting on.

Why

This is groundwork for tighter, less error-prone matching of permission answers to the right tool call, guarding against stale or mismatched approvals slipping through. Since nothing currently selects the "strict" mode, it has no visible effect yet.

+New
Use it now
Useful4 Signal2
Group of 4 Chrome Notable

New --chrome flag for spawned and remote-control sessions#

A new --chrome / --no-chrome flag controls whether spawned and Remote Control sessions can use Claude in Chrome

Details 0 0 Feedback
--chrome--no-chrome

What

  • Spawning or reattaching a session now supports a --[no-]chrome flag that controls whether "Claude in Chrome" is available for that session, defaulting to the machine's own Chrome setting.
  • The claude remote-control command's argument parser also gained matching --chrome/--no-chrome flags.
  • When Remote Control starts with --chrome, Claude Code now checks whether an enterprise MCP policy or a denied-MCP-servers list blocks the Claude-in-Chrome MCP server, and exits with an error instead of silently proceeding if it's blocked.
  • Child sessions spawned by Remote Control now inherit the --chrome setting from their parent, so the option is passed through consistently.

Why

This gives explicit, per-session control over whether Claude in Chrome is enabled, and ensures that enterprise policies restricting MCP servers (which Claude in Chrome relies on) are respected rather than bypassed when Remote Control starts with Chrome access requested.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

+New
Use it now
Useful4 Signal2
Group of 6 Sandbox Notable no docs found

Sandbox settings gain a dedicated 'isolation' category#

Settings diffs, approval prompts, and managed-settings validation now treat sandbox isolation as its own tracked category

Details 0 0 Feedback
isolation.requiredisolation.persistHome

What

Claude Code's sandbox configuration can restrict what a session is allowed to do, and settings changes made by an organization admin can be shown to the user for approval before they take effect. This release gives sandbox isolation its own tracked category throughout that machinery:

  • The settings-diff and permission-approval summary code now tracks isolationSettings/isolationRows as its own bucket, alongside the existing shell, environment variable, and sandbox settings buckets, both in the diff view and in prompts like "3 sandbox settings x3".
  • Settings validation now treats isolation the same way it already treated managedMcpServers: if it appears outside of managed (admin-controlled) settings, it's stripped out with a warning that it's "only honored from managed settings and was ignored here."
  • Two new restriction-policy entries were added: isolation.required and isolation.persistHome, plus a new VM-isolation-specific warning message.
  • The managed-settings approval dialog now reads an isolation block with required/egress keys and shows an elided isolation count alongside existing elided command/sandbox counts.

Why

This makes sandbox isolation settings visible and auditable in the same way other managed settings already were, so admins and users can see when isolation-related policy is being changed, enforced only from managed settings, or partially hidden (elided) in an approval prompt.

Improved
You'll notice
Useful4 Signal2
Group of 3 Models

Served model catalog fetch reworked to support API-key and token credentials#

Fetching the served model list now works for token/API-key logins, not just full organization accounts, with clearer refusal reasons

Details 0 0 Feedback

What

The "served model catalog" (the list of models Claude Code is allowed to offer) used to only be fetched for full organization accounts, hitting an organization-specific endpoint. Now:

  • The fetch branches on the kind of credential in use (organization account, token, or API key), and for token/API-key logins it hits a different, org-less endpoint with an added anthropic-client-platform header.
  • A new refusal reason, lane_unavailable, is tracked separately from the existing not_permitted reason, for cases where the org-less route isn't enabled on the server.
  • The fetch logic now tracks a "lane" and a resolution object, logging route and credential details, and a stale cached catalog entry is discarded when a lane_unavailable reason is hit.
  • The old plain servedCatalogNotPermitted boolean was replaced with a richer servedCatalogRefusal object, and a background tab now explicitly resets its catalog state instead of silently doing nothing.

Why

This lets accounts that log in with a token or API key (rather than a full organization account) get an accurate, up-to-date list of available models, and gives clearer diagnostics when the catalog can't be fetched.

+New
Nothing to try yet
Useful4 Signal2
Group of 2 Remote Control no docs found

Remote Control sessions can fetch messages from a session inbox#

A new FetchInboxMessage tool lets Remote Control sessions actually read inbox messages instead of always failing

Details 0 0 Feedback
FetchInboxMessage

What

Remote Control sessions previously received a feature_disabled failure whenever they tried to fetch a message from a session's "inbox". This is now a real feature:

  • A new tool, FetchInboxMessage, reads a single message from a session's inbox by file_id. It's used when a session receives a session-inbox notification, for example a message relayed from a linked Slack/Teams/chat thread or the Claude Code project thread.
  • The underlying handler now performs the real work: it re-checks whether the session owner has changed, refreshes the auth token if needed, and fetches the message using the session id, file id, base URL, and access/trusted-device tokens.

The returned message is wrapped with trust markers. Only messages whose outer envelope is marked from="rc_owner" are treated as the user's own request; everything else is explicitly untrusted third-party text that must not be acted on without checking with the user first.

Why

This lets Remote Control sessions actually retrieve inbox messages relayed from other chat surfaces, while keeping a clear boundary between the user's own instructions and third-party text so the assistant doesn't act on untrusted content by mistake.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

+New
Use it now
Useful4 Signal3
Tool Presets Notable unclear

Tool-preset exclusion syntax (!ToolName) gated by a new killswitch#

Tool presets can now exclude specific tools with a '!ToolName' syntax

Unclear The finding notes this exclusion parsing can be disabled by a killswitch flag, but whether it is active for this site's account is not established since the gate is unread.

Feature flag
tengu_tools_exclusion_killswitch Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

When configuring a tool preset (a named list of tools), you can now exclude a specific tool by prefixing its name with !, for example !Bash, and it will be filtered out of the resolved tool set.

Why

This lets you build a tool preset by starting from a broader set and excluding specific tools you don't want, rather than having to list every tool you do want.

In dev
Nothing to try yet
Useful4 Signal3
Usage

New structured /usage response schema, explicitly marked experimental#

The /usage command gains a formally defined, still-experimental structured data schema

Details 0 0 Feedback
/usage
What

The data behind the /usage command (which shows session cost, plan usage limits, and activity stats) now has a formally defined structure covering:

  • session cost, duration, and lines-of-code totals
  • rate-limit rows, each with kind, group, percent used, reset time, scope, severity, and whether it's currently active, exactly as sent by the server
  • extra-usage (overage) spend details: whether it's enabled, the monthly limit, credits used, utilization, and currency

This is explicitly marked as experimental, meaning the shape may still change.

Why

A well-defined structure for usage data makes it easier for tools built on top of Claude Code, such as the SDK, to reliably read cost and rate-limit information, though it isn't finalized yet.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

+New
Use it now
Useful5 Signal2
Inbox

Inbox message rendering added (Slack-sourced messages)#

New UI shows inbound messages, including ones relayed from Slack, waiting in the session's inbox

Details 0 0 Feedback
What

Claude Code now has UI for rendering inbox messages that arrive in a session, including ones relayed from Slack. It shows:

  • who sent the message and how it's labelled (for example, 'via Slack')
  • a permalink and a received-at timestamp
  • a distinct state for when the message failed to load

A notice appears in the transcript when a message from Slack or the API is waiting in the session's inbox, showing the sender's name, and in verbose or transcript mode, a preview of the raw message text.

Why

This points to a new way for messages from outside a Claude Code session, such as from Slack, to be routed in and surfaced to you directly in the transcript.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Use it now
Useful3 Signal2
Group of 3 Remote Control Notable no docs found

Remote Control stream events gain a configurable first-flush delay#

Remote Control sessions can now delay and tune how the very first streamed event is sent to the backend

Details 0 0 Feedback
setStreamEventFlushIntervalMssetStreamEventFirstFlushMs

What

The client that uploads events for Remote Control (bridge) sessions gained a new streamEventFirstFlushMs setting, alongside an existing setStreamEventFlushIntervalMs setter:

  • When streamEventFirstFlushMs is set to a value greater than zero, the very first stream_event is buffered as ephemeral instead of being sent immediately, short-circuiting the normal flush-interval batching just for that first event.
  • Both the flush interval and this new first-flush delay are now pushed into the client at runtime via the periodic config-apply routine, alongside the existing no-subscriber flush interval, no-subscriber upload hold, and drop-unwatched-events settings.
  • The setting defaults to 0 (no delay) and is read from remote config.

Why

This gives finer control over how quickly the first event of a Remote Control session reaches the backend, which can be tuned separately from the steady-state flush interval used for events after a subscriber is actively watching.

+New
Use it now
Useful3 Signal3
Internals Notable unclear

New gate for gateway hint headers on first-party surfaces#

A new internal check decides when Claude Code sends extra gateway hint headers on first-party requests

Unclear What the gateway hint headers are used for once sent is not stated.

Feature flag
tengu_splendid_sutton Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
CLAUDE_CODE_GATEWAY_HINT_HEADERS
What

Claude Code has a new internal helper that decides whether to attach gateway hint headers to outgoing requests. It turns them on automatically if the CLAUDE_CODE_GATEWAY_HINT_HEADERS environment variable is set, or under another internal condition, turns them off entirely outside of "first-party" surfaces, and otherwise follows a feature flag.

Why

This is an internal request-routing detail; it does not change anything a user needs to do.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Nothing to try yet
Useful3 Signal2
Group of 2 Remote Control Notable no docs found

Remote/teleport sessions can now be seeded from a local git bundle#

Starting a remote or teleported session can now seed the environment from a local git bundle instead of a full sync, behind new flags

Feature flag
tengu_ccr_bundle_seed_enabled Gate removed from the code

This release deleted the gate from the code while it was still reading on for the account this site reads, so the code path no longer asks a flag before running.

This account: on · anonymous baseline: on · compiled default in v2.1.273: not a boolean we can read

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
CCR_ENABLE_BUNDLE

What

When starting a cloud/bridge (teleport) session, Claude Code can now seed the remote environment from a local git bundle instead of doing a full sync.

  • Whether to enable bundle seeding is controlled by the tengu_ccr_bundle_seed_enabled gate or the CCR_ENABLE_BUNDLE environment variable, and is off by default unless forced.
  • The CCR_FORCE_BUNDLE environment variable can force bundling of the workspace regardless of the gate.
  • These combine into an internal allowBundle decision that determines whether a git bundle is uploaded to seed the remote environment.

Why

Seeding from a git bundle can be faster or more reliable than a full sync when setting up a remote session, while the gate and env vars let this be rolled out and forced on selectively.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

In dev
Nothing to try yet
Useful3 Signal3
Auth Notable no docs found

New OAuth scope user:plugins gated by PLUGINS_SCOPE_REGISTERED#

A new OAuth scope, user:plugins, is requested for accounts with plugin access registered

Details 0 0 Feedback
user:plugins
What

When Claude Code logs in, it can now request an additional permission scope called user:plugins as part of OAuth (the login flow that grants Claude Code permission to act on your behalf). This scope is only added when a setting called PLUGINS_SCOPE_REGISTERED is turned on for the login configuration being used. The default and production login configurations now have this turned on, while configurations that use a custom client ID or an environment-variable override for the client ID do not.

Why

This lets most users' logins pick up permission for a plugins-related feature automatically, while custom or overridden login setups are left unaffected until they're updated too.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

+New
Use it now
Useful4 Signal2
Cowork

New skill-registration call for a 'Create a new Cowork plugin' skill added to startup#

Startup now registers a built-in skill for creating or customizing a Cowork plugin

Details 0 0 Feedback
What

Claude Code's startup process now registers an additional built-in skill alongside its existing ones, for creating a Cowork plugin. Its description tells Claude it can create a new Cowork plugin from scratch, or customize an already-installed plugin for a specific organization.

Why

Registering the skill at startup makes this plugin-creation capability available to Claude automatically, without the user having to discover or invoke it manually.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful4 Signal2
Slash Commands

Unknown slash commands can now fall back to sending the text to the model#

An unrecognized /command can now be sent to Claude as a normal prompt instead of always erroring

Details 0 0 Feedback
What

Previously, typing a /command that Claude Code didn't recognize always produced an "Unknown command" error. Now, in normal interactive use (not inside a subagent or non-interactive mode), Claude Code can instead fall back to treating your whole input as a regular message to Claude.

Why

This avoids a dead-end error for input that merely looks like a slash command but isn't, letting Claude try to make sense of it as a normal prompt instead.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Use it now
Useful3 Signal2
Permissions Notable no docs found

Parked-permission timeout no longer a hardcoded constant#

The wait time before a parked permission prompt times out is now configurable, not fixed

Details 0 0 Feedback
CLAUDE_CODE_PARKED_PERMISSION_WAIT_MS
What

When Claude Code "parks" a permission request (waiting for you to answer whether a tool can run) and no answer comes back in time, it falls back after a wait period. That wait period used to be a fixed number; it's now read per-request from a setting, which in turn comes from the environment variable CLAUDE_CODE_PARKED_PERMISSION_WAIT_MS (still defaulting to 2000 milliseconds).

Why

Making the timeout configurable per situation rather than one fixed value allows more flexibility in how long Claude Code waits for a permission answer before giving up.

+New
Use it now
Useful3 Signal2
Read Tool no docs found

Read tool's HTTP handler helper gains body_file support#

Read tool's HTTP handler settings now accept a body_file option alongside method, body, mode, and script

Details 0 0 Feedback
body_file
What

The Read tool's validator for HTTP-handler settings now recognizes a body_file key in addition to the existing method, body, mode, and script keys.

Why

This means an HTTP request body used by the handler can now be sourced from a file rather than only being supplied inline.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Use it now
Useful3 Signal1
Group of 2 Artifacts no docs found

Document write tools document a __delete__ sentinel for removing fields#

The artifact/db write tool's documentation now explains how to delete a field during an update using __delete__

Details 0 0 Feedback
__delete__

What

The parameter description for the artifact document-write tool (write_db) now documents that, when updating a document, you can remove a field entirely by setting it to {"__delete__": true} in the data/file_path payload.

Why

This makes an existing capability discoverable: previously it wasn't documented how to delete a field via an update, so callers might not have known this shorthand existed.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Use it now
Useful2 Signal1
Elsewhere

New CLI diagnostics for malformed --tools entries#

The --tools flag now gives specific warnings for common typos and formatting mistakes

Details 0 0 Feedback
--tools
What

The --tools flag, which restricts which built-in tools Claude Code can use, now parses its entries more carefully and warns about specific common mistakes:

  • an entry that doesn't match any recognized built-in tool name (possible typo)
  • a rule written with parentheses where a plain tool name was meant
  • an exclusion prefix (like !) separated from the tool name by a stray space
  • a bare exclusion prefix with nothing after it
Why

These warnings catch malformed --tools entries that would otherwise silently fail to do what was intended, such as a tool being unexpectedly withheld because of a typo, without any explanation.

Were these the right ones to put at the top? 0 answered
Below the fold

Everything else

Smaller changes and internals, grouped as the pipeline found them. Nothing is dropped, it is only further down.

64 entries

Improvementsopen

Improved
You'll notice
Useful3 Signal2
Group of 2 Git Integration

PR/change tracking now extracts and reports the source branch#

Claude Code now detects the head/source branch of gh/glab PR creations and reports it as the branch a new change was opened from

Details 0 0 Feedback

What

  • The code that scans bash command output for gh pr create / glab mr create invocations to link a session to a pull request was rewritten to also extract the target branch, from a --head/-H (gh) or --source-branch/-s (glab) flag, and validate it as a safe git ref before using it.
  • The branch field reported to a host for VCS changes is now documented to carry this branch information more broadly: not just for providers without their own head-branch concept (like Gerrit), but for any provider when the change's kind is created, using the branch the create was opened from.

Why This lets a host display the branch a newly created pull request or change came from immediately, before the host's own lookup against the forge (like GitHub or GitLab) responds.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful3 Signal2
Group of 2 Permissions

Chat attachments are now treated as inside the working directory for read permission#

Reading a chat attachment no longer triggers an unnecessary permission prompt just because it sits outside the working directory

Details 0 0 Feedback

What

Files the session has 'staged', such as chat attachments, are now recognized as being effectively inside the working directory (the folder Claude Code is operating in) for permission purposes, even when their actual location is outside it.

  • A new check (stagedByDirectory) auto-allows reads that would otherwise require asking the user, because the file lives under a directory the session has staged.
  • This feeds into read, upload, and database-write permission checks, which now also track a stagedUpload flag.
  • Unlike a normal approval, this staged-file allowance does not cover the whole session; it's remembered only for that one call (remember: 'this_call').

Why

This avoids unnecessary 'ask' prompts when Claude Code needs to read a file the user just attached to the chat, while still keeping the permission scoped narrowly instead of granting broader session-wide access.

Improved
You'll notice
Useful3 Signal2
Group of 2 Subagents

Forked agent queries now compute and report a relayEligible flag#

Forked or background agent queries now track whether they're eligible for relay, gated by tengu_wild_tome, and report it in telemetry

Feature flag
tengu_wild_tome Off by default, switched on for this account

The shipped code defaults this off, and the flag server returned on for the one account this site reads on this version. That is the reading that makes the entry above worth a second look, and it still says nothing about your account.

This account: on · anonymous baseline: on · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

What

When running a forked or background agent query, Claude Code now computes a relayEligible flag (on), which is true only when the fork has no separate agent ID, has forked context messages, keeps the same tool set as its parent, and the tengu_wild_tome feature flag is enabled (it's off by default).

  • This flag is passed into the query as relayFork.
  • It's recorded as relayEligible in the tengu_fork_agent_query telemetry event and in fork-completion telemetry.

Why

This lays groundwork for relaying forked/background agent queries under certain conditions, while the telemetry field lets this be tracked and rolled out safely via the tengu_wild_tome flag.

Improved
You'll notice
Useful3 Signal2
Group of 2 Usage

/usage results now include a structured usage_report#

The /usage command's transcript message can now carry a structured usage_report alongside its text

Details 0 0 Feedback
/usage

What

When the /usage slash command runs, the synthetic assistant message that delivers the result can now carry a structured usage_report object, in addition to the existing markdown text. It includes session totals, plan usage rows, and extra-usage spend, and sits alongside the existing context_usage and local_command_run fields on the message.

Why

This lets remote clients render usage information as a proper card or widget instead of having to parse it back out of markdown text.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal2
Group of 3 MCP

MCP server allowlist policy can now be inherited from lower-priority admin settings, with a warning when it's shadowed#

Claude Code now looks across all managed settings sources for MCP allowlist/lock policy and warns admins when a lower-priority source is being ignored

Details 0 0 Feedback
allowManagedMcpServersOnlyallowedMcpServers

What

Organizations can control which MCP (Model Context Protocol) servers Claude Code is allowed to use through settings like allowManagedMcpServersOnly and allowedMcpServers. Previously these were read from a single merged settings object. Now:

  • Claude Code computes these values by combining the highest-priority settings source (the "slot") with the list of admin policy tiers, so a policy set only in a lower-priority admin settings source can still take effect even if there's no explicit override in the higher-priority one.
  • If the top-priority settings slot doesn't explicitly set allowManagedMcpServersOnly to false, Claude Code now falls back to an allowlist derived from the admin tiers rather than ignoring it.
  • A new startup warning lists any MCP-related policy keys that are set in a lower-precedence managed settings source and are therefore not being applied, and points admins to the /status command to see which keys are affected.

Why

Before this change, an MCP allowlist or lock configured only in a lower-priority admin settings file could be silently ignored if it wasn't also set at the top level, leaving organizations less protected than intended. Now the policy is inherited correctly, and when a setting is still being shadowed by a higher-priority source, admins get a clear warning instead of a silent gap.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal2
Group of 2 Chrome

Bridge child processes get a machine-settings mode#

Remote Control bridge worker child processes can now run in a machine-settings mode that also changes Claude-in-Chrome defaults

Details 0 0 Feedback

What

Why

This lets bridge child sessions run with their own machine-level settings without unexpectedly also turning on the Chrome browser integration by default.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal2
Group of 2 Remote Control unclear

Remote Control sessions now decline outdated machines via a version floor check#

Claude Code declines Remote Control bridge sessions when the local machine's version is below a server-set minimum

Unclear The gates named below (tengu_bridge_min_version, tengu_bridge_rc_child_artifact, tengu_bridge_child_machine_settings) are unread for this account, so whether they are switched on isn't known.

Feature flag
tengu_bridge_min_version Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: not a boolean we can read

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

tengu_bridge_rc_child_artifact Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

tengu_bridge_child_machine_settings Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

What Before starting or attaching to a Remote Control (bridge) session, Claude Code now checks a version floor: a minimum CLI version required for that session, advertised by the server. If the machine's own Claude Code build is older than that floor, or the floor can't be read (unanswered or malformed), the machine declines the session instead of trying to run it, logging a message like "Declined session ..." or "Remote Control could not attach: ...".

A new telemetry event, bridge_machine_lane_floor, fires when this happens, with a reason of below_floor, floor_malformed, or floor_unanswered.

Why This stops an out-of-date Claude Code install from silently trying to run a Remote Control session it isn't equipped to handle, and gives a clear signal (in logs and telemetry) when that happens.

Improved
Under the hood
Useful2 Signal2
Group of 2 Elsewhere no docs found unclear

New hardBlockUnder tier for tool and compliance policies#

Tool and HIPAA compliance settings gain a stricter hardBlockUnder enforcement tier beyond the existing deny list

Unclear What practical difference a hard block has from denial (e.g. whether it can be overridden) is not stated.

Details 0 0 Feedback
hardBlockUnder

What

  • Several HIPAA compliance settings (Memory sync, Projects, Team onboarding, Peer messaging) now carry a hardBlockUnder: ["hipaa"] property alongside the existing deniedUnder, marking a stricter enforcement tier separate from ordinary denial.
  • A new lookup table is built by collecting each tool's hardBlockUnder configuration, pairing each named threshold with the tool it applies to. The related deny-on-cache-miss list was also simplified to be built directly from each tool's configuration instead of a fixed base list plus filtering.

Why This adds a stricter "hard block" enforcement level on top of the existing deny mechanism, letting specific settings and tools be blocked outright under certain compliance thresholds (like HIPAA) rather than just denied through the normal path.

Improved
You'll notice
Useful3 Signal2
Artifacts

Artifact publish now pre-reserves a slug, but only when multi-file artifacts are enabled#

Publishing a brand-new artifact can now reserve its address in advance, when a related setting is enabled

Feature flag
tengu_cobalt_plinth_bracken Off by default, switched on for this account

The shipped code defaults this off, and the flag server returned on for the one account this site reads on this version. That is the reading that makes the entry above worth a second look, and it still says nothing about your account.

This account: on · anonymous baseline: on · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

When publishing a brand-new artifact (one with no existing slug or create path yet), Claude Code can now call a new step that reserves the artifact's address ahead of time, before the actual publish request is sent. This only happens under specific conditions: no slug or create path already exists, and multi-file artifacts are enabled while another related condition is not.

Why

Reserving the address in advance helps ensure the artifact's final location is settled before publishing begins, reducing the chance of conflicts during publish.

Improved
You'll notice
Useful3 Signal2
Subagents unclear

Teleport relay extended to forked (subagent) queries#

The teleport relay mechanism now also handles forked (subagent) queries, not just the main thread

Unclear What the teleport relay does for the user, and what leaving or staying off it changes in practice, is not stated in the finding.

Feature flag
tengu_wild_tome Off by default, switched on for this account

The shipped code defaults this off, and the flag server returned on for the one account this site reads on this version. That is the reading that makes the entry above worth a second look, and it still says nothing about your account.

This account: on · anonymous baseline: on · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

Claude Code has a "teleport relay" dispatch mechanism that previously only served queries on the main conversation thread. It now has a dedicated branch for forked queries (used by subagents), which checks whether a fork's existing context and tools are unchanged since an earlier relay decision was made, and logs when a fork's request has to leave the relay or is deliberately kept off it.

Why

This extends the relay mechanism's reach to subagent queries, though the finding doesn't specify what the relay itself accomplishes for the user.

Improved
You'll notice
Useful3 Signal2
Remote Control no docs found

tengu_bridge_child_auto_mode now defaults on#

The gate for defaulting bridge-spawned child sessions to Auto mode now compiles to true by default

Feature flag
tengu_bridge_child_auto_mode Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
CLAUDE_CODE_BRIDGE_CHILD_AUTO_DEFAULT
What

When the Claude remote-control bridge (which connects the Claude mobile app to a Claude Code session on your computer) spawns a child session, it can default that session to Auto permission mode. The internal flag controlling this default, tengu_bridge_child_auto_mode, now compiles to true instead of false. This flag also decides whether the spawn path fetches session tags before starting, and feeds into whether a spawned bridge child receives the CLAUDE_CODE_BRIDGE_CHILD_AUTO_DEFAULT setting.

Why

This is a change to the compiled default of an internal flag, not a statement about whether it is switched on for any particular account; whether it actually takes effect depends on server-side rollout.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal2
Remote Control unclear

Remote Control now enforces a minimum-version floor before accepting sessions started remotely#

Remote Control now checks your Claude Code version meets a minimum before accepting a remotely started session

Unclear Nothing has been read yet about whether the tengu_bridge_min_version gate is switched on for any account.

Feature flag
tengu_bridge_min_version Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: not a boolean we can read

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

When a session is started remotely (via Remote Control), Claude Code now checks that the local installation meets a required minimum version, and distinguishes three ways that check can fail:

  • the required version couldn't be retrieved from the server at all
  • the value received from the server was malformed
  • the local installation is genuinely below the required version

Each case now shows its own distinct message explaining what went wrong.

Why

This makes it clearer why a remotely started session was rejected, instead of showing one generic failure for what could be three different underlying problems.

Improved
You'll notice
Useful2 Signal2
Artifacts

Artifact template field no longer gated#

Setting a template on a new artifact no longer requires a feature flag to take effect

Details 0 0 Feedback
What

When Claude Code builds the request to create an artifact, the template field is now included whenever a template is specified. Previously, including it also required an internal feature check to pass; that check has been removed.

Why

Artifact templates now work consistently whenever one is specified, rather than depending on an additional gate.

Improved
You'll notice
Useful2 Signal2
Auth

New session-wide lock message for restricted-policy orgs#

New message explains when a feature stays disabled for the rest of a session after a restricted-policy org signed in

Details 0 0 Feedback
What

A new message has been added alongside the existing "disabled by your organization's policy" message. It explains that once a session has seen a sign-in from an organization with a restricted policy, a feature stays disabled for the rest of that session, even if you later sign in with a different account.

Why

This clarifies a behavior that could otherwise be confusing: switching accounts mid-session doesn't necessarily re-enable a feature that a restricted-policy organization's sign-in had turned off, and now Claude Code tells you why.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful3 Signal1
GitHub

GitHub App install now detects SAML SSO enforcement#

/install-github-app now recognizes SAML SSO enforcement and explains how to re-authorize

Details 0 0 Feedback
/install-github-app
What

/install-github-app, which installs the Claude GitHub App for a repository, now recognizes when a repository access check fails because of SAML single sign-on (SSO) enforcement. Instead of showing a generic failure, it shows "Single sign-on authorization needed" with instructions to either re-authorize the GitHub CLI login and authorize the organization for SSO, or configure SSO on a personal access token.

Why

Organizations that enforce SAML SSO on GitHub previously got an unhelpful generic error during setup. Now the command tells the user exactly what's blocking access and how to fix it.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful3 Signal1
Artifacts

Artifact publish: overhauled unservable-file-type error messages with new content-type taxonomy#

Artifact publish errors for unservable file types now explain what to do, grouped by category

Details 0 0 Feedback
What

When publishing an artifact fails because a file's content type isn't one Claude Code can serve, the error message is now far more detailed. It groups servable content types into categories such as pages, styles, scripts, data, images, fonts, media, and documents, lists which file extensions belong to each, and gives targeted advice, for example pointing out when a rejected type has a close servable alternative, or when the file extension is a recognized but unservable type.

Claude Code also now records refused_ext and refused_type details in its artifact_publish / file_not_servable telemetry event.

Why

Instead of a bare rejection, users publishing an artifact now get concrete guidance on why a file's type isn't supported and what servable alternative to use instead.

Improved
You'll notice
Useful3 Signal1
Auth

Bedrock/Vertex/Foundry/Gateway auth errors get provider-specific guidance#

Login errors from Bedrock, Vertex, Foundry and Gateway now show provider-specific fix-it guidance instead of one generic message

Details 0 0 Feedback
What

When a request to a model provider fails with an authentication error (401/403), Claude Code now shows guidance tailored to which provider you're using, instead of one generic error for all of them:

  • Amazon Bedrock: including a new check for when a model simply isn't enabled for your account/region, with instructions to enable it in the Bedrock console
  • Google Vertex AI
  • Foundry: a new dedicated auth-failure message
  • Gateway: a special message for 403 errors
Why

Authentication failures have different causes and fixes depending on which backend you're connecting through, so pointing you at the right console or setting saves time compared to a one-size-fits-all error.

Improved
You'll notice
Useful2 Signal1
Group of 2 Slash Commands

New reminder for unrecognized slash commands#

Claude Code now injects an unknown_command_fallback reminder when a typed slash command doesn't exist

Details 0 0 Feedback

What

When a user's message starts with a slash command that isn't available in the current session, Claude Code now injects a new unknown_command_fallback reminder into the transcript. It tells the model the command name (when it's safe to show), suggests the closest available command, lists the commands that ARE available in the session, and instructs the model to treat the message as a plain request rather than claim the command ran.

Why

This stops the model from silently pretending a nonexistent command succeeded, and instead points the user toward a command that does exist or has it handle the message as ordinary text.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Group of 7 Artifacts

Artifacts now flag content written by people outside your organization#

Artifact tools and metadata now distinguish content from outside-organization writers, separate from your own co-writers

Details 0 0 Feedback

What

Artifacts (Claude Code's shareable published pages/files) can be edited by multiple people, and previously the only distinction tracked was whether a file was "cowritten" or "foreign" to you. This release adds a more specific signal:

  • Artifact and asset metadata, save/fetch responses, and tool results now carry a new outside_writer (also called outsideWriter or outsideOrg in some places) field, alongside the existing cowritten/foreign fields.
  • When artifact tools (asset_list, asset_read, file_list, file_read, files_read, and artifact publish/read/db_read) return content flagged this way, the message shown now specifically says the file "may include content from a writer outside your organization," instead of the more generic "another person's page" wording.
  • Artifacts containing HTML content published by an outside-organization writer now get a prompt-injection defense wrapper that tells the model to treat that content as untrusted data, not instructions, and forbids changing permissions or configuration based on it.
  • Telemetry now records when this outside-writer condition is detected.

Why

This lets Claude Code warn more precisely when you're looking at content that came from someone outside your organization, rather than just a co-writer, and it hardens artifacts against prompt-injection attempts embedded in content contributed by outsiders.

Improved
You'll notice
Useful2 Signal1
Group of 2 Inbox

Session-inbox 'wake' messages now get their own parsing and rendering#

Messages that wake a session due to an external event are now parsed and shown with a dedicated chat display instead of a generic one

Details 0 0 Feedback

What

Messages that begin with <wake reason="external-event" — sent when an external event wakes up a session — are now specifically recognized instead of being shown as a generic system message.

  • A new function parses and detects these messages using parseExternalEventWake and isSessionInboxWake.
  • When a message passes the isSessionInboxWake check, the transcript renderer displays it with a dedicated UserSessionInboxWakeMessage component instead of the generic system-message renderer.

Why

This gives session-inbox wake events (where something outside the conversation triggers the session to resume) a clearer, purpose-built appearance in the transcript instead of blending in with ordinary system messages.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Group of 2 Auth

401 errors now point users to /login#

Authentication failures (HTTP 401) now show a message telling you to run /login

Details 0 0 Feedback
/login

What When a request fails with an HTTP 401 (unauthorized), Claude Code now shows a specific message ending in "· Run /login, then try again", using a default reason of "Claude login not accepted" when no more specific reason is available. This applies generally, and specifically to session-create failures (creating a remote/teleport session), where a 401 now surfaces this message ahead of the generic fallback error text.

Why Previously a 401 could surface a generic or raw server error, leaving it unclear what to do. Pointing directly at /login gives a clear next step when authentication has failed or expired.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Group of 2 GitHub

Autofix-PR errors now show gh's real failure output#

When gh pr view fails during autofix-PR, the error now includes gh's actual stderr instead of a generic message

Details 0 0 Feedback

What

When gh pr view fails for reasons other than the command not being found (ENOENT), the autofix-PR flow now includes the last 3 non-empty lines of gh's actual stderr output in the error message shown to the user or agent, instead of just the generic error object.

Why

This gives a much more useful, specific reason when the gh CLI fails during an autofix PR, instead of a vague generic error.

Improved
Under the hood
Useful2 Signal1
Group of 2 Artifacts

Artifact reads handle the stored type declaration more carefully#

Artifact reads now skip or prefetch the stored Artifact-type declaration depending on who's reading and what page

Details 0 0 Feedback

What

Reading an artifact now takes a storedDeclaration option that controls whether the stored Artifact-type declaration is included:

  • When the page being read is a probed live document or page (and the read isn't specifically for the type page), the stored type declaration is now left out.
  • When an owner or writer reads the main artifact page (not a specific file) and the artifact has an Artifact-type declaration, Claude Code now starts fetching that stored declaration at the same time as the main content, instead of waiting until afterward.

Why

Skipping the declaration when it isn't needed avoids sending redundant data, and fetching it in parallel for owner/writer reads hides the extra latency it would otherwise add.

Improved
You'll notice
Useful2 Signal1
Group of 2 Elsewhere

Scheduled/cron task ownership checks are tightened to avoid running tasks from other checkouts#

Scheduled and cron tasks are now filtered more strictly so tasks copied from another checkout or project don't run here

Details 0 0 Feedback

What

Claude Code now applies extra checks before treating a pending scheduled or cron task as belonging to the current session:

  • A new async helper collects the creator session IDs referenced by pending tasks (other than the current session) and checks whether a transcript file exists on disk for each; tasks whose creator has no transcript are excluded from the set this session will run, with a log line flagging that a scheduled_tasks.json copied from another checkout looks like this.
  • Tasks now also carry a createdInProject field, matched against the current project's normalized path, in addition to the existing createdBySessionId/pid-based ownership check, before a task is treated as belonging here for missed-task and firing logic.

Why

Without these checks, a scheduled_tasks.json file copied between checkouts or projects could cause tasks meant for a different session or project to run in the wrong place; these changes catch that case.

Improved
You'll notice
Useful2 Signal1
Memory

Memory-directory prefetch now respects blockReadsOutsideWorkingDirectories#

Memory-file prefetching now also respects the block-outside-directory-reads setting

Details 0 0 Feedback
blockReadsOutsideWorkingDirectories
What

When Claude Code warms up its memory context by prefetching files from a memory directory, it now checks the blockReadsOutsideWorkingDirectories setting (which makes file tools refuse reads outside your designated working directories) before reading a candidate file. If that setting is on, it verifies the file is actually inside the working directory first. If that check itself fails with an error, the read is blocked rather than allowed.

Why

This closes a gap where memory prefetching could have read files outside your working directory even with blockReadsOutsideWorkingDirectories turned on, and it errs on the side of blocking when it can't be sure.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Bash Safety

cd-before-git-hook warning now covers any version-control command, not just git#

The directory-change safety warning before a version-control command now covers more than just git

Details 0 0 Feedback
What

Claude Code warns when a compound terminal command changes directory and then runs a version-control tool, because that pattern can pick up untrusted hooks or repository settings from the new directory. This warning previously mentioned git specifically; it now applies its wording generally to any version-control command, not just git.

Why

This ensures the same protection and warning message applies consistently across different version-control tools, not just git.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Artifacts

Artifact tool descriptions now flag "outside writer" edits#

Artifact tool prompts now warn when someone outside your organization may have edited the artifact

Details 0 0 Feedback
What

When Claude Code asks for permission to use an artifact tool action (such as reading, listing, or deleting files or assets), the description shown now includes a bracketed note reading "[outside writer: someone outside the user's organization may have written to this artifact]" whenever that's the case.

Why

This flags a potential trust concern before an action is approved, letting the user know the artifact may have been modified by someone outside their organization.

Improved
You'll notice
Useful2 Signal1
Artifacts

Design-system README lookup now supports a project-scoped README#

Artifact design-system guide lookup now also checks a project-level README file

Details 0 0 Feedback
What

When Claude Code fetches the design-system guide used for artifacts, it now also looks for a project/README.md file, in addition to the existing store or file-level README it already checked. The lookup also now distinguishes more specific failure reasons: being blocked by a rule, lacking consent, the file having moved, or the file being unreadable.

Why

Checking a project-scoped README gives artifacts a chance to pick up design guidance defined at the project level, and the more specific failure reasons make it clearer why a guide wasn't found when it isn't.

Improved
You'll notice
Useful2 Signal1
Artifacts

Artifact type listing now includes types "shared with" the user#

Listing artifact types now distinguishes types shared with you from your own and your organization's

Details 0 0 Feedback
What

When Claude lists artifact meta-types (such as design systems) using the list action, the instructions now describe three categories instead of two: types you own, types belonging to your organization, and types specifically shared with you. The formatter behind this listing now labels shared rows more precisely, distinguishing shared-with-you from shared-within-the-organization rather than lumping both under a generic "shared" label.

Why

This gives a clearer picture of where a listed artifact type actually comes from, so it's less confusing when browsing types that aren't your own.

Improved
You'll notice
Useful2 Signal1
Background Tasks

Task status can now report a worker-restart reason#

Background tasks can now report they stopped because the worker process restarted

Details 0 0 Feedback
What

The status information for a background task now supports a reason field with the value worker_restart. It's used when a task is automatically stopped because the underlying worker process restarted and found the task orphaned (left without a running process to resume it) when it came back up. This always appears together with a status of stopped, and the same value appears in task stop notifications.

Why

This gives a specific, documented explanation when a background task stops unexpectedly due to the worker restarting, rather than leaving it unclear why the task ended.

Improved
You'll notice
Useful2 Signal1
Bash Safety

Bash subshell/cd checks: new content scan for unparsed command substitutions#

Bash cd checks now scan command substitutions inside unparsed subshells for risky commands like rm

Details 0 0 Feedback
What

When Claude Code can't fully analyze a bash subshell (an 'unparsed command substitution') that also contains a cd, it now separately scans the command and process substitutions inside it, looking for risky commands such as rm or rmdir hidden within them. If there are more than 64 such substitutions to check, Claude Code now denies the command outright with the message 'too many command substitutions to analyze', rather than trying to analyze all of them.

Why

This closes a gap where a destructive command like rm could be tucked inside a subshell that changes directory, and it makes Claude Code refuse rather than guess when there's too much nested substitution to safely check.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Permissions

New outright-deny path for permission rules on code-running tools#

Permission rules can now flatly deny tools that run code as another denied tool would

Details 0 0 Feedback
What

When Claude Code checks whether a tool is allowed to run because it "runs code as" another tool would, it previously only checked for a matching "ask" permission rule. It now also checks first for a matching "deny" rule (not counting rules that come from tool-narrowing). If one is found, the action is flatly refused with the message: "Permission to use <tool> has been denied: it runs code as <other tool> does, and a rule denies <other tool>."

Why

Previously, a rule that denied one tool could be bypassed by using a different tool that runs code the same way, since only "ask" rules were checked in that path. Now a deny rule on the underlying capability blocks it outright.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
Elsewhere

OSC 11 theme query skipped when terminal reports its own theme via a 'surface' push#

Claude Code skips asking the terminal for its background color when the terminal already pushed its own light/dark setting

Details 0 0 Feedback
What

Claude Code can detect whether your terminal is using a light or dark theme by sending a query (OSC 11) that asks for the terminal's background color. Now, if the terminal has already told Claude Code its theme directly through a 'surface' push notification, Claude Code trusts that notification and skips sending the OSC 11 query, logging 'surface override active, skipping OSC 11 query'.

Why

This avoids an unnecessary and potentially redundant terminal query when the terminal is already actively reporting its theme, relying on the more direct signal instead.

Improved
You'll notice
Useful2 Signal1
Settings

Settings 'not applied' warning now names the source file and lists all affected keys#

Claude Code now warns by name when settings keys are set in a managed-settings file that doesn't actually apply to them

Details 0 0 Feedback
/status
What

Claude Code can now detect when settings keys are configured in a managed-settings file whose source doesn't apply for those particular keys. When this happens, it shows a new warning that names the specific source file, lists every offending key, and tells the user to either remove them or move them to a settings source that does apply, pointing to /status (the Settings interface, on the Status tab) to see the list of settings sources.

Why

This surfaces settings that are silently being ignored because they're defined in the wrong place, so users can find and fix misconfigured settings instead of wondering why a setting isn't taking effect.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
GitHub

New GitHub-app-check 403 detector for IP allowlist / app suspended / SAML SSO#

GitHub app installation checks now detect and explain 403 errors caused by IP allowlists, app suspension, or required SAML SSO

Details 0 0 Feedback
What

Claude Code's check for whether its GitHub app is installed now has a new helper that parses a 403 error response body. When the error is marked as user-facing and its code is one of github_ip_allowlist, github_app_suspended, or github_saml_sso_required, Claude Code now surfaces GitHub's own error message to the user, truncated to 300 characters. This runs alongside the existing rate-limit detection in the same error handler.

Why

This gives users a clear, specific explanation when a GitHub app check fails for one of these access-restriction reasons, instead of a generic error.

Improved
You'll notice
Useful2 Signal1
Permissions

Deny/ask permission messages now append the matched rule's own text#

Permission deny/ask messages now show the exact rule text that triggered the block

Details 0 0 Feedback
What

When a tool call is denied or requires confirmation ('ask') because it matched a specific permission rule, the message shown to the user now appends that rule's own associated hint text, including in cases where the match happened on a nested subcommand.

Why

This makes it clear which permission rule caused a block or prompt, and shows any custom message attached to that rule, instead of leaving the user to guess which rule fired.

Improved
You'll notice
Useful2 Signal1
Auth

New restricted-region/auth error codes recognized#

Claude Code now recognizes three new account/auth restriction error codes

Details 0 0 Feedback
What

Claude Code's list of recognized API restriction reasons gained three new codes:

  • organization_on_hold
  • oauth_scope_insufficient
  • token_expired
Why

This lets Claude Code recognize and presumably respond appropriately to more specific account and authentication problems reported by the server, rather than treating them as unrecognized errors.

Improved
You'll notice
Useful2 Signal1
File Tools

File read integrity now also validated by content digest#

Claude Code now also checks a content digest, not just byte offset, to detect if a file changed before editing

Details 0 0 Feedback
What

When Claude Code verifies that a file hasn't changed since it was last read (before applying an edit), it now also compares a content digest (a fingerprint computed from the file's contents) against a stored digest. If the digests don't match, it reports the file as changed, in addition to the existing check based on byte offset.

Why

The byte-offset check alone could miss some cases where a file's contents changed without the size or offset appearing to shift. Checking a content digest as well makes it more reliable to catch edits made outside Claude Code before they get silently overwritten.

Improved
You'll notice
Useful2 Signal1
Sessions

SessionStart/turn-end message when the driving app doesn't respond#

New message tells you when the app driving your session, like Claude Desktop, didn't respond at startup or mid-turn

Details 0 0 Feedback
What

A new helper produces a user-facing message when the application driving a Claude Code session (such as Claude Desktop, or generically "the app driving this session") fails to respond. It distinguishes between two cases: failing to respond during SessionStart (when a session begins or resumes) versus failing to respond partway through a turn.

Why

Instead of silently continuing or failing unclearly, Claude Code now tells you explicitly when the driving app didn't respond and that it carried on without it, making it easier to understand why something might behave unexpectedly.

Improved
You'll notice
Useful2 Signal1
Auth

New auth failure categories for Microsoft Foundry and Gateway#

New error messages for failed Microsoft Foundry and generic gateway authentication

Details 0 0 Feedback
What

Two new error messages were added for authentication failures: one specifically for Microsoft Foundry, and one for generic gateway refusals. Both share a new suffix noting that credentials are managed via environment variables.

Why

This gives clearer, more specific error text when authentication fails through a Microsoft Foundry or gateway setup, making it easier to understand that the issue relates to environment-managed credentials.

Improved
You'll notice
Useful2 Signal1
UI

Message-list scroll 'reveal' rewritten as a cancellable, promise-based landing check#

Scrolling to a message in the chat view now waits for confirmation it actually landed, instead of retrying a fixed number of times

Details 0 0 Feedback
What

The mechanism that scrolls the message list to reveal a specific message was reworked. It now returns a promise that resolves once the target message has actually settled into place — matching height and position across re-renders — rather than retrying a fixed number of times regardless of whether the scroll succeeded. It also includes a give-up timeout and a way to cancel the operation early.

Why

This should make jumping to a message in the transcript more reliable, since Claude Code now waits for confirmation the scroll actually completed instead of guessing based on a retry count.

Improved
You'll notice
Useful2 Signal1
UI

Waiting/spinner status line rewritten with terminal-width-aware truncation#

The waiting/spinner status line was rewritten to truncate based on available terminal width

Details 0 0 Feedback
What

The header components that show the idle spinner message, the "Reconnecting"/"Disconnected" banner, and the count of background tasks were rewritten around a shared calculator that works out how much horizontal space the status text and the " in background" suffix should each get. If there isn't enough room, the background-task suffix is now dropped entirely rather than being awkwardly truncated.

Why

This keeps the status line readable in narrower terminal windows, instead of letting the background-task count get cut off mid-text.

Improved
You'll notice
Useful2 Signal1
GitHub

Richer PR-webhook subscription failure detail in autofix flow#

Autofix PR webhook failures now show the specific reason instead of a generic message

Details 0 0 Feedback
What

When the automatic pull-request-fixing flow can't subscribe a session to GitHub pull-request webhooks (notifications GitHub sends about PR activity), and the reason isn't simply that the GitHub app isn't installed, Claude Code now shows the specific detail explaining why, trimmed to 300 characters, in both the flow itself and its warning banner. Previously it only showed the generic message "Couldn't subscribe this session to PR webhooks."

Why

This gives users a concrete reason when webhook subscription fails, instead of an unhelpful generic message that gave no clue about what went wrong.

Improved
You'll notice
Useful2 Signal1
UI

Prompt-suggestion generation now tries multiple candidate replies#

Prompt-suggestion generation now tries several candidate replies instead of just the first one

Details 0 0 Feedback
What

When Claude Code asks the model to suggest a follow-up prompt, it used to stop at the very first assistant text reply it found and clean it up with a set of regex rules. Now it first collects all of the assistant's candidate text replies, then runs the same cleanup rules over each candidate in order, stopping only once a candidate actually produces a usable, non-empty suggestion.

Why

This makes prompt suggestions more reliable: if the first candidate reply turns out empty or unusable after cleanup, Claude Code now falls through to try the next one instead of giving up.

Improved
You'll notice
Useful2 Signal1
Elsewhere unclear

Policy-limits fetch cycle gains accelerated retry and 'network kick' recovery#

Claude Code now retries faster and recovers sooner when it can't fetch your policy limits

Unclear Whether this behavior is active for this site's account is not established; the related gates are unread.

Details 0 0 Feedback
What

When Claude Code can't fetch your account's policy limits (usage/permission rules from your organization) and has no recent valid result to fall back on, it now recovers more aggressively:

  • It arms a faster, randomized-timing retry instead of waiting for the normal poll interval
  • It also watches for any other successful network call and immediately re-tries the policy-limits fetch when one happens (a "network kick")
  • It now tracks how long it went without a valid result, and records that when a result is finally recovered
Why

This should shorten the window where Claude Code is operating without confirmed policy limits, particularly after a temporary network hiccup, by recovering as soon as the network shows signs of life again rather than waiting out a fixed timer.

Improved
You'll notice
Useful2 Signal1
Bash Safety unclear

Bash 'too complex' command handling reworked with a per-reason-kind table gating the outside-working-directory read block#

Bash's 'too complex to check' read-block guard now applies via a general table covering more refusal reasons, not just one hardcoded case

Unclear Whether this behavior is active for this site's account is not established; the related gate is unread.

Details 0 0 Feedback
blockReadsOutsideWorkingDirectories
What

When permissions.blockReadsOutsideWorkingDirectories is turned on (which makes file tools refuse reads outside your designated working directories), Bash commands that can't be reliably checked against that rule are refused. Previously this only applied to commands flagged as "too complex." Now a table of refusal reasons decides which ones trigger the same refusal, including: too-complex, semantics, multi-cd, shell-operators, cd-git-compound, and process-substitution. Other reasons, like dangerous-path, flag-validation, net-redirect, and sed-dangerous, are explicitly excluded.

Why

This broadens the read-block safety net to more kinds of Bash commands that are hard to statically verify, closing gaps where a command could previously slip past the outside-working-directory read restriction just because it wasn't classified as "too complex."

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful2 Signal1
MCP

MCP OAuth/auth failure messages split into four specific cases#

MCP authentication failure messages now split into four specific cases instead of two generic ones

Details 0 0 Feedback
What

When an MCP (Model Context Protocol, used to connect Claude Code to external tool servers) tool call fails because of invalid or expired credentials, the error message now distinguishes four situations instead of two:

  • A claude.ai connection needs to be reconnected
  • A credential was rejected by the server's headersHelper (with guidance to check the helper and run /mcp to reconnect or authenticate)
  • A statically configured Authorization header was rejected
  • A generic prompt to re-authenticate
Why

More specific error messages help you fix the actual problem, for example checking a custom headersHelper versus simply running /mcp to reconnect, rather than getting the same vague re-authorization prompt regardless of cause.

Improved
You'll notice
Useful2 Signal1
MCP

New toast when MCP server reconnection is exhausted#

Claude Code now shows a persistent notification when an MCP server's automatic reconnection attempts run out

Details 0 0 Feedback
/mcp
What

Claude Code connects to MCP servers (external tool providers that plug into Claude Code) and tries to reconnect automatically if a server disconnects. If those automatic reconnection attempts run out without success, a persistent notification now appears telling you to reconnect manually by running /mcp. The notification clears on its own once the server successfully connects again.

Why

Previously a server could sit disconnected without a clear signal that automatic retries had given up. This notification makes it obvious when manual action is needed, and points directly at /mcp to fix it.

Improved
You'll notice
Useful2 Signal1
Bash Safety

Bash commands too complex for AST analysis now get blocked outright under the read-block setting#

Bash commands too complicated to analyze are now blocked outright when reads are locked to the working directory

Details 0 0 Feedback
blockReadsOutsideWorkingDirectories
What

When the permissions.blockReadsOutsideWorkingDirectories setting is turned on (which makes Claude Code's file tools refuse reads outside the working directory), Bash commands that are too structurally complex for Claude Code to analyze are now refused outright with a hard "ask" prompt, unless a specific exemption applies. Previously, these overly complex commands fell through to the normal complexity-based approval flow instead.

Why

Commands too complex to analyze can't be reliably checked against the read-location block, so Claude Code now asks for explicit approval on them rather than risking one slipping through unchecked.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful1 Signal1
Group of 5 Bash Safety

Stricter safety checks for declare, typeset, local, export, readonly, and unset commands#

Claude Code now catches more shell commands that could be reinterpreted unsafely by the real shell before running them

Details 0 0 Feedback
declaretypesetlocal

What

When Claude Code decides whether a shell command is simple enough to run without invoking the full shell, it now rejects more edge cases that could behave differently than expected:

  • declare, typeset, and local commands are rejected as too complex unless their operand is a plain variable name with a simple, inert value, since the real shell could otherwise treat it as an array subscript, an expanded name, or a compound assignment.
  • export and readonly commands are now also rejected when their operand looks like an array assignment (matching flag patterns the shell would evaluate as a compound array assignment).
  • unset no longer just checks for a bare variable name; it also allows a second, more permissive pattern under certain conditions, but anything that still doesn't match either pattern is now rejected as too complex, since the shell might expand or evaluate it unexpectedly.
  • These rejections are now marked internally with a differential flag, replacing a fixed classification that was previously used for these cases.

Why

These checks exist to stop Claude Code from treating a shell command as "simple" when the real shell could actually parse or evaluate it in a surprising way (for example, expanding into an array assignment). Tightening them reduces the chance that a command behaves differently than Claude Code's analysis assumed.

Improved
Under the hood
Useful1 Signal1
Group of 2 MCP

MCP connector prewait logic now distinguishes the first command from later wakes#

MCP connector startup waiting now behaves differently on the first command versus later 'wakes', with a new relay-marked flag

Details 0 0 Feedback

What

The waiting logic Claude Code uses before running MCP (Model Context Protocol) tool calls or slash commands, which decides how long to wait for connectors to be ready and whether to only use local ones, has been reworked for coordinator-mode connections.

  • On the first command, it still uses the existing deadline and local-only settings.
  • On later 'wakes' (i.e. once a first command has already been taken), it can instead use a separate mcpPrewait.laterWakes configuration for the deadline and local-only behavior.
  • A new relayMarked flag and a deferred-wake payload replace the old single waitRemoteServerNames field, and the fresh-wait deadline is now computed based on whether the session is relay-marked.

Why

This lets Claude Code apply different, more appropriate waiting behavior for connectors depending on whether it's the very first command in a session or a later resumption, reducing unnecessary waiting or premature local-only fallback.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful1 Signal1
Group of 2 Elsewhere no docs found

Feedback-related telemetry and prompts now respect allow_product_feedback#

Session-memory rating telemetry and the feedback-prompt UI now both check the allow_product_feedback policy

Details 0 0 Feedback
allow_product_feedback

What

  • The tengu_session_memory_rated event, sent when a user marks a remembered session-memory entry as good or bad, is now only sent when the allow_product_feedback setting is true.
  • The interactive feedback-prompt UI now checks allow_product_feedback before doing anything besides letting the prompt be dismissed, closing the prompt immediately when it's off.

Why

This matches org policy for accounts under ZDR/HIPAA-style restrictions, which suppresses feedback-derived telemetry and UI so those organizations' feedback data isn't collected when their policy disallows it.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful1 Signal1
Group of 2 Memory

Background memory extraction gets more guardrails#

Claude Code now skips its background memory-writing pass when auto-memory is disabled or reads are locked to the working directory

Feature flag
tengu_passport_quail Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
blockReadsOutsideWorkingDirectories

What

The background pass that extracts memories now bails out earlier in more cases:

These join the existing check that gates extraction behind the tengu_passport_quail flag.

Why

When a workspace has restricted reads to just the working directory, running the memory-writing pass in the background no longer makes sense, so Claude Code now refuses to run it in that case, alongside respecting the existing auto-memory disable setting.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Under the hood
Useful1 Signal1
Bash Safety

Bash permission checks: new fallback path when a classifier-based 'ask' isn't overridable#

Bash safety checks gained a subcommand-based fallback when an 'ask' decision from the classifier can't be overridden

Details 0 0 Feedback
What

When Claude Code's safety-check classifier decides a bash command should prompt you with 'ask' and that decision isn't one that can simply be approved by the classifier, Claude Code now runs an extra check on the decision's reason and, where applicable, tries a new fallback that looks at the command's individual subcommands before falling back to the original 'ask' decision. The separate logic for always asking about certain subcommands was also consolidated into one shared piece of code.

Why

This adds another layer of analysis before Claude Code settles on asking you for permission to run a bash command, aiming to make that decision more precise.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful1 Signal1
Elsewhere

New safety-classifier interruption message text for tool calls#

New message tells the model not to repeat content stopped by a safety classifier, except for already-running tool calls

Details 0 0 Feedback
What

A new piece of text is shown when a response is stopped by a safety classifier (an automated system that flags unsafe content), explicitly telling the model not to reproduce that content. An exception is carved out for tool calls that were already running when the stop happened; those are instead marked as "Interrupted."

Why

This prevents the model from retrying or repeating content that was blocked for safety reasons, while still letting already-in-flight tool calls end cleanly rather than being treated as if they repeated the blocked content.

Improved
You'll notice
Useful1 Signal1
GitHub

GitHub-app-not-installed error now prefers server-supplied message#

GitHub-app-missing error message now shows the server's own wording when available

Details 0 0 Feedback
What

When Claude Code reports that the Claude GitHub app isn't installed, it now checks for a message sent by the server (serverMessage) and shows that exact text first, only falling back to its generic built-in instructions if the server didn't provide one.

Why

This lets the server give more specific or up-to-date instructions for fixing a missing GitHub app installation, instead of users always seeing the same generic message.

Improved
Under the hood
Useful1 Signal1
Bash Safety

New early bail-out for over-complex bash commands before prefix-rule matching#

Overly complex bash commands now skip permission-rule matching entirely instead of being reasoned about

Details 0 0 Feedback
What

Before Claude Code splits a bash command into subcommands to match it against permission rules, it now runs a new complexity-and-length check first. If the command trips this check, Claude Code stops and declines to reason about it further, rather than attempting to split and match it.

Why

This avoids Claude Code trying to apply permission logic to bash commands too complex to analyze reliably, likely reducing the chance of a permission rule being matched incorrectly against a convoluted command.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
You'll notice
Useful1 Signal1
UI

Default spinner message changed to fall back to "Working"#

The loading spinner now shows "Working" when it has no other status message to display

Details 0 0 Feedback
What

The short status message Claude Code shows next to its spinner while it's processing now falls back to the plain word "Working" when no other message is available. Previously this fallback text was different. Also, the code no longer adds a trailing "..." to the message if the text already ends with one.

Why

This avoids showing an awkward or duplicated ellipsis ("...") after the status text, and gives a clearer default label when Claude Code has nothing more specific to say about what it's doing.

Improved
Under the hood
Useful1 Signal1
Artifacts

Design-system token card paths get a 'project/' prefix when applicable#

Design-system token card file paths can now be prefixed with 'project/' under certain conditions

Details 0 0 Feedback
What

When Claude Code reads a design system's token cards (files like api/tokens.md and tokens.json) for a file-backed artifact, it can now look for those files under a project/ prefix, if the design system's own documentation lists a path matching a specific marker.

Why

This lets token-card lookups match design systems that organize their files under a project/ folder, mirroring similar prefix handling already used elsewhere for card-reading.

Improved
You'll notice
Useful1 Signal1
Memory

Auto-memory loading now skipped when reads are fenced outside the working directory#

Auto-memory loading is now skipped when a permissions setting fences reads outside the working directory

Details 0 0 Feedback
blockReadsOutsideWorkingDirectories
What

Claude Code's auto-memory feature (which automatically loads memory files) now checks an additional condition before running. If a permissions setting blocks reads outside the current working directory, auto-memory loading is skipped entirely. A new telemetry field, read_block_fenced, is recorded when this happens.

Why

Auto-memory files can live outside the working directory, so this keeps that read-restriction setting from being silently bypassed by the auto-memory feature.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Improved
Under the hood
Useful1 Signal1
Memory

New AutoMem path-allowlist gate restricting which files can be scanned as pinned memory#

AutoMem file scanning now filters candidate files against an allowed-paths list before reading them

Details 0 0 Feedback
What

A new function filters the files AutoMem and AutoMemPinned would scan as pinned memory, keeping only those within the workspace root's allowed paths. This filter runs before file headers are scanned, and is used both when building the AutoMem index and when identifying pinned memory candidates.

Why

This prevents AutoMem from scanning memory files outside the paths it's permitted to read.

Improved
Under the hood
Useful1 Signal0
Artifacts

Artifacts list default scope wording tightened for type-scoped listings#

Artifacts list tool now describes the default listing scope as owned, org-owned, and shared-with-you separately

Details 0 0 Feedback
What

The list tool's description of its default scope, when filtering artifacts by type or type_url, now spells out three categories instead of two: artifacts the user owns, artifacts their organization owns, and artifacts shared with them. Previously the wording lumped the latter two together as everything "shared across their organization."

Why

The change clarifies, in the tool's own documentation, that organization-owned artifacts and artifacts merely shared with the user are distinct categories, which affects how Claude reasons about what a default listing will include.

28 entries

Bug Fixesopen

Fixed
You'll notice
Useful2 Signal2
Elsewhere unclear

New safety-classifier refusal recovery path (tengu_ochre_kite)#

Claude Code now recovers gracefully when a safety filter cuts off a response mid-tool-call

Unclear Whether this behavior is enabled for any accounts is unknown, since both related gates are unread.

Feature flag
tengu_ochre_kite Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

When an assistant's response is stopped partway through by a safety classifier (an automated check that can halt a reply), Claude Code now detects this specific case, identified by a 'refusal' stop reason. For any tool calls that were left not run or were interrupted by the stop, it now generates proper error results explaining what happened:

  • A 'Not run' message for tool calls that never started
  • An 'Interrupted' message for tool calls that were cut off partway through

After recording these results, Claude Code issues a retry nudge that notes a safeguard was triggered.

Why

Previously, an interrupted safety stop could leave tool calls in a confusing, undocumented state. This change makes the interruption visible and gives the conversation a clear path to retry instead of stalling.

Fixed
You'll notice
Useful2 Signal1
Group of 2 Artifacts

Publish requests are retried once instead of failing on a settling error#

A publish request that gets interrupted or hits a 'still settling' error is now automatically retried once instead of failing

Details 0 0 Feedback

What

When publishing an artifact or deploy and the response never arrives, or the server responds with a new publish_settling error (HTTP 409), Claude Code now retries the publish request automatically instead of treating it as a failure.

  • A new retry wrapper (internally called rf) resends the interrupted or settling publish request exactly once.
  • The retried request is marked with a resend flag and an attemptId, so the server can recognize it as a retry of a publish that may have already landed, rather than duplicating it.

Why

This avoids spurious publish failures and duplicate publishes when a deploy is still settling server-side or when the original response is lost in transit, making artifact/page publishing more reliable.

Fixed
You'll notice
Useful2 Signal1
Group of 2 GitHub

More specific error messages for GitHub token import network failures#

GitHub token import now shows clearer errors for TLS/proxy problems and invalid tokens, including a new sslHint

Details 0 0 Feedback

What

Importing a GitHub token now gives more actionable error messages:

  • Network errors are classified, and TLS-tunnel (ERR_PROXY_TUNNEL) failures now explain that the proxy refused the tunnel, via a new sslHint.
  • Generic network errors during token import/web-setup now surface the sslHint and/or which proxy environment-variable source is in effect.
  • Invalid-token (400) responses now parse the server's message and show it in the UI, appending guidance to add the repo scope.

Why

These changes turn generic, hard-to-diagnose network and token errors into specific messages that point at the actual cause, such as a proxy blocking the connection or a token missing a required scope.

Fixed
Under the hood
Useful2 Signal1
File Tools

Read tool gains a device/inode identity check against writes (macOS)#

On macOS, the Read tool now checks a file's actual disk identity against files already held open by a write

Details 0 0 Feedback
What

When Claude reads a file, Claude Code now checks a per-session record of files already 'held' from an earlier write to that same path. On macOS specifically, it goes further and computes the file's real on-disk identity (its device and inode numbers, the operating system's way of uniquely identifying a file even if the path changes) for the resolved path and for a fallback path used when a file isn't found, and passes that identity along with the read.

Why

This guards against subtle mixups where a path read from disk isn't actually the same file that was just written, for example if something was moved, replaced, or symlinked in between, keeping Claude's view of a file's contents consistent with what it just wrote on macOS.

Fixed
Under the hood
Useful2 Signal1
Subagents

Sub-agent/task token accounting now skips advisor and compaction iterations#

Task token-usage totals now skip advisor and compaction iterations when picking the latest usable one

Details 0 0 Feedback
What

The function that computes a sub-agent task's token usage, used for cost and usage display, now skips iterations of type advisor_message or compaction when looking for the most recent usable iteration to report on. If no valid message iteration is found, it falls back to the running totals instead. Numeric validation on each token field is also stricter than before.

Why

This avoids showing token counts drawn from an advisor message or a compaction step (where the model condenses conversation history) as if they were a normal turn's usage, keeping the reported token numbers more accurate.

Fixed
You'll notice
Useful2 Signal1
MCP

Webhook route now returns proper 405 instead of conflating bad method with not-found#

The webhook route for Claude Code's MCP server now returns a proper 405 'method not allowed' instead of a misleading 404 for wrong HTTP methods

Details 0 0 Feedback
What

Claude Code's Web Standard Streamable HTTP MCP (Model Context Protocol) server route handles incoming requests. Previously, if a request used the wrong HTTP method, it was treated the same as a request to a route that doesn't exist at all, both returning a 404 'not found' response. Now the handler checks whether the route and session are valid first, and if the only problem is the method (i.e. it isn't POST), it returns a proper 405 'method not allowed' response with an Allow: POST header.

Why

This gives callers a more accurate error: a 405 correctly signals that the route exists but the method is wrong, rather than implying the route itself is missing.

Fixed
You'll notice
Useful2 Signal1
Bash Safety

Differential-testing detector now flags glued subshell groups too#

Claude Code's bash/zsh compatibility checker now flags parentheses glued directly onto a preceding word as a shell-specific risk

Details 0 0 Feedback
What

Claude Code's detector for shell commands that might behave differently across bash and zsh has a new case: a (...) group that appears directly attached to the end of a preceding word or statement, on the same line. Bash rejects this kind of command outright, but zsh instead reads the glued parentheses as a glob-group word and expands whatever follows it. Previously, this specific pattern only triggered a generic 'statement follows statement' message.

Why

This gives a clearer, more specific warning for a command shape where bash and zsh genuinely diverge in behavior, instead of a generic catch-all message.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
You'll notice
Useful2 Signal1
Plugins

Plugin sync list-fetch now retries once on failure instead of always erroring immediately#

Plugin marketplace sync now returns a structured error instead of crashing when a later page of results fails to load

Details 0 0 Feedback
What

When Claude Code syncs a plugin marketplace's list of plugins page by page, a failure on a later page (after at least one page already loaded successfully) is now handled differently: instead of letting the raw error propagate, it returns a structured result containing success: false, an error, and a kind.

Why

This lets the caller handle a partial list (some pages fetched, a later one failed) more gracefully instead of the whole sync failing with an unstructured error.

Fixed
You'll notice
Useful2 Signal1
Sessions

Forking now requires the fork point to be durably recorded#

Forking a session now fails outright if the fork point can't be saved, instead of silently continuing

Details 0 0 Feedback
What

When Claude Code creates a forked or background session, it now treats writing the fork point (a marker recording where the fork branched off, along with the last prompt) as required, separate from the fork briefing text, which stays optional. If the required fork-point marker fails to write, forking now fails with an explicit error. Previously, a failed write here only logged a warning and the fork went ahead anyway.

Why

This stops a fork from silently proceeding without a properly recorded starting point, which could otherwise lead to a forked session that doesn't know exactly where it branched from.

Fixed
Under the hood
Useful2 Signal1
Sessions

Background spawn / fork now supports resuming at a specific leaf message#

Forking a background session can now resume at a specific earlier message

Details 0 0 Feedback
What

The internal function used to spawn a background agent or fork a conversation now accepts a resumeAtLeaf option, letting it resume from a specific message rather than the latest one. If the conversation no longer actually contains that message as a valid fork point, it now returns a clear error: "Couldn't fork - the conversation no longer contains the fork point," instead of proceeding incorrectly.

Why

This lets background forks branch from a precise earlier point in a conversation, and fails clearly and safely if that point has since disappeared (for example, after history was pruned).

Fixed
You'll notice
Useful2 Signal1
Plugins

Plugin-list and skill-list now also degrade gracefully on a 404 not-found error, not just 403/no_scope#

Plugin and skill listing now also degrade to an empty list on a 404 'not found' error, not just permission errors

Details 0 0 Feedback
What

When Claude Code fetches your list of plugins or skills and the request fails, it now falls back to showing an empty list (with a warning logged) instead of throwing an error in one more case: a 404 "not found" server response. Previously this graceful fallback only applied to 403 (forbidden) or "no scope" permission errors, and skill listing specifically only handled the 403 case. Both plugin and skill listing now share the same check, including the new 404 case.

Why

This prevents a 404 from a plugin or skill listing request from surfacing as a hard error, keeping Claude Code usable even when that endpoint can't find anything to return.

Fixed
You'll notice
Useful2 Signal1
Usage

Session usage totals now take the max of two token counts#

Session usage totals now use whichever of two token counts is higher

Details 0 0 Feedback
usage.total_tokens
What

The total token count reported at the end of a run (shown in the run summary as usage.total_tokens / usage.totalTokens) is now calculated by comparing two separate token totals and taking the larger of the two, instead of relying on a single calculation.

Why

This should make the reported usage number more reliable when the two underlying counting methods disagree, since the higher figure is used rather than potentially undercounting.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
Under the hood
Useful2 Signal1
Remote Control

Bridge child now told about permission-mode changes, even before it's mounted#

Permission-mode changes are now buffered and delivered to the remote-control bridge even before it's connected

Feature flag
tengu_bridge_child_auto_mode Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

When the permission mode changes during a session, a new helper now forwards that change to the bridge child session (used for remote control / mirroring) via noteModeChoice. If the bridge child isn't mounted yet at the time of the change, the mode choice is now held onto and delivered once the bridge child does mount, instead of being lost.

Why

This prevents a permission-mode change from being silently dropped when it happens before a remote-control connection is fully set up, so remote sessions stay in sync with the actual permission mode.

Fixed
You'll notice
Useful2 Signal1
Elsewhere

Headless plugin/MCP startup: first-command and first-turn mount joins now actually wait, instead of being no-ops#

Headless startup now actually waits for plugin/MCP mounts before the first command and first turn

Details 0 0 Feedback
What

Two points in headless session startup, firstCommandMountJoin and turnMountJoin, previously did nothing. They now, when a 'projects mount' is still pending, actually wait for it to finish via joinProjectsMountBeforeFirstCommand, bounded by timeout settings (PROJECTS_MOUNT_FIRST_COMMAND_WAIT_MS and a related floor value). turnMountJoin additionally waits for any pending 'grants' before letting the first turn proceed.

Why

This should prevent headless sessions from running commands or turns before required plugin/MCP project mounts and permission grants are actually ready, avoiding race conditions where a headless session acts before its environment is fully set up.

Fixed
You'll notice
Useful2 Signal1
MCP

HTTP method handling tightened for a webhook-style MCP transport route#

A webhook-style connection route now replies 'method not allowed' instead of 'not found' for wrong HTTP methods

Details 0 0 Feedback
What

Claude Code has an internal route used to look up a live MCP (Model Context Protocol, the system that lets Claude use external tools) transport connection by secret and ID. If a request to a valid, known connection used the wrong HTTP method (anything other than POST), it used to get the same generic "not found" response as a request to a connection that doesn't exist at all. Now it gets a proper "method not allowed" response, with an Allow: POST header telling the caller what method it should have used.

Why

This makes it possible to tell the difference between "this connection doesn't exist" and "this connection exists but you called it the wrong way," which is clearer for anything talking to this route programmatically.

Fixed
You'll notice
Useful1 Signal1
Group of 3 Plugins

Plugin and skill sync now tolerate entitlement-denied (403/404) responses instead of failing#

Skill and plugin sync treat a 403 or 404 not-entitled response as a soft no-op instead of a sync failure

Details 0 0 Feedback

What

  • The plugin skill search route now treats an HTTP 404 with error type not_found_error the same way it already treated a 403: both degrade to an empty result and log an entitlement-denied event.
  • The background skills-sync routine now recognizes a 404 not_found_error response as "not entitled" rather than a failure: it logs skills_sync_list_refused, proceeds as if zero skills were returned, and reports the round's outcome as not_entitled instead of counting it toward consecutive failed rounds or firing generic error telemetry.
  • The plugin-sync routine similarly no longer hard-fails when the server's plugin list call is refused for what looks like an entitlement reason; it logs a warning, falls back to the previously-known plugin list, and reports a distinct not_entitled outcome instead of list_failed.

Why Previously these sync paths could treat a "you're not entitled to this" response from the server the same as a real error, which could count against failure thresholds or block plugin/skill functionality unnecessarily. Now they degrade gracefully, keeping the client usable and clearly distinguishing "not entitled" from "broken."

Fixed
You'll notice
Useful1 Signal1
Elsewhere unclear

/update and /restart messages drop the artifact-comment-monitor special casing#

/update and /restart no longer mention artifact comment monitoring in their refusal messages

Unclear Nothing has been read yet about the tengu_update_refused or tengu_update_bg_respawn gates mentioned alongside this change.

Details 0 0 Feedback
/update
What

When /update or a restart is refused, for example because the session was resumed from a different project directory or a background task is running, the message no longer checks whether an artifact 'comment monitor' task is active and no longer adjusts its wording for that case. The messages for transcript-path drift and for background tasks running are now fixed text, without the earlier note that restarting would stop auto-replies to artifact comments.

Why

The refusal messages are simpler and no longer vary based on whether artifact comment monitoring happens to be running, so the caveat about losing auto-replies to comments is no longer shown even if that monitoring is active.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
You'll notice
Useful1 Signal1
Artifacts

Design system attachment no longer hardcoded to README.md#

Attaching a design system's documentation no longer assumes the file is named README.md

Details 0 0 Feedback
What

The tool that attaches a design system's documentation file to the conversation used to always assume that file was called README.md. It now reads and reports the actual file path instead.

Why

Design systems whose documentation lives in a differently-named file can now be attached correctly, instead of the tool assuming a fixed filename.

Fixed
You'll notice
Useful1 Signal1
Bash Safety

Shell-safety analyzer: new subshell and array-literal detectors#

Shell-safety checker gains new detectors for hidden subshells and array-literal syntax

Details 0 0 Feedback
What

Claude Code's bash safety checker gained two new internal helpers:

  • One recursively checks whether a command or variable assignment contains a nested subshell (a command run in its own sub-process, e.g. via parentheses).
  • Another walks a parsed command looking for =( array-literal syntax hidden inside words, regular expressions, or expansions, falling back to treating the command as unsafe by default if parsing fails or the input is too long.
Why

These detectors help the safety checker catch commands that use subshells or array-literal syntax to do something other than what they appear to on the surface, before deciding whether a command is safe to auto-run.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
Under the hood
Useful1 Signal1
REPL unclear

REPL bridge ignores fork display frames at ingress#

Claude Code's internal message bridge now ignores certain 'fork display frame' messages before processing them

Unclear What a 'fork display frame' is and what user-visible situation triggers one isn't stated; a related gate, tengu_bridge_message_received, hasn't been read for this site's account.

Details 0 0 Feedback
What

Claude Code has an internal bridge that receives messages for its interactive session (REPL). It now checks incoming messages early and, if a message is identified as a 'fork display frame', logs 'Ignoring fork display frame at ingress' and drops it immediately, before the usual de-duplication and telemetry logic runs.

Why

This stops a particular kind of internal display message from being processed as if it were a regular user message.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
Under the hood
Useful1 Signal1
Artifacts

Artifact design-system README fetch failure handling refined#

Fetching a design-system README for Artifacts now treats a plain 404 as 'file not present' instead of a fetch failure, in one new mode

Details 0 0 Feedback
What

When Claude Code fetches a design-system guide README for use with Artifacts, it can now distinguish between a real fetch failure and a 404 response that carries no specific error code. When a new parameter is set and the response is such a plain 404, Claude Code now silently treats the document as simply absent, rather than reporting it as 'could not be fetched'. The function also now returns a failed field alongside the existing why field.

Why

This avoids surfacing a misleading failure message for what is really just a missing optional file, in the cases where that distinction applies.

Fixed
You'll notice
Useful1 Signal1
UI

TUI-switch refusal message drops the artifact-comment-monitor case#

The /tui refusal message no longer calls out artifact-comment auto-replies as a separate case from other background work

Details 0 0 Feedback
/tui
What

When /tui (which sets the terminal UI renderer and relaunches) is refused because background work is running, it used to give a distinct message and telemetry label when the background work was specifically an artifact-comment monitor auto-replying to comments. That distinction is now gone: any active background work is reported the same way, with a single generic message telling you to wait or stop it via /tasks before running /tui again.

Why

This simplifies the refusal handling to one consistent message, at the cost of no longer telling you specifically that a comment monitor was the thing blocking the switch.

Fixed
Under the hood
Useful1 Signal1
Telemetry

Token-usage accumulation in agent execution now validates usage shape before summing#

Token usage totals for an agent turn are now validated before being added up, to avoid bad data corrupting the count

Details 0 0 Feedback
What

When Claude Code tallies up token usage during an agent's turn, it now checks the shape of the usage data first: it requires input_tokens to be a number, and treats a missing or null output_tokens as 0. Only after this check does it sum input, cache-creation, cache-read, and output tokens, instead of summing the raw values directly.

Why

This guards against malformed or incomplete usage data silently corrupting token counts or causing errors, keeping usage totals reliable.

Fixed
You'll notice
Useful1 Signal1
Artifacts

upload_asset size-limit error now reports the actual file size#

upload_asset size-limit errors now include the actual file size in bytes

Details 0 0 Feedback
What

When the Artifact tool's upload_asset rejects a file for being too large, the error it throws now includes a sizeBytes field carrying the exact byte size of the file that was rejected, in addition to the existing error message.

Why

This gives more precise information about why an upload failed, useful for understanding exactly how far over the limit a file was rather than just seeing a generic size-limit message.

Fixed
You'll notice
Useful1 Signal0
UI unclear

Scroll handler now also releases a hold indicator alongside disarming search#

Scrolling a viewport now also releases a hold indicator, not just dismisses search

Unclear The finding doesn't identify what the released "hold" indicator represents on screen.

Details 0 0 Feedback
What

Scrolling a viewport in Claude Code used to only disarm (turn off) an active search. It now also releases a separate "hold" indicator at the same time, and the app now watches that indicator so this happens reliably.

Why

This is an internal UI fix; the finding doesn't say which visible indicator this affects, so its user-facing effect isn't clear from the evidence.

Fixed
Under the hood
Useful1 Signal0
Elsewhere

AWS error parsing now also reads details.error_code#

AWS server error parsing now also reads error codes nested under details.error_code

Details 0 0 Feedback
What

Claude Code's normalizer for AWS server errors now checks details?.error_code on the error response before falling back to the older error_code/code fields. This means error payloads that nest their error code inside a details object are now correctly recognized and mapped to a known server error code.

Why

This lets Claude Code correctly identify and handle a wider range of AWS error response shapes instead of missing the ones with a nested error code.

Fixed
Under the hood
Useful1 Signal0
Cowork

Cowork file-read denial message now names the failed field generically#

The 'cannot read file' permission-denial message can now name a different failed field, not just file_path

Details 0 0 Feedback
What

The internal message shown when Claude is denied permission to read a file ("cannot read file ... the file could not be examined") used to always refer to a hardcoded file_path field. It now accepts a parameter name, defaulting to file_path, so the same message can be reused when a different parameter is the one that failed.

Why

This is a small internal cleanup that lets one deny-message helper serve tools or parameters other than file_path, rather than duplicating the message text for each one.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

Fixed
Under the hood
Useful1 Signal0
MCP

MCP tool-call auth-error telemetry no longer thrown as an exception#

A bug that could crash MCP auth-error logging with a stray exception has been fixed

Details 0 0 Feedback
What

When Claude Code logs telemetry for an MCP tool call that failed with a 401 authentication error, the logging call was accidentally wrapped in a throw, which meant it threw an undefined value instead of just recording the telemetry and letting normal error handling continue. That stray throw has been removed.

Why

This fixes a bug where recording an MCP authentication-error telemetry event could itself throw an unexpected error, potentially interfering with the normal handling of that error.

7 entries

In Developmentopen

In dev
Nothing to try yet
Useful3 Signal3
Hearthbot

Hearthbot bridge auto-allowed action list greatly expanded#

The hearthbot chat bridge can now auto-allow many more read-only actions without a permission prompt

Feature flag
tengu_webagent_mcp_bridge Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.273: not a boolean we can read

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

The hearthbot bridge, which lets Claude operate in chat and project channels, can now auto-allow a much larger set of actions without asking for permission first: the list grew from about 11 entries to 25. New auto-allowed actions include:

  • fetch_thread, fetch_project_timeline, fetch_messages
  • search_channels
  • list_thread_sessions, list_project_members, list_project_artifacts, list_project_prs
  • react, unreact
  • get_channel_session_id, get_project_session_id
  • read_memory

A new project-level mount path for the underlying MCP (Model Context Protocol, which lets Claude connect to external tools and data) server, and a new gating flag tengu_webagent_mcp_bridge, were also added.

Why

Auto-allowing read/fetch/list-style actions means Claude can look up threads, messages, and project details in chat without interrupting the conversation for a permission prompt each time.

In dev
Nothing to try yet
Useful3 Signal3
Remote Control unclear

New gated "headless hearth mount" (webagent MCP bridge) wired into headless session startup#

New gated 'headless hearth mount' wires a webagent MCP bridge into headless session startup

Unclear The tengu_webagent_mcp_bridge gate returned off for this site's account and for the anonymous baseline; no reading has been taken under this release yet, so its rollout status here is unknown.

Feature flag
tengu_webagent_mcp_bridge Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.273: not a boolean we can read

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

Headless sessions (used for print mode or the SDK) can now, when a bridge SDK URL is present and parseable, set up something called a 'headless hearth mount' via createHeadlessHearthMount. It's wired up with storage, credentials, the session's bearer token, and configuration for reading the projects binding. This is controlled by a feature gate.

Why

This lays groundwork for connecting headless sessions to a webagent MCP bridge, though it isn't enabled for general use yet.

In dev
Nothing to try yet
Useful2 Signal3
UI unclear

Diff panel prototyped as a plugin pane#

The /diff panel is now prototyped internally as a plugin pane rather than built-in UI

Unclear Whether the tengu_quiet_dolphin gate that guards this plugin form of the diff panel is enabled has not been read for this release.

Details 0 0 Feedback
/diff
What

A new internal plugin now describes the /diff panel, the view showing changed files and their edited sections (hunks) beside the transcript, as a plugin-based pane that refreshes as Claude makes edits, rather than being wired in as fixed built-in UI.

Why

This is a structural change in how the /diff panel is implemented internally; it doesn't change what /diff shows you.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

In dev
Nothing to try yet
Useful2 Signal3
Cowork unclear

Cowork worker prompt gains guidance about non-HTML 'Cowork types' (slide decks etc), behind an unresolved gate#

Cowork worker prompt can now tell workers to check for existing 'Cowork types' before authoring plain HTML

Unclear Whether this guidance is switched on could not be traced; the condition controlling it is not resolved by the evidence.

Details 0 0 Feedback
What

When a session includes the Cowork publish tool, the prompt given to a delegated worker can now include extra guidance that things like slide decks, presentations, or visual designs are not just plain .html pages. In that case, the worker is instructed to first list the published Cowork types available and start from a matching type before falling back to authoring plain HTML.

Why

This steers delegated workers toward using purpose-built Cowork formats for things like presentations, instead of defaulting to generic HTML, when that guidance is in effect.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

In dev
Nothing to try yet
Useful2 Signal2
Transcript

Duplicate 'waterfall' assistant/system messages pruned from transcript, gated by tengu_silly_waterfall#

A gated cleanup step now removes stray duplicate 'waterfall' messages from the conversation transcript

Feature flag
tengu_silly_waterfall Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

Claude Code can now strip out certain junk entries from the conversation transcript: a stray empty assistant message that appears right after a given point, and a message that is immediately followed only by system messages and matches a specific pattern. This is a new, more general cleanup step than the one covered before, and it only runs when a setting called tengu_silly_waterfall is turned on for the account.

The flag was off for both this site's account and the general population, and no reading has been taken under this release yet.

Why

When enabled, this keeps the visible conversation history free of leftover or duplicated entries that don't belong, so the transcript reads cleanly.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

In dev
Nothing to try yet
Useful1 Signal2
Memory unclear

AutoMem file scanning gated off in a new 'LU' mode and restricted by directory allow-list#

AutoMem file scanning now checks a new mode condition and restricts which files it can scan

Unclear The finding does not say what the new mode condition represents or when it evaluates to false.

Details 0 0 Feedback
What

AutoMem (Claude Code's automatic memory-file handling) now runs an extra condition check before scanning for pinned or automatic memory files, in addition to its existing checks. It also now filters candidate files against a computed list of allowed directories, so only files whose path falls under that allowed set can be scanned as memory headers.

Why

This narrows where AutoMem will look for memory files, reducing the chance it picks up files outside the intended locations.

In dev
Under the hood
Useful1 Signal2
Permissions unclear

Policy-limits verdict-changed emission now gated by Lft()#

Policy-limits change notifications can now be skipped under an experiment flag

Unclear Nothing has been read yet about whether tengu_lovely_umbrella is switched on for this account.

Details 0 0 Feedback
What

The function that emits a "verdict changed" event when policy limits change now checks a new condition first and, if it's true, returns early without emitting the event at all. This is controlled by an experiment flag called tengu_lovely_umbrella.

Why

This lets Anthropic suppress policy-limit-change notifications for some accounts via an experiment, without changing the underlying policy logic itself.

94 entries

Internal Changesopen

·Internal
Under the hood
Useful2 Signal3
Group of 3 Remote Control unclear

Bridge child session auto-mode gating re-plumbed under new flag names#

The internal flag controlling auto-permission-mode for bridge/remote-control child sessions was renamed and its default changed

Unclear Whether this behavior is switched on for any account is unknown; nothing has been read yet about the tengu_bridge_child_auto_mode or tengu_bridge_child_auto_over_settings gates that control it.

Feature flag
tengu_bridge_child_auto_mode Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

tengu_bridge_child_auto_over_settings Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

What

Remote Control (bridge) child sessions can automatically switch their permission mode to auto. The flag controlling this behavior was reorganized:

  • A new grants module can auto-switch a child session's permission mode to auto, merge or undo an auto_mode_environment fact list, and mount a meta MCP server for a bridged session. It reads a flag called tengu_bridge_child_auto_mode, whose default changed from off to on this release.
  • A separate check, previously also reading tengu_bridge_child_auto_mode (used for background-hint timeout scheduling in the sync subagent path), now reads a different, unrelated-sounding flag, tengu_shimmying_stardust, which still defaults to off.

Why

The two behaviors that used to share one flag now have separate flags with independent defaults: the bridge child auto-mode behavior now defaults to on, while the background-hint timing behavior that used to piggyback on the same flag now defaults to off under its own name. This means the two behaviors can now be turned on or off independently.

·Internal
Under the hood
Useful2 Signal3
Group of 2 UI unclear

Spinner tips rebuilt as a plugin with a seat/vacate handoff#

The tip line shown under the spinner while Claude works is now driven by an internal tips plugin instead of being hardcoded in the REPL

Unclear Whether the tengu_tips_mod gate that guards this plugin is enabled has not been read for this release.

Feature flag
tengu_tips_mod Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

What

  • The short tip line shown under the spinner while Claude Code is working has been rebuilt as an internal plugin (called tips), with its own pipeline for picking candidate tips, tracking relevance and failures, applying cooldowns and lifetime caps, and sorting by priority. Tips can come from the organization or from marketplace plugins.
  • The REPL no longer sets the spinner tip directly; a TurnController now carries a _spinnerTipHandoff object that gets "seated" and "vacated" against a shared registry to hand control of the tip display to the plugin.

Why Moving tip selection into a plugin lets tips come from more sources (org-provided or marketplace plugins) and be governed by shared rules like cooldowns and caps, instead of being chosen by a single hardcoded function.

·Internal
Under the hood
Useful3 Signal3
Remote Control unclear

New per-child capability flags for Remote Control: artifact and machine-settings inheritance#

Remote Control child sessions gain two new optional capabilities: artifact behavior and inherited machine settings

Unclear Nothing has been read yet about whether tengu_bridge_rc_child_artifact or tengu_bridge_child_machine_settings are switched on for any account.

Feature flag
tengu_bridge_rc_child_artifact Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

tengu_bridge_child_machine_settings Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

For sessions spawned as a 'project thread child' under Remote Control, two new capabilities can now be granted:

  • artifact behavior, controlled by a new check
  • inheriting machine-level settings, controlled by a separate new check

Both are added alongside the existing auto-mode-default and auto-over-settings capabilities that this kind of child session could already be given.

Why

This gives Remote Control finer control over what a spawned child session can do and what settings it starts with, beyond just its permission mode.

·Internal
Under the hood
Useful2 Signal3
Telemetry unclear

Metric attribution fields (agent/skill/plugin/mcp names) can be redacted before emission#

Attribution fields like agent, skill, plugin, and MCP names can now be redacted from emitted metrics

Unclear The tengu_teal_corbel_newel gate that allows unredacted emission read off for this site's account and off for the anonymous baseline, with no reading yet taken under this release.

Feature flag
tengu_teal_corbel_newel Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.273: off

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

Claude Code can now redact certain attribution fields before sending out metrics: agent.name, skill.name, plugin.name, mcp_server.name, and mcp_tool.name. The first time one of these values would differ from a shared baseline, it gets replaced with a common placeholder value instead, unless a setting allows the real, unredacted values to be sent.

Why

This limits how much identifying detail about which agents, skills, plugins, or MCP tools you use gets included in emitted metrics, when the corresponding setting isn't enabled.

·Internal
Under the hood
Useful2 Signal3
Hooks

Tool-execution hook context object substantially reworked#

The context object passed to tool-execution hooks was substantially reworked with many new fields

Details 0 0 Feedback
What

The context object handed to tool-execution hooks (code that runs around a tool call) was rebuilt. It no longer includes credentials, isNonInteractiveSession, persistedToolResultFiles, artifactRead, or signal. In their place it now carries a much larger set of fields, including agentId, agentWorktree, taskRegistry, readFileState, getFileHistoryState, applyFileHistoryOp, sessionEnvVars, markPrResolvedThisSession, userTypedShellDispatch, emitToolProgress, shellPermission (bundled with abortController and toolUseId), mainLoopModel, effort, effortLayerOverride, unlayeredPermissions, abortController, remoteCall, and innerCall.

Why

This substantially expands what internal hooks and tool-execution code can see and do around a tool call, covering things like agent identity, file-history tracking, and per-call permissions and effort settings, rather than the narrower context passed before.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal3
Agents unclear

New prompt-attachment extraction step inserted into user message pipeline#

A new step can extract prompt attachments and insert them as extra messages right after the first message

Unclear What triggers extractPromptAttachments to be set, and what kind of attachments this applies to, isn't stated.

Details 0 0 Feedback
What

When a new flag, extractPromptAttachments, is set on parsed input, Claude Code now runs an additional processing step that builds extra messages from the input and inserts them into the message list immediately after the first message.

Why

This adds a way for attachments carried in a prompt to be pulled out and turned into their own messages, when this flag is enabled.

·Internal
Under the hood
Useful2 Signal2
Group of 2 Remote Control unclear

Bridge sessions now default to computing tool-use diffs#

Remote Control (bridge) sessions now compute and send tool-call diffs by default

Unclear Nothing has been read yet about whether the tengu_bridge_child_tool_diff setting is switched on for any account.

Feature flag
tengu_bridge_child_tool_diff Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
CLAUDE_CODE_REMOTE

What In a Remote Control ("bridge") session, Claude Code now defaults to computing a diff for tool calls like Write and Edit, so the change can be reported back over the bridge. This is controlled by the tengu_bridge_child_tool_diff setting, which is checked only when the session's environment is a bridge session (CLAUDE_CODE_ENVIRONMENT_KIND === "bridge"). Setting CLAUDE_CODE_REMOTE always forces this on regardless of that flag.

Why Showing a diff for file-changing tool calls lets the Remote Control host display exactly what changed, without extra configuration.

·Internal
Under the hood
Useful2 Signal2
Group of 3 MCP unclear

runQuery hook threaded through tool-execution contexts#

Claude Code's MCP bridge, non-interactive query, and interactive REPL tool contexts all now carry a runQuery hook

Unclear What runQuery is actually used for and what capability it unlocks is not stated in the finding.

Details 0 0 Feedback

What

  • The isolated tool-execution context used to expose Claude Code's tools over an MCP server connection now includes a runQuery function in its options.
  • The function that builds options for a non-interactive/analysis query now accepts a runQuery parameter from its caller and passes it into the agent context options, alongside existing options like commands, tools, and mcpClients.
  • The interactive REPL's tool-use context now also includes a runQuery entry, alongside existing options like resolveCommandDialog and renderDebugControls.

Why Giving all three tool-execution contexts (MCP bridge, non-interactive queries, and the interactive REPL) the same runQuery hook lets them share a consistent way to run queries, rather than each context wiring this up separately or lacking the capability.

·Internal
Under the hood
Useful2 Signal2
Group of 3 Elsewhere

Agent-resume intent forwarding reworked: live/snapshot delivery and new safeguards#

Resuming an agent now forwards owner messages via explicit live/snapshot modes, with simplified gating and new telemetry for edge cases

Details 0 0 Feedback

What

  • The internal mechanism that forwards a user's ("owner's") queued messages into a resumed agent's conversation was simplified: it no longer checks a feature-enabled config plus an owner check, and instead takes explicit resumed and contextOnly flags. When contextOnly is set, the forwarded turns are relabeled with source unattributed.
  • Resuming an agent in the background now supports a liveTranscript setting that picks between live and snapshot delivery of forwarded messages; the forwarded content is spliced into the resumed agent's prompt before it continues.
  • A new telemetry event fires when an agent is resumed that's flagged as an "observer" but its observer status can't be confirmed, while the CLAUDE_CODE_FORWARD_USER_INTENT setting is active. The agent_intent_forward telemetry event also gained a resumed field.

Why These changes make it more reliable for messages you send while an agent is running to actually reach that agent when it resumes, distinguishing whether they should appear as a live conversation or a one-time snapshot, and flagging cases where Claude Code can't be sure whether an agent should be treated as an observer.

·Internal
Under the hood
Useful2 Signal2
Group of 2 Auth

API keys sourced from apiKeyHelper now go through model-catalog policy checks#

Auth detection now recognizes keys from apiKeyHelper and routes them through the same model-catalog policy check as other auth methods

Details 0 0 Feedback
apiKeyHelper

What

  • The function that determines the active authentication type now returns both the auth type and whether the API key came from an apiKeyHelper, and treats a key sourced this way as present even if its actual value is empty or falsy.
  • A new api_key_helper case was added to the logic that decides model-catalog access policy, so it now goes through the same allow_model_catalog policy check that was previously only applied to not_claude_ai_auth. The no-auth-method case also gained API-key-specific served-catalog handling.

Why

This ensures that when an organization supplies API keys via an apiKeyHelper script rather than a static key, Claude Code correctly recognizes that an API key is in use and applies the same model-catalog access policy as it does for other authentication methods.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Remote Control

New HTTP headers report tool-call durations and compaction state on bridge requests#

New HTTP headers report recent tool-call durations and compaction status on bridge requests

Details 0 0 Feedback
What

Claude Code now sends three new HTTP headers on some requests: x-claude-code-compaction, x-claude-code-context-compacted, and x-claude-code-prev-tool-durations. The last one carries a compact, size-limited list of recent tool names and how long each took to run. These headers are only attached when the connection is related to a Remote Control bridge session.

Why

This lets the server side of a bridge connection see timing and compaction (conversation-history trimming) information about the session without the client having to be asked for it separately.

·Internal
Under the hood
Useful2 Signal2
Sessions unclear

Session naming now tracks how a name was set and can be set aside per-conversation#

Session names now record how they were set and can be temporarily set aside per conversation

Unclear The finding does not say what triggers a name being set aside or where the set-aside names are surfaced to the user.

Details 0 0 Feedback
What

When Claude Code registers a name for a session, it now also records whether that name was given at launch. A new capability lets the current registered name be set aside into a per-conversation list, capped at a fixed number of entries (the oldest one is dropped once the list is full), which clears the session's active name.

Why

This lays groundwork for switching a session between different names across a conversation without losing track of earlier ones, up to a limit.

·Internal
Under the hood
Useful2 Signal2
Elsewhere

New per-context token-budget rollover tracker with threshold telemetry#

Claude Code now tracks token-budget usage per conversation and logs when it crosses key thresholds

Details 0 0 Feedback
What

Claude Code now has a tracker that follows cumulative token usage separately for the main conversation and for subagents (helper conversations spun off from the main one). It supports "rolling over" unused budget and re-anchoring the tracker, and it logs an event each time the remaining budget crosses 75%, 50%, 25%, 10%, or 0% of the total, along with how many rollovers have happened and how long since the tracker was last anchored.

Why

This gives finer-grained visibility into how token budgets are consumed over a session, which can help identify when context is running low before it becomes a problem.

·Internal
Under the hood
Useful2 Signal2
Elsewhere

New marker-based transcript relay/hand-off refusal codes and checks for cross-version updates#

The mechanism that hands off a session transcript during /update now has more precise failure checks

Details 0 0 Feedback
What

Claude Code has an internal relay mechanism, using markers embedded in a transcript, that hands off session state (including prompt cache data) during an /update. It now has specific, named refusal reasons for when this hand-off can't proceed, such as a marker not being in an inactive state, a missing marker line, an unexpected marker line format, or an anchor point not being in view. It also now checks that a "thinking strip" isn't owed, and checks that the resuming session hasn't already answered a turn of its own before arming the relay.

Why

These added checks make the hand-off between old and new versions during an update more reliable, catching mismatched or stale states before they cause problems rather than after.

·Internal
Under the hood
Useful2 Signal2
Remote Control

Remote-control/bridge process now initializes GrowthBook feature gates at startup#

The Remote Control bridge process now loads its feature-gate settings at startup

Details 0 0 Feedback
What

The background process that powers Remote Control (letting Claude Code be controlled from elsewhere) now initializes its GrowthBook feature gates as part of startup, running this in parallel with the rest of its startup work. If this initialization fails, it logs an error but keeps running, falling back to a cached copy of feature gates stored on disk.

Why

This ensures the bridge process has an up-to-date view of which features are enabled, while still working reliably (via the disk cache) if the feature-gate service can't be reached.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Artifacts

Database reads can now flag 'outside_writer' in tool results#

Database read results now include an outside_writer flag alongside the existing foreign flag

Details 0 0 Feedback
What

When Claude Code reads from an artifact's shared database using the read_db action, the result now includes a new outside_writer true/false field, computed from a new check, in addition to the existing foreign flag that already detects when a document was authored by someone else.

Why

This gives Claude more specific information about database records, letting it tell apart documents genuinely owned and written by the current account from ones that also had a writer from outside, on top of the existing general foreign-document detection.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Artifacts

Artifact publish gains a reserved/pre-assigned slug path#

Publishing an artifact can now target a slug that was reserved ahead of time

Details 0 0 Feedback
What

The function that publishes an artifact now accepts a pre-reserved slug (the short identifier used in an artifact's URL), letting a publish attach to that slug specifically. Its telemetry also now records is_redeploy, has_base_version, and a reserved flag when this path is used.

Why

This supports publishing to a slug that was set aside in advance, such as for a redeploy of an existing artifact, rather than always generating a fresh one, and lets Anthropic track how often that happens.

·Internal
Under the hood
Useful2 Signal2
Hooks unclear

SessionStart hook execution now receives an agentContext parameter#

SessionStart hooks now receive an extra agentContext parameter when they run

Unclear What information agentContext carries or what new capability it gives to SessionStart hooks is not stated.

Details 0 0 Feedback
SessionStart
What

A hook is a script you configure to run automatically at certain points in a session. The internal function that runs SessionStart hooks (which fire when a session begins or resumes) and loads plugin hooks now also accepts and passes along a new agentContext parameter, alongside existing options like credentials, the cancellation signal, and whether the session is orphaned.

Why

This gives the hook-running machinery more context about the agent it's running for, though the finding doesn't specify what new behavior this enables for hook authors.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Sessions

Session auto-naming rework: 'setAsideRegisteredName' and adoption counters#

Session auto-naming logic reworked to avoid races when multiple resume/restore operations happen at once

Details 0 0 Feedback
What

When Claude Code automatically names a session and the session's id changes mid-conversation, the logic that decides whether to adopt the new derived name has been reworked:

  • It now tracks an adoptions counter
  • It can set aside a previously-registered name and restore it later (setAsideRegisteredName / restoreSetAsideName)
  • It passes a new givenAtLaunch flag when registering a session name

This is meant to prevent multiple concurrent resume/restore operations from overwriting each other's session name.

Why

Without this, running multiple resume or restore operations on overlapping sessions could cause the wrong auto-generated name to stick, or a session's intended name to get lost.

·Internal
Under the hood
Useful2 Signal2
Remote Control unclear

Bridge server-config gains an explicit 'drop auto mode environment' knob and user-configured tracking#

Bridge configuration can now explicitly drop the 'auto mode environment' setting, and tracks if you'd configured your own

Unclear What 'auto mode environment' configures in practice is still not explained by the evidence available.

Details 0 0 Feedback
What

When Claude Code applies configuration from a bridge server, it can now be told to explicitly strip out the auto_mode_environment setting from the incoming config via a new dropAutoModeEnvironment option. Separately, it now tracks and records whether you had already configured your own auto-mode environment before the bridge's config was applied.

Why

This prevents a bridge server's configuration from silently overriding an auto-mode environment setting you'd already chosen yourself, and gives visibility into how often that situation happens.

·Internal
Under the hood
Useful2 Signal2
Auth unclear

New auth-scope hashing helper for account/token identity#

New hashing helper computes an auth-identity 'scope' for accounts and tokens

Unclear The finding doesn't say what this scope value is used for or why part of the logic is currently disabled.

Details 0 0 Feedback
CLAUDE_CODE_ACCOUNT_UUID
What

New internal functions compute a hashed 'scope' value that identifies the current login. For logins backed by a stored account (or the CLAUDE_CODE_ACCOUNT_UUID source), the scope combines the organization's UUID with a lowercased, hashed, and truncated account UUID. For logins based on an environment variable or file-descriptor auth source, the scope is a hash of the access token instead. A related companion function currently always returns {scope: null, reason: "not_claude_ai_auth"} because the code path that would compute something else is disabled (guarded by a permanently-false condition).

Why

This groups authentication identities into a consistent hashed form, likely for internal tracking or attribution, though the companion function's dead code means one code path currently never produces a real scope.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Remote Control no docs found

REPL bridge child auto-revive/reconnect flow renamed/reworked; new onForkConversation control op#

Remote-control bridge session gains an onForkConversation control op, plus a reworked reconnect flow

Details 0 0 Feedback
onForkConversation
What

The code handling the remote-control mirror session (the "bridge" that lets a remote session shadow a local one) was substantially reshuffled internally, mostly renaming variables from a rebuild. It also gained a new onForkConversation control operation: a remote bridge session can now request forking the conversation, using a snapshot of the messages, the current turn-activity state, and the length of any queued commands, and the resulting child bridge session is then recorded.

Why

This lets a remote-control session trigger a conversation fork remotely, extending what remote sessions can do to a locally-running Claude Code session.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful2 Signal2
Remote Control unclear

Remote-bridge REPL sessions gain fork-conversation and pending-prompt-count hooks#

Remote-bridge REPL sessions gain hooks for forking a conversation and checking for pending prompts

Unclear What feature uses these hooks, and what effect they have for someone using Remote Control, isn't established by the evidence.

Details 0 0 Feedback
What

The session builder used for remote and headless REPL sessions (the Remote Control v2 transport handler) now passes two new items into each connection's configuration: an onForkConversation callback, and a hasPendingPrompts() function that reports whether there are prompts still waiting to be handled. These sit alongside the existing onMcpSetServers, outboundOnly, and writeFrame fields.

Why

The finding doesn't say what calls these new hooks or what user-facing feature they support, only that the plumbing for forking a conversation and checking pending-prompt state is now in place for remote sessions.

·Internal
Under the hood
Useful2 Signal2
Auth

New auth-error liveness classifier and proxy-usage telemetry helpers#

New helper classifies auth errors as dead, live, or unknown, plus telemetry for proxy usage

Details 0 0 Feedback
What

A new function classifies authentication or network errors into three states: dead (the credential is truly no longer valid), live (the error is likely transient), or unknown, based on error codes, HTTP status, and the outcome of OAuth token refresh attempts. A companion helper reports whether a proxy is being used and whether that proxy is a loopback (local machine) proxy.

Why

Distinguishing genuinely dead credentials from transient failures should let Claude Code avoid treating temporary network hiccups as a reason to force re-authentication.

·Internal
Under the hood
Useful1 Signal2
Permissions unclear

New egress permission scope constant added#

A new 'egress' entry was added to an internal permission scope list

Unclear What this ["required", "egress"] list is used for, and which feature or permission check it belongs to, is not shown by the evidence.

Details 0 0 Feedback
What

A new small list was added internally pairing the values required and egress. There's no surrounding context showing exactly where this list is used.

Why

This looks like it relates to network egress (outbound connection) permission scoping, but what it controls or when it takes effect isn't shown.

·Internal
Under the hood
Useful1 Signal2
Elsewhere

New notification: experiment_gates sent over VSCode bridge#

Claude Code now sends experiment gate settings to the VS Code extension

Details 0 0 Feedback
What

A new function sends an experiment_gates message, carrying a set of experiment flags ("gates"), over the connection Claude Code uses to talk to its VS Code extension. If sending fails, it logs a warning rather than failing silently.

Why

This lets the VS Code extension know which experimental features are turned on for the session, keeping it in sync with the underlying Claude Code process.

·Internal
Under the hood
Useful1 Signal2
Sessions

'Teleport relay' fork-safety refinements: forkDirectLines and tools-baseline fingerprint#

The prompt-cache "teleport relay" path for forked sessions gains new bookkeeping to track fork safety

Details 0 0 Feedback
What

Claude Code has an internal "teleport relay" mechanism related to prompt caching (a way of reusing previously processed prompt content to save time and cost) that comes into play when a session is forked. New bookkeeping was added to it:

  • A boot-time check arms or disables the relay based on whether a cache marker is present, logging a message like "prompt-cache relay stays off: boot had no marker" and firing telemetry events upgrade_teleport_cache and cli_teleport_arm_verdict.
  • Tracking of which forked request lines went "direct" (bypassing the relay), so later requests on the same fork skip the relay too.
  • A comparison of a captured tools baseline's model and fingerprint, to determine whether a forked request's tool set is still "intact" or has "changed".
Why

These are internal safety checks that help Claude Code decide when it's safe to reuse cached prompt state across a forked session versus when the tools or setup have changed enough that it needs to start fresh.

·Internal
Under the hood
Useful1 Signal2
UI unclear

New availability checks for internal 'diff' and 'tips' modules#

New internal checks gate the 'diff' and 'tips' plugin modules behind readiness and enablement conditions

Unclear What the 'diff' and 'tips' modules actually do for the user isn't stated in the finding.

Details 0 0 Feedback
What

Two new internal helper functions each decide whether a plugin-style feature is available before it runs. One covers a module called 'diff', the other a module called 'tips'. Each check requires that the session isn't remote, that the module itself reports it's ready (isAvailable()), that a second internal readiness check passes, and that the module is listed among the currently enabled plugins.

Why

This is internal plumbing that ensures these two features only activate when all their prerequisites are actually met, reducing the chance of them running in a broken or unsupported state.

·Internal
Under the hood
Useful1 Signal2
Artifacts unclear

Artifact publish flow adds a bypass path around the 'copy source unverified' approval check#

Publishing copied artifact files can now skip the unverified-copy-source approval check under certain conditions

Unclear What specifically triggers the bypass condition, and how it differs from the existing approval check, isn't established by the evidence.

Details 0 0 Feedback
What

When publishing files that were copied from another artifact, Claude Code normally requires prior approval to read the copy source, and otherwise throws a copy_source_unverified error and records a copies_unpinned telemetry event. There is now an additional condition, checked with a permission function called with copySource: true and action ask, that when true skips both the error and the telemetry event.

Why

The finding doesn't say what triggers this bypass condition in practice, so it's unclear when publishing will now proceed without the usual unverified-copy-source check.

·Internal
Under the hood
Useful2 Signal1
Telemetry

OTLP metric datapoints are now aggregated by attribute set#

OTLP metric exports now merge datapoints that share the same attributes instead of sending one row each

Details 0 0 Feedback
What

When Claude Code exports metrics using OTLP (OpenTelemetry Protocol, a standard format for sending metrics to monitoring systems), datapoints that share the same set of attributes are now grouped together and their numeric values summed into a single row, using the most recent timestamp among them. Previously, each raw datapoint was emitted as its own separate row.

Why

This reduces the number of redundant rows sent to monitoring systems and gives a cleaner, aggregated view of metrics that share the same attributes.

·Internal
Under the hood
Useful2 Signal1
Internals

New per-request headers naming the caller's agent type and request class#

API requests now carry two new headers identifying the request's class and the calling agent type

Details 0 0 Feedback
What

Requests the CLI sends to Anthropic's API now include two additional headers: x-claude-code-request-class and x-claude-code-agent-type. Both are computed by helper functions that classify the request, for example as compaction, workflow, teammate, or custom, and are added to the default headers sent with every model call.

Why

This lets requests be tagged with what kind of request they are and what kind of agent made them, which is metadata rather than something that changes what a user sees.

·Internal
Under the hood
Useful1 Signal1
Group of 2 Sessions

Resume-interrupted-turn behavior can now be overridden and is read from a 'lane' config#

Whether Claude Code resumes an interrupted turn is now configurable per call and read from a lane config object instead of only an env var

Details 0 0 Feedback
CLAUDE_CODE_RESUME_INTERRUPTED_TURN

What

Behavior around resuming an interrupted turn, previously controlled only by the CLAUDE_CODE_RESUME_INTERRUPTED_TURN environment variable, changed in two ways:

Why

Moving these settings into a lane config object, with the option to override per call, allows resume-related behavior to be controlled more flexibly than a fixed environment variable read for the whole process.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Group of 2 Artifacts

New guidance for learning connector-tool schemas before publishing an Artifact or Doc#

Claude now has explicit guidance on how to safely learn a connector tool's argument and result shapes before publishing a page that uses it

Details 0 0 Feedback

What

A new block of guidance text instructs Claude on how to handle connector (MCP) tools when publishing something like a Claude Doc or Artifact page:

  • Take argument names for a loaded connector tool from the tool's own input schema, not from guesswork.
  • Only learn a tool's result shape by making a safe, real call to it, never by inferring it from a write call.
  • Use describeTool(server, tool) when the published page needs to read a tool's schema at view time, since the authoring session cannot see that information before publishing.
  • Disclose to the user, rather than embedding in the page itself, whenever a tool's shape had to be guessed.

Why

This reduces the chance of a published page calling a connector tool with wrong argument names or misinterpreting its results, since the model is directed to verify tool shapes safely instead of guessing.

·Internal
Under the hood
Useful1 Signal1
Group of 2 Models

Model resolution now distinguishes explicit vs. persisted spelling#

Model-resolution telemetry and helpers now separately track whether a model name was explicitly given or came from persisted settings

Details 0 0 Feedback

What

  • The startup_resolve_model telemetry event, which previously always logged family_spelling_unserved when a model name resolves to nothing despite a raw request existing, now logs persisted_spelling_unserved instead in that case.
  • Model-resolution helpers now pass an explicit explicit or persisted tag through a renamed function (XUt, previously sFt), and a companion helper checks whether a model is valid or comes from a persisted source.

Why Distinguishing whether an unresolved or unusual model name was typed explicitly versus loaded from persisted settings makes it possible to tell these two situations apart in telemetry and resolution logic, rather than lumping them together as one generic case.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Group of 2 Telemetry

Tool calls now report their duration#

Assistant messages for tool results now include how long the tool call took (toolDuration)

Details 0 0 Feedback

What After a tool call completes (including after PostToolUse hooks run), the resulting message now carries a toolDuration field with the tool's name and how long it took, in milliseconds. These per-call durations feed into a toolDurations array that gets aggregated elsewhere, such as in request payloads and session statistics.

Why This gives visibility into how long individual tool calls take, supporting reporting and aggregation of tool performance across a session.

·Internal
Under the hood
Useful1 Signal1
MCP

Connector-disable check now also consults a second source (e4)#

Whether claude.ai connectors are disabled is now checked against a second settings source too

Details 0 0 Feedback
disableClaudeAiConnectors
What

The check that decides whether claude.ai connectors (MCP integrations fetched from claude.ai) are disabled previously looked at only one settings source. It now also checks a second, new source, and connectors are treated as disabled if either source sets disableClaudeAiConnectors to true.

Why

This closes a gap where a disableClaudeAiConnectors setting from the second source would have been ignored, so the connector-disable policy is now enforced more consistently.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Telemetry

Per-tool CPU accounting now split by phase via a dedicated file#

Claude Code now tracks CPU usage per phase for individual shell tool calls

Details 0 0 Feedback
What

Claude Code has a new helper that computes a file path used to track CPU usage broken down by phase for shell tool calls, skipping session IDs that look like sub-paths or start with "cc-". This is used to log a tengu_tool_cpu_by_phase telemetry event, and it fails gracefully with a fallback message if the tracking file can't be created.

Why

This gives more detailed CPU usage data for shell commands, broken down by phase, which can help diagnose performance issues in specific stages of command execution.

·Internal
Under the hood
Useful1 Signal1
Artifacts unclear

New telemetry pair for artifact publish permission asks, caller not confirmed#

Claude Code now logs telemetry when it asks for, and receives, permission to publish an artifact

Unclear Whether this logging is enabled for any accounts is unknown, since both related gates are unread.

Details 0 0 Feedback
What

Claude Code now logs a tengu_artifact_ask event whenever it asks for permission to perform an artifact-publish-style action, and a tengu_artifact_ask_granted event when that permission is approved. The granted event also records how it was approved: by the user temporarily, by the user permanently, by a hook (an automated script that runs on certain events), by configuration, or by another method.

Why

This telemetry helps track how often artifact publishing requires explicit permission and how users typically respond, without changing what the user sees or has to do.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Artifact 'foreign document' detection now also checks for an outside writer#

Artifact database reads now also flag documents as foreign when an outside writer has touched them

Details 0 0 Feedback
What

When Claude Code reads an artifact's shared database, it checks whether the artifact is a "foreign" document, meaning someone other than your account wrote it. That check now also treats a document as foreign if your account is the owner but a new signal shows an "outside writer" has been involved, alongside the existing checks for documents co-written by others.

Why

This closes a gap where a document could look like it belongs entirely to you even though someone outside had written to it, so Claude Code can flag it appropriately.

·Internal
Under the hood
Useful1 Signal1
Background Tasks

Tool cancellation now reports which tools had already started running#

Cancelling a batch of tool calls now records which ones had already started running

Details 0 0 Feedback
What

When a batch of tool calls is cancelled partway through, Claude Code's internal accounting now also collects a list of startedToolUseIds, the IDs of tools that had actually begun running (whether they finished or were still in progress), alongside the existing counts of aborted, completed, and never-started tool calls.

Why

This gives Claude Code more precise bookkeeping about interrupted work, distinguishing tool calls that never got a chance to run from ones that were cut off mid-execution.

·Internal
Under the hood
Useful1 Signal1
Sessions unclear

Session startup computes a relay-admission flag from transcript persistence and shared backend#

Session startup now computes a relay-admission flag from transcript persistence and backend sharing

Unclear What effect being admitted to or excluded from the relay has on the session is not stated in the finding.

Details 0 0 Feedback
What

When a session starts, Claude Code now builds an admission object that records whether the teleport relay is configured, whether the session keeps a persistent transcript (a saved record of the conversation), and whether it uses a shared backend. This is passed into the session's transport setup alongside the existing worker-relay admission data.

Why

This lets the session's setup account for relay eligibility from the very start, based on how the session is configured to store and share its data, though the finding doesn't specify what using or not using the relay changes for the user.

·Internal
Under the hood
Useful1 Signal1
Models

Model-picker list building drops a 'flag'-sourced model-merge branch#

Model picker no longer merges in extra models just because the catalog source was 'flag'

Details 0 0 Feedback
What

The code that builds the list of models shown in the model picker used to pull in extra models whenever the active model catalog's source was specifically flag. That branch has been removed. Now the fallback, built-in model list is only added when there is no resolved catalog at all, regardless of what source the catalog came from.

Why

This narrows when Claude Code falls back to its built-in model list, tying it only to a missing catalog rather than to how the catalog was sourced.

·Internal
Under the hood
Useful1 Signal1
Artifacts unclear

Collection document reads now carry 'outside_writer' awareness#

Reading a collection document now also passes along whether its writer is outside your organization

Unclear It isn't clear what visible effect this has for the reader, beyond passing the extra flag internally.

Details 0 0 Feedback
What

When Claude Code reads a document that lives inside a collection, the internal code that formats ownership information now also passes along whether the document's writer is from outside the user's organization, in addition to the existing check for whether the document itself is "foreign."

Why

This is an internal formatting change; the finding doesn't show what, if anything, becomes visible to a user as a result.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Artifact comment tool description now points to Claude Doc's own connector tools#

Artifact comment tool now tells Claude to use a Claude Doc's own connector tools for leaving comments on it

Details 0 0 Feedback
What

The description Claude Code shows itself for the artifact-comments tool (used to add comments to an Artifact) now includes a new instruction: when the Artifact tool identifies a page as a Claude Doc, new comments should be left through that document's own connector tools instead, and Claude should search the available tools to find them.

Why

This routes commenting on Claude Docs through the document's native tooling rather than the generic artifact-comments mechanism, so comments end up in the right place for that document type.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Unverified-tool-call warning now checks argument schema, not just call history#

Warning about calling untested connector tools from an Artifact page now tells Claude to check the tool's argument schema too

Details 0 0 Feedback
What

When an Artifact page calls a connector tool that hasn't had a successful call observed during the current session, Claude Code shows a warning about that. The warning message now adds a new instruction: check the page's argument names against each tool's input schema, if the session has access to that tool, and treat the result fields the page reads as unverified unless a real, safe call can confirm them.

Why

This gives Claude a concrete way to partially verify an untested tool call, by checking argument names against the schema, rather than treating every unverified call the same way.

·Internal
Under the hood
Useful1 Signal1
Background Tasks

Task/agent liveness check gains new exclusions#

Claude Code's check for whether a running task counts as 'live' now excludes more cases, including certain in-process teammate tasks

Details 0 0 Feedback
What

Claude Code has an internal function that decides whether a running or pending task should still be treated as 'live' (active). It now also treats a task as not-live when a new condition is true, and specifically for tasks of type in_process_teammate where evictAfter is 0, there's no currentWorkAbortController, and another new condition holds.

The handling of the 'ambient'/monitor_ws case was also simplified to always report not-live, instead of delegating that decision elsewhere.

Why

This tightens up which tasks Claude Code considers still active, which affects things like whether a task shows as running or gets treated as finished/evicted.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Artifact publish telemetry now flags redeploys and base-version presence#

Artifact publish telemetry now records whether a publish was a redeploy and whether it had a base version

Details 0 0 Feedback
What

The artifact_publish telemetry event now includes two new fields: is_redeploy, indicating whether the publish was a redeploy of an existing artifact, and has_base_version, indicating whether a base version was present.

Why

This is internal telemetry that gives more detail about artifact publish events; it doesn't change publish behavior itself.

·Internal
Under the hood
Useful1 Signal1
Models unclear

firstParty catalog check no longer requires matching release#

Model-catalog readiness check no longer requires the release to match

Unclear The finding doesn't say why the release-matching requirement was removed or what effect this has in practice.

Details 0 0 Feedback
What

A check for whether the model catalog is from Anthropic itself ("first party") used to also require that the catalog's release matched a specific expected release. That release-matching requirement was removed, so now only the first-party flag is checked.

Why

This loosens the readiness check for the first-party model catalog, meaning it can now be considered ready without also matching a specific release, though the finding doesn't say what problem this fixes.

·Internal
Under the hood
Useful1 Signal1
Sessions

hostCarrier check special-cases webagent and claude-code-remote carriers#

Carrier eligibility check now special-cases webagent and claude-code-remote carriers

Details 0 0 Feedback
What

A function that checks whether a "carrier" (an internal identifier for how a session is running) is eligible now handles webagent and claude-code-remote carriers as a special case: for these two, it only returns true if the carrier matches exactly, before falling back to the general set-based check used for other carriers.

Why

This makes the eligibility check stricter and more precise for webagent and claude-code-remote sessions specifically, avoiding them being matched by the more permissive general logic.

·Internal
Under the hood
Useful1 Signal1
Telemetry unclear

New telemetry event names added/removed#

Several new internal telemetry event names added; the old model_catalog_flag_rows event removed

Unclear What specific behaviors these new telemetry events measure is not stated beyond their names.

Details 0 0 Feedback
What

The list of recognized telemetry event names gained several new entries: upgrade_relay_fork_direct, refusal_same_model_retry, rc_repl_fork_conversation, mcp_serve_file_call, and publish_settling. The model_catalog_flag_rows event was removed.

Why

These are internal telemetry changes with no direct user-facing effect, though the new names hint at tracking for things like relay-based upgrades, same-model refusal retries, REPL conversation forking, MCP file-serving calls, and publish settling.

·Internal
Under the hood
Useful1 Signal1
Models unclear

wpn model-resolution helper drops an early-return guard#

Standard default model resolution no longer short-circuits under a certain guard condition

Unclear What condition the removed guard checked for, and which users or scenarios it applied to, is not stated.

Details 0 0 Feedback
What

The internal function that determines the standard default model kind used to return early with no model (null) when a particular guard condition held. That early return has been removed, so the function now always falls through to the standard-model branch when there's no recognized organization default.

Why

This means a case that previously resulted in no standard model being selected will now fall through to picking the standard default model instead, when there's no recognized org-level default.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Artifact capability-declaration read-back and rendering#

Artifacts now read back their stored capability declaration and show it to the model after publishing

Details 0 0 Feedback
What

After an artifact is published, Claude Code now reads back its stored declaration — the contract and capabilities the artifact service holds for it — and inserts it into the prompt in a labeled block, worded like "Stored for the live version, as the artifact service holds it: contract ... capabilities ...". Capability names are sanitized and escaped before being shown to the model, so they're treated as plain data rather than instructions.

Why

This lets the model see exactly what capabilities and contract are actually recorded for the live version of an artifact, rather than relying on what it assumed it had set.

·Internal
Under the hood
Useful1 Signal1
Remote Control

Bridge session spawn: session-tag prefetch broadened to more triggers#

More conditions now trigger a session-tag prefetch before spawning a Remote Control bridge worker

Feature flag
tengu_bridge_rc_child_restart_resume Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.273: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.273. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
What

Before spawning a bridge worker for a Remote Control session, Claude Code decides whether to first fetch the session's tags. This decision now checks a wider set of conditions than before: whether spawning is enabled, whether a positive idle-exit timeout is configured (via tengu_bridge_rc_child_idle_exit_ms, and only when not in single-session spawn mode), whether restart-resume is enabled (via tengu_bridge_rc_child_restart_resume), or whether an auto-mode environment is configured. Previously this used a narrower, inline check.

Why

Broadening the check means the session-tag prefetch happens whenever any of these bridge features that depend on it are active, rather than only in the one case the old inline check covered.

·Internal
Under the hood
Useful1 Signal1
Remote Control

Dropped auto-mode-environment now records a reason when tags are missing/unread#

Dropping a bridge child's inherited auto-mode environment now records why, instead of a plain yes/no

Details 0 0 Feedback
What

When a bridge-spawned child session would normally inherit the user's configured Auto mode environment but isn't tagged as a project-thread child, Claude Code now records a specific reason for dropping it: session_tags_unread if fetching the session's tags itself failed, or session_untagged if the tags were fetched but the session simply wasn't tagged. This reason is passed along as dropAutoModeEnvironment to the child spawn call, replacing what used to be a plain true/false value.

Why

Recording the specific reason makes it possible to tell, when a bridge child unexpectedly doesn't inherit its auto-mode environment, whether that was because the tag lookup failed or because the session genuinely wasn't tagged.

·Internal
Under the hood
Useful1 Signal1
Bash Safety

Dangerous-rm check gains a pluggable extra-deny hook#

The dangerous-rm safety check for bash commands can now be extended with an extra custom check

Details 0 0 Feedback
What

The function that screens bash commands for dangerous rm/rmdir patterns (like recursive deletes) now accepts an extra callback function as a parameter. This callback runs early, and if it returns a denial, that denial is used immediately.

Why

This makes the dangerous-rm check pluggable, allowing additional deny rules to be layered in without changing the core check itself.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Remote Control

History-upload telemetry event name generalized for reuse beyond forking#

History-upload telemetry can now log under different event names, not just fork_conversation

Details 0 0 Feedback
What

The internal helper that uploads a session's transcript history to a remote session, and reports telemetry when events get dropped in the process, used to always log under the fixed name rc_fork_conversation. It now takes the event name and a caller-supplied label as parameters instead, so different callers can report under different names.

Why

This lets other features besides conversation forking reuse the same history-upload code while still getting accurate, correctly-labeled telemetry.

·Internal
Under the hood
Useful1 Signal1
Sessions unclear

relayAwaitsHandoff flag threaded through resume/fork startup and teleport-boot telemetry#

A new relayAwaitsHandoff signal is now tracked through session resume/fork startup

Unclear What relayAwaitsHandoff represents and what behavior change it produces beyond the telemetry annotation is not stated.

Details 0 0 Feedback
What

A new value called relayAwaitsHandoff is now passed into the configuration used when a session starts up during resume or fork, and it's used to annotate a teleport-boot telemetry event (recording when a "teleport boot" doesn't get reached) as well as a check for empty hydration (loading of prior session state).

Why

This gives Claude Code's telemetry and startup logic more precise information about when a session is waiting on a handoff during resume or fork, though the finding doesn't specify the exact effect for users.

·Internal
Under the hood
Useful1 Signal1
Artifacts no docs found

Artifact 'call_endpoint' action gets its own working-directory resolution via body_file#

The artifact tool's call_endpoint action now figures out its working directory from body_file instead of file_path

Details 0 0 Feedback
body_file
What

When the artifact tool runs a call_endpoint action, it now determines the working directory from a body_file field, rather than from file_path as other artifact actions do.

Why

This is a targeted fix so call_endpoint resolves its working directory from the field that's actually relevant to it, rather than one meant for other action types.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Elsewhere unclear

Policy-limits credential/principal check now threads a reason through polling#

Policy-limits re-checks now record why they were triggered, such as a credential change or the hourly poll

Unclear The finding doesn't confirm what the reason is used for beyond being passed through the polling calls.

Details 0 0 Feedback
What

The internal checks that re-fetch your account's policy limits now carry an explicit reason label through the process, for example credential_change (the default when credentials change) or hourly_poll (the default for the regular scheduled check).

Why

This is likely for internal logging or telemetry, to distinguish why a policy-limits re-check happened, rather than changing what happens for the reader directly.

·Internal
Under the hood
Useful1 Signal1
Artifacts

Artifact publish tracks whether copied source files survive a resume#

Publishing an artifact now records whether copied source files still match what was approved

Details 0 0 Feedback
What

When publishing an artifact, Claude Code's publish tool can include "copies" — files copied into the artifact from another source. On resuming a publish, it now compares a hash of each copy's path, slug, path, and version against what was originally approved. The result, a true/false value, is attached to the artifact_publish_resume telemetry event as copies_carried.

Why

This lets Anthropic detect when copied source files have changed or gone missing between when a publish was approved and when it actually resumes, which matters for keeping published artifacts consistent with what a user agreed to.

·Internal
Under the hood
Useful1 Signal1
Elsewhere unclear

Headless/SDK session init now threads a handoff relay marker#

Headless and SDK session setup now carries an internal handoff relay marker

Unclear What handoffRelay is used for, or what user-facing effect it has, isn't established by the evidence.

Details 0 0 Feedback
What

When Claude Code starts a headless session (used by the SDK or CLI harness), the internal options object built for it — which already includes things like thinkingConfig, jsonSchema, initialMessages, and agents — now also includes a handoffRelay field. It's only set when both an internal value and a matching internal flag are present; otherwise it's left unset.

Why

The finding doesn't say what consumes handoffRelay or what user-visible behavior it enables, so it's not clear yet what this changes in practice.

·Internal
Under the hood
Useful1 Signal1
Artifacts

New telemetry event for publish rejected due to an unrecognized/not-served file path#

A new telemetry event reports the specific file path when a publish is rejected for an unrecognized path

Details 0 0 Feedback
What

When publishing files fails because a file's path isn't recognized as served (an internal check returns notServedPath), Claude Code now fires a files_invalid telemetry event carrying the specific rejected path, in addition to throwing the existing error.

Why

This gives more detail for diagnosing publish failures caused by unrecognized file paths, since the exact path involved is now captured rather than just the fact that an error occurred.

·Internal
Under the hood
Useful1 Signal1
Inbox unclear

'Human sender' check generalized to any hearth_* prefix#

Internal 'is this a human sender' check now matches any sender kind starting with 'hearth'

Unclear What the 'hearth' prefix refers to or where such sender kinds come from is not stated.

Details 0 0 Feedback
What

An internal helper that decides whether a message sender counts as human previously matched only two exact sender-kind values. It now also treats any sender kind beginning with the prefix hearth as human.

Why

This broadens which sender types are recognized as human rather than automated, though the finding doesn't say what hearth-prefixed senders are.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal1
Sandbox unclear

New sandbox lane identity tracking (stashIdentity/takeIdentity) with no caller visible in this slice#

New sandbox internals track per-file identity for lanes, with no visible caller yet

Unclear No caller of stashIdentity/takeIdentity is visible, so what feature this supports is not established.

Details 0 0 Feedback
What

A sandbox file-lane class gains two new methods, stashIdentity and takeIdentity, which track a per-path device/inode identity using an LRU-style (least-recently-used) eviction cache. If the eviction-tracking set overflows, the lane enters a 'poisoned' state.

Why

No code calling these new methods is visible in this change, so it's unclear what feature this identity tracking supports yet.

·Internal
Under the hood
Useful1 Signal0
Group of 2 Remote Control

Auto mode's environment check is now a reusable helper#

The check for whether Auto mode has a configured environment is now a shared helper validated against a schema

Details 0 0 Feedback

What

The logic that decides whether an environment is configured for Auto mode has been pulled out of inline code that previously ran only at spawn time, and turned into reusable helper functions (je() and de()). The new helpers:

  • Read the user settings file, falling back to policy settings if needed.
  • Validate the result against a new autoModeConfigSchema.
  • Are used to populate the userAutoModeEnvironmentConfigured value only when the auto-mode environment array is non-empty and that value hasn't already been supplied.

Why

Making this a reusable, schema-validated helper means the auto-mode-environment check can be reused wherever it's needed, not just at spawn time, and is validated consistently.

·Internal
Under the hood
Useful1 Signal0
MCP

MCP server allow/deny-list computation refactored into named helpers#

Internal code for computing which MCP servers are allowed or blocked was reorganized into separate functions

Details 0 0 Feedback
What

The logic that determines which MCP servers (external tool integrations) are allowed or denied based on policy settings was split into three separate internal functions: one for computing allowed servers (respecting managed-hooks-only style policy), one for computing denied servers (deduplicated across managed settings sources), and one for combining all these inputs into a single hash.

Why

This is an internal refactor of how the allowedMcpServers allowlist setting, which controls which MCP servers users can add, is computed. It does not change the setting's behavior for users.

·Internal
Under the hood
Useful1 Signal0
Artifacts

Artifact/'publish' permission and result-building refactor#

Internal refactor of artifact-publish permission checks and result assembly, no visible behavior change

Details 0 0 Feedback
What

The code behind publishing artifacts was reworked internally in two areas: the read-permission checks that guard against reading from under a symlinked or redirected base path, and the assembly of deploy results (warnings, embedded content, manifest and live file paths, and lists of newly-live or reseeded files). The visible messages, such as 'root: reading from under ... is blocked by a Read permission rule' and 'plus N file(s) copied server side from ...', are unchanged.

Why

This appears to be a behind-the-scenes cleanup, largely variable renaming from code minification, rather than a change to how artifact publishing behaves or what you see.

·Internal
Under the hood
Useful1 Signal0
Remote Control

Remote bridge (repl v2) transport handling refactor#

Internal refactor of the remote bridge's transport handling, no behavior change apparent

Details 0 0 Feedback
What

The code handling the remote bridge's transport layer (connection, incoming data, closing, presence and history syncing, and owner-changed handling) was refactored with renamed internal variables. The core behaviors, such as flushing history and reporting bridge connection and presence telemetry, appear to be preserved.

Why

This looks like an internal cleanup of the remote bridge's transport code rather than a change you would notice while using it.

·Internal
Under the hood
Useful1 Signal0
Sandbox

AWS credential env var forwarding — no functional change found#

No functional change found in sandboxed AWS credential detection and masking

Details 0 0 Feedback
What

The sandbox's detection and masking of an implicit AWS credential pair (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) is still present with the same messaging; the underlying code appears to have only been renamed internally.

Why

This is an internal cleanup with no expected effect on how AWS credentials are handled inside the sandbox.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
REPL unclear

REPL two-step note lookup simplified, drops keptAsFiles logic#

The REPL's 'two-step' note lookup was simplified and no longer computes a keptAsFiles value

Unclear What the removed keptAsFiles value was used for, and whether anything downstream relied on it, isn't stated.

Details 0 0 Feedback
What

The internal function that provides 'two-step' notes for Claude Code's interactive session (REPL) was renamed and simplified. It now takes one fewer parameter and just returns the matching entry directly, instead of also computing and returning a keptAsFiles value alongside it.

Why

This is an internal simplification of how these notes are looked up; the removed keptAsFiles computation is no longer part of the result.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Artifacts

Frame-file listing response drops raw paths field#

Frame-file listing response for artifact consent checks no longer includes a raw paths field

Details 0 0 Feedback
What

An internal helper that lists frame or page files for artifact consent checks used to return both a paths array and a pages array (filtered markdown page paths). It now returns only pages. The failure branches for "no files consent" and "listing failed" also dropped the empty paths: [] field they used to include.

Why

This is an internal cleanup of the data returned by a consent-checking helper, removing a redundant field rather than changing what consent checks actually do.

·Internal
Under the hood
Useful1 Signal0
Settings unclear

apply_flag_settings control response strips an internal key#

apply_flag_settings control response handler now explicitly strips one internal key before returning settings

Unclear What the stripped internal key represents or why it needed excluding is not stated.

Details 0 0 Feedback
What

The handler that reads apply_flag_settings settings out of a control response was rewritten. It now explicitly pulls out one specific internal key and returns the rest, instead of the previous approach of rebuilding the settings object generically from setting/name pairs.

Why

This is an internal implementation change to how flag settings are extracted from a control response; the finding doesn't indicate a user-facing effect.

·Internal
Under the hood
Useful1 Signal0
Models

Catalog fetch-retry state now carries explicit disposition instead of a boolean#

Model-catalog fetch retry logic now uses named outcomes instead of a true/false flag

Details 0 0 Feedback
What

The internal function that decides what to do after fetching the model catalog fails or succeeds now takes one of three explicit outcomes — retry_soon, back_off, or clear — instead of a plain true/false value. It's used to handle error, ok, not-modified, and empty results from the catalog fetch.

Why

This is an internal refinement to how Claude Code schedules retries after a failed or unusual model-catalog fetch, replacing a simple flag with more descriptive states.

·Internal
Under the hood
Useful1 Signal0
Sessions unclear

Session storage: read-cache now also evicts an 'identities' map on invalidation#

Session storage's read cache now also clears a matching identities map when entries are invalidated

Unclear What the identities map is used for and what user-visible effect stale entries would have is not stated.

Details 0 0 Feedback
What

An internal caching component used for session storage now tracks an additional identities map. When cached entries are invalidated on the "read" path, matching keys are now also removed from this identities map, not just from the main cache.

Why

This keeps identity-related cache data from going stale alongside the rest of the invalidated cache, avoiding a case where stale identity data could linger after a read invalidation.

·Internal
Under the hood
Useful1 Signal0
File Tools

Notebook and PDF read tool result humanization changed function name only#

Internal rename of the byte-size formatter used when reporting PDF and notebook file reads, no behavior change

Details 0 0 Feedback
What

The internal functions that format the human-readable summary for PDF and notebook file reads (things like the file size shown after a read) were renamed. The output shown to users is unchanged.

Why

This is a code cleanup with no effect on what you see when reading a PDF or notebook file.

·Internal
Under the hood
Useful1 Signal0
Sessions

Session-resume: findUnresolvedToolUse now used directly instead of storageV5 field#

Session resume in print mode now finds unresolved tool calls directly instead of via a stored storageV5 field

Details 0 0 Feedback
What

When resuming a session in print mode, Claude Code now looks up any unresolved tool call (a tool invocation that never got a result recorded) by calling a dedicated findUnresolvedToolUse lookup directly, instead of reading it from a storageV5 field that was passed through.

Why

This is an internal implementation change to how session resume locates unfinished tool calls; it should not change what you experience when resuming a session.

·Internal
Under the hood
Useful1 Signal0
Elsewhere

CA cert entry gains a symlink target for the CCR agent proxy cert#

CCR agent proxy's CA certificate install now also creates a symlink at /etc/ssl/certs/ccr-agent-proxy.pem

Details 0 0 Feedback
What

The certificate-installation configuration for ccr-agent-proxy.crt now also specifies a symlink target at /etc/ssl/certs/ccr-agent-proxy.pem.

Why

This ensures the CCR agent proxy's certificate is also discoverable under the .pem name and path that some tools expect, alongside the original .crt file.

·Internal
Under the hood
Useful1 Signal0
Transcript

Transcript/progress message indexing rewritten as incremental classes#

Transcript indexing was rewritten to update incrementally instead of recomputing from scratch each time

Details 0 0 Feedback
What

The internal functions that build lookup maps from a conversation transcript — matching sibling tool uses, tool results, and hook progress counts — were rewritten. They used to be one-shot functions that recomputed everything from scratch each time; they're now stateful classes (an accumulator, an incremental builder, a tool-use-id tracker, and a transcript/progress splitter) that reuse prior work instead.

Why

This is an internal performance change: as a transcript grows, Claude Code no longer has to redo all of the previous indexing work every time it needs updated lookup data.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Bash Safety

cd-tracking helper simplified, dropping the 'capped directory set' telemetry path#

The working-directory tracker for cd/pushd/popd chains was simplified, dropping its telemetry-reporting branch

Details 0 0 Feedback
What

The internal helper that tracks the current working directory through a chain of cd, pushd, and popd commands (used to check permissions on subsequent commands) was simplified. It no longer takes an optional fourth parameter, and no longer reports whether it hit a "capped" directory-tracking limit or ended up in an "unresolved" state through a telemetry-adjacent callback. It now simply returns a deny result or nothing.

Why

This is an internal cleanup that removes a reporting path Claude Code no longer needs, without changing what a command chain that uses cd/pushd/popd is allowed or denied to do.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Artifacts unclear

file_path content-type check refactored to share the new unservable-file messaging#

The error message shown when a file_path points to an unservable file type now shares common wording

Unclear The finding doesn't say whether the actual wording shown to users changed, only that it now routes through a shared builder.

Details 0 0 Feedback
What

When you give an artifact tool a file_path whose content type isn't recognized or servable, the error message is now built from a shared message helper instead of its own separate text.

Why

This is an internal cleanup so the unservable-file error stays consistent wherever file_path is used, rather than drifting between separately maintained copies.

·Internal
Under the hood
Useful1 Signal0
Models unclear

Model-tier/entitlement attribution logic refactored#

Internal logic for choosing model-access tier and entitlement was simplified and renamed

Unclear The finding does not state whether this changes any observable behavior around model access or entitlement.

Details 0 0 Feedback
What

The internal functions that decide which model-access setting applies to a session had an explicit early-return check removed; that check and a related one are now folded into a single combined condition. Several related helper functions used for looking up enforcement, entitlement, and tier were also renamed internally.

Why

This appears to be an internal refactor of how model access and entitlement decisions are computed, without a stated change in what the outcome is for users.

·Internal
Under the hood
Useful1 Signal0
Elsewhere unclear

Tool-list composition restructured to append a separate tool group#

Tool list building now appends one tool group separately instead of merging it in

Unclear Which tool category is now appended separately, and why, isn't identified in the finding.

Details 0 0 Feedback
What

The internal lists that assemble the full set of available tools now build the main list first, then append one additional tool group onto the end, rather than merging all tool groups together in one step as before.

Why

This is an internal restructuring of how the tool list is composed; the finding doesn't indicate any resulting change in which tools are available or how they behave.

·Internal
Under the hood
Useful1 Signal0
Elsewhere unclear

Bundled release-notes text (in-app changelog viewer) present but unchanged content shown#

In-app changelog viewer's bundled release notes are present but show no confirmed content change

Unclear Whether the bundled release-notes content actually changed could not be confirmed from the evidence.

Details 0 0 Feedback
What

The function that supplies the embedded release notes text for the in-app "What's new" viewer exists in both the old and new builds, including an entry for version 2.1.270. No actual content difference could be confirmed from the diff.

Why

Nothing to report here for users; this reflects the changelog text bundled with the app rather than a functional change.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Remote Control

Internal refactor of rewind_conversation target validation in the remote/headless bridge#

rewind_conversation's target-validation logic pulled into a single shared helper

Details 0 0 Feedback
What

The code behind rewind_conversation (which lets a remote or headless connection jump the conversation back to an earlier message) has had its target-validation logic consolidated into one helper function. That helper now handles finding the target message, checking for stale or unseen targets, handling poll-tool-result targets, and checking delivered poll events within range, returning either a refusal or a description of what to cut. Other nearby code for re-homing the working directory over MCP and for handling messages/poll events was renamed but not otherwise changed.

Why

This further consolidates rewind's target-finding logic into a single, more maintainable helper, continuing earlier work to share this logic rather than adding new capability for users.

·Internal
Under the hood
Useful1 Signal0
Elsewhere

Named constant for the ! negation prefix in --tools flag parsing#

The ! negation prefix used in --tools rules is now a named constant

Details 0 0 Feedback
What

The --tools flag's parsing and validation logic, which resolves entries like !Bash into deny rules, now references a single named constant for the "!" negation prefix, used both in the parsing logic itself and in the warning/error messages about unmatched or malformed tool entries.

Why

This is an internal cleanup with no described change in how --tools behaves for users.

·Internal
Under the hood
Useful1 Signal0
Transcript

Transcript rendering internals reworked (progress tracking, lookups renamed)#

Internal rework of how the conversation transcript view computes progress and message lookups

Details 0 0 Feedback
What

The internal function that renders the conversation transcript view now computes its transcript and progress data via a separate split step, and merges a separately-computed progress object into what used to be called lookups (now renamed transcriptLookups).

Why

This is an internal restructuring of how transcript data is computed and named, with no described change to what appears on screen.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Permissions

Refactor of the 'ask' decision-reason lookup for sub-command permission results#

Internal refactor of how Claude Code picks which sub-command permission result to surface as an 'ask' prompt

Details 0 0 Feedback
What

When Claude Code checks permissions across several sub-commands and needs to decide which result is worth surfacing as an "ask" prompt, this logic was previously two separate passes (one excluding a certain reason, one including it). It's now a single reusable function that takes a boolean flag for whether to exclude that reason, and this function is now called from multiple places.

Why

This is an internal code cleanup consolidating duplicated logic; the finding describes no change in what prompts are shown to users.

·Internal
Under the hood
Useful1 Signal0
Remote Control unclear

Bridge REPL session-pull/teleport bookkeeping — heavy rename, no clear behavior change found#

Internal rename-only rewrite of bridge REPL session-pull and /teleport bookkeeping code

Unclear Whether this rewrite changes any actual behavior of /teleport or bridge session pulling isn't established by the evidence.

Details 0 0 Feedback
What

The internal function that manages Remote Control bridge REPL session state — including pulled rows, /teleport windows, bound-conversation tracking, and retrying after init failures — was rewritten, but the change appears to be mostly variable renaming rather than a change in logic. The same control flow, retry thresholds, and log messages are preserved.

Why

No behavior change is evident from this finding; it looks like internal code churn rather than something that affects /teleport usage.

·Internal
Under the hood
Useful1 Signal0
Artifacts

Internal renames only: artifact publish/type tool refactors#

No functional change: artifact publish/type tool code was just renamed by the minifier

Details 0 0 Feedback
What

Two large sections of the artifact publish/type tool were rewritten, but the changes appear to be variable renaming from the build's minifier rather than a behavior change. The same logic paths remain: resolving shim URLs, summarizing file diffs, handling capability/room grants, and validating contracts.

Why

Nothing for users to act on; this is a cosmetic code change with no identified effect on behavior.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Sandbox

Internal renames only: sandbox credential masking (cae) and reply-on-resume (Yme)#

No functional change: sandbox credential masking and reply-on-resume code was just renamed

Details 0 0 Feedback
What

The logic that masks credential files inside the sandbox, and the logic that handles resubmitting an initial prompt when a session resumes ('reply on resume'), both show large diffs. These are consistent with pure variable renaming from the minifier, with no new behavior found.

Why

Nothing for users to act on; this appears to be a cosmetic code change rather than a functional one.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

·Internal
Under the hood
Useful1 Signal0
Elsewhere

Version bump and build metadata#

Version bumped to 2.1.273 with updated build metadata

Details 0 0 Feedback
What

The VERSION, BUILD_TIME, and GIT_SHA constants were updated across all bundle entry points to reflect version 2.1.273.

Why

Routine release bookkeeping that marks this build's version and build provenance.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

1 entry

Removedopen

Removed
Under the hood
Useful2 Signal2
Models unclear

Model catalog 'flag rows' feature removed#

Model catalog's 'flag rows' feature removed, replaced by a new servedCatalogOffBeforeAsking field

Unclear What the flag-rows feature did for users and what servedCatalogOffBeforeAsking changes in practice are not stated.

Details 0 0 Feedback
What

The model catalog's "flag rows" mechanism has been removed entirely: the flagRowsAwaitTrust and flagAliasSpellings state fields and the model_catalog_flag_rows telemetry event are gone. In their place is a new servedCatalogOffBeforeAsking field.

Why

This reflects an internal change to how the model catalog handles trust and alias spellings before presenting model choices; it is not stated what user-visible effect, if any, this has.

Verbatim
Official · Anthropic

Anthropic’s official release notes

Published verbatim by Anthropic for v2.1.273. Text is unmodified from the upstream changelog. Everything else on this page came out of the bundle instead, which is why the two lists don't match.

Of these 64 bullets, 14 name something an entry on this page also names, 20 name something no entry here does, and 30 name nothing specific enough to line up either way. The pairings are made on names both sides wrote down, a flag or a setting or a slash command, so read one as probably the same thing rather than as a fact, and read the middle number as candidates rather than as a miss count.

  • Added x-claude-code-request-class, x-claude-code-agent-type, x-claude-code-prev-tool-durations, x-claude-code-compaction and x-claude-code-context-compacted request headers for LLM gateways; opt in with CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 Probably new-http-headers-report-tool-call-durations-and-compaction-s, new-per-request-headers-naming-the-callers-agent-type-and-r, new-gate-for-gateway-hint-headers-on-first-party-surfaces
  • Added a notification when an MCP server disconnects mid-session and automatic reconnection gives up, pointing at /mcp Probably metric-attribution-fields-agentskillpluginmcp-names-can, mcp-oauthauth-failure-messages-split-into-four-specific-cas, new-toast-when-mcp-server-reconnection-is-exhausted
  • Added forking a session started with claude --remote-control or /remote-control from the Claude app; the fork runs as a background session on your computer Probably bridgeremote-control-child-sessions-default-to-auto-grantin
  • Fixed Bash commands the permission checker cannot fully analyze skipping the prompt under permissions.blockReadsOutsideWorkingDirectories, and a subshell hiding a dangerous rm in bypass mode Probably bash-too-complex-command-handling-reworked-with-a-per-reas, background-memory-extraction-now-skips-when-reads-are-locked, bash-commands-too-complex-for-ast-analysis-now-get-blocked-o
  • Fixed skills synced from claude.ai staying available after your organization turns Skills off; they now move to the recoverable trash Nothing to match on
  • Fixed allowManagedMcpServersOnly, deniedMcpServers and disableClaudeAiConnectors set via MDM or managed-settings.json being ignored when server-managed settings are also present Probably enterprise-mcp-server-allowlist-policy-can-now-be-inherited, connector-disable-check-now-also-consults-a-second-source-e, chrome-flag-for-remote-control-now-blocked-by-enterprise-m, mcp-server-allowlist-can-now-be-sourced-from-admin-tiers-eve
  • Fixed 401/403 errors on Bedrock, Vertex and Foundry, and Claude apps gateway 403s, telling you to run /login; the message now names the credential to refresh or points to your gateway administrator Probably 401-responses-now-suggest-login, session-create-errors-get-a-dedicated-401-message-pointing-a
  • Fixed /login, /upgrade, and /extra-usage discarding earlier thinking from the conversation, which forced a full prompt-cache rewrite on the next request Probably 401-responses-now-suggest-login, session-create-errors-get-a-dedicated-401-message-pointing-a
  • Fixed auto mode stopping for approval when the Artifact tool uploads a file you attached to the chat in a cloud or Remote Control session Nothing to match on
  • Fixed a long-running session recreating a stub .git/info/exclude after the repository's .git directory was removed or moved away No entry names this
  • Fixed the main prompt dropping a ! typed at the start while already in shell mode, so negated commands like ! grep … can be typed No entry names this
  • Fixed Read on macOS refusing a dragged-in screenshot, or any file the system reports under a second path, with "symlink resolution changed after permission was checked" No entry names this
  • Fixed permissions.blockReadsOutsideWorkingDirectories: a memory directory chosen by a repository's settings is no longer loaded into the prompt, recalled, indexed, or used by memory extraction Probably bash-too-complex-command-handling-reworked-with-a-per-reas, background-memory-extraction-now-skips-when-reads-are-locked, bash-commands-too-complex-for-ast-analysis-now-get-blocked-o
  • Fixed sub-agents and background agents being reported as failed, with their result never delivered, when the final streamed reply omitted token usage or carried no model id Nothing to match on
  • Fixed the context meter and auto-compact counting advisor-tool turns at roughly twice their real context size, which made auto-compact fire at about half the real window Nothing to match on
  • Fixed /tui refusing to restart because of an agent-team teammate that had already finished its work and was no longer shown in the agents panel Probably tui-switch-refusal-message-drops-the-artifact-comment-monito
  • Fixed saved scheduled tasks running in the wrong session after .claude/scheduled_tasks.json was copied into another folder, such as a new worktree No entry names this
  • Fixed SDK and --output-format stream-json output dropping a subagent's remaining messages and final report after it is moved to the background mid-run (e.g. by CLAUDE_AUTO_BACKGROUND_TASKS) No entry names this
  • Fixed /install-github-app reporting a SAML single sign-on block as "admin permissions required" Probably github-app-install-now-detects-saml-sso-enforcement
  • Fixed Remote Control clients attached to a Claude Desktop, VS Code or JetBrains session being refused when they ask for the session's context window usage Nothing to match on
  • Fixed the spinner showing a doubled ellipsis ("……") on compaction status lines such as "Running PreCompact hooks…" No entry names this
  • Fixed a false-positive spinner tip suggesting the frontend-design plugin after reading or publishing Artifacts Nothing to match on
  • Reverted a 2.1.268 change that checked Read and Edit deny rules on Bash lines the permission checker can't analyze (eval, env -C); commands like time -p make build prompt again instead of being denied No entry names this
  • Improved responsiveness in long sessions: hook progress and sub-agent activity no longer re-process the whole conversation on every update Nothing to match on
  • Improved the Artifact tool's error when a publish includes a file type artifacts don't serve: Claude is told which types are served and what to do instead, and the terminal shows one plain line Nothing to match on
  • Improved the Artifact tool's page read to state the capabilities and database rules the artifact service holds for the page, for anyone who can publish to it Nothing to match on
  • Improved artifact database writes: an update can now remove a single field instead of rewriting the whole document Nothing to match on
  • Improved artifact publishing: a publish whose connection drops after reaching claude.ai is now re-sent safely instead of failing or creating a duplicate version Nothing to match on
  • Improved the cloud-session GitHub error for an IP allow list, a suspended app installation or SAML single sign-on to show the cause instead of a generic install hint Nothing to match on
  • Improved /autofix-pr: when gh pr view fails it now shows gh's own error (sign-in, SAML, rate limit) instead of a generic exit-code line Probably autofix-pr-better-gh-cli-failure-messages, gh-cli-failures-now-surface-real-stderr-in-autofix-pr-errors
  • Improved /autofix-pr to say why GitHub webhook delivery couldn't be set up for the PR (for example, no linked GitHub account) instead of a generic warning No entry names this
  • Improved /web-setup errors: a refused GitHub token now lists the likely reasons and the fix, and a connection failure names a configured proxy or TLS certificate problem No entry names this
  • Improved the in-session SSL certificate and proxy connection errors to name the error code and what to fix, such as NODE_EXTRA_CA_CERTS for an untrusted corporate CA Probably ssl-certificate-errors-now-include-a-docs-link-and-a-plainer
  • Improved the error when a cloud session can't be created because your Claude login expired or was revoked: it now tells you to run /login Probably 401-responses-now-suggest-login, session-create-errors-get-a-dedicated-401-message-pointing-a
  • Improved the error shown when an MCP server's sign-in expires mid-session to say how to re-authenticate (/mcp) Probably metric-attribution-fields-agentskillpluginmcp-names-can, mcp-oauthauth-failure-messages-split-into-four-specific-cas, new-toast-when-mcp-server-reconnection-is-exhausted
  • Changed auto mode on Bedrock, Vertex and Foundry to use the local classifier by default for now; set CLAUDE_CODE_AUTO_MODE_SERVER=1 to use the platform's server-side classifier No entry names this
  • Changed OTEL_LOG_TOOL_DETAILS=1 to also include real agent, skill, plugin and MCP server names on cost and token metrics No entry names this
  • Changed sign-in with a Claude account to also request access to your claude.ai plugins Nothing to match on
  • Changed /bug and /feedback reports to include only model-behavior params (model, system prompt, tools) from the last API request, omitting request metadata and CLAUDE_CODE_EXTRA_BODY fields No entry names this
  • [VSCode] Fixed "Report a problem" still appearing, and /bug / /feedback opening a report form, for organizations that have product feedback disabled No entry names this
  • [VSCode] Fixed a red "Claude Code process exited with code 4294967295" banner appearing after completed turns on Windows No entry names this
  • Windows: Improved the network-path permission check for UNC paths when a mapped network drive was added with --add-dir No entry names this
  • [Claude Code on the web] Fixed routines losing access to an organization connector, and still calling the old one, after an admin removed and re-added that connector Nothing to match on
  • [Claude Code on the web] Fixed creating a self-hosted environment from organization settings occasionally failing with a server error and leaving a half-created environment behind Nothing to match on
  • [Claude Code on the web] Changed the admin "Share cloud sessions" setting to live under Data and privacy instead of the Claude Code page, where Data and privacy admins can also manage it No entry names this
  • [Claude Code on the web] Added a "Discard unsaved changes?" confirmation before the New routine page or the Edit routine dialog throws away a routine name, prompt or edit you typed No entry names this
  • [Claude Code on the web] Removed the full-page desktop-app download screen that new users without a cloud environment saw on Mac and Windows; they now go straight to setup Nothing to match on
  • [Claude Code on the web] Improved the routine detail page: menu and rename in the breadcrumb, the on/off switch and Run now at the top, and run history beside the routine's settings Nothing to match on
  • [Claude Tag] Fixed Claude going silent minutes after reinstalling the app when an Enterprise Grid was disconnected but one of its workspaces stayed connected Nothing to match on
  • [Claude Tag] Fixed scheduled tasks set up in an organization-shared private Slack channel silently never posting; they now keep running in the thread they were created in Nothing to match on
  • [Claude Tag] Fixed replying in an older Slack thread while Claude is mid-task sometimes restarting it from scratch and losing work it had not pushed yet Nothing to match on
  • [Claude Tag] Fixed Claude occasionally dropping a message with an incorrect "couldn't find a Claude Code environment" notice right after your account token refreshed No entry names this
  • [Claude Tag] Fixed AWS connections refusing region-less endpoints such as Budgets, Savings Plans, WAF Classic and Import/Export; Global Accelerator requests now sign correctly Nothing to match on
  • [Claude Tag] Improved AWS connection failures: when a request can't be signed, such as a hostname with no region, Claude is told why and how to fix it instead of a bare error Nothing to match on
  • [Claude Tag] Fixed OAuth client-credentials and JWT-bearer connections failing with providers that return a lowercase token type; requests now send the standard Bearer scheme Nothing to match on
  • [Claude Tag] Fixed adding a channel manager being refused on Enterprise Grid shared channels, on channels where Claude hasn't been used yet, and on legacy private channels Nothing to match on
  • [Claude Tag] Changed Claude to start watching related public channels on its own, such as an incident channel a conversation depends on, instead of only when asked Nothing to match on
  • [Claude Tag] Fixed the admin Memory page not listing Slack channels Claude set up on its own even when they had saved memory; admins can now open, edit and delete that memory Nothing to match on
  • [Code Review] Fixed merging the base branch into a PR whose earlier review listed "Additional findings" triggering a full re-review; these pushes now get the lighter follow-up review No entry names this
  • [Code Review] Fixed a whole REVIEW.md being ignored because of an @-mention, a code span wrapped across lines, or a backticked HTML tag; only lines linking to changed files are withheld Nothing to match on
  • [Code Review] Improved suggested fixes to say what the fix must keep working when other code depends on the behavior being changed Nothing to match on
  • [Code Review] Improved review comments that point to a second affected location to state that location's issue in a full sentence instead of a cut-off stub Nothing to match on
  • [Code Review] Fixed /ultrareview --post so a retry after a GitHub error posts the findings comment exactly once instead of never or twice; the comment now names the reviewed commit No entry names this
  • [Code Review] Fixed empty or content-identical pushes being re-reviewed on GitHub repositories whose owner or name contains a capital letter; these pushes are now skipped Nothing to match on
System prompt

The appended system-reminder blocks moved: 1 line added, 1 line removed.

Claude Code, interactive mode

Documentation

What the docs did around this release

702 documentation changes were recorded within 24 hours either side of this release, nearest first. The closest 12 are below. They're here because they happened near this release in time. That's not a claim that this release caused the edit, or that the page documents anything in it.

Every time above is when this site's poller recorded the change, which is up to half an hour after the edit on an ordinary read and up to a day after it on a full sweep. Upstream's own edit time is used instead wherever a capture carries one. None of these do.

Switches

Every name in this release

The 43 literal strings found in the bundle, with the number of entries that name each one. Picking one searches for it. A name is here because this build's code mentions it, which is not the same as it working or being finished.

Slash commands

CLI flags

Environment variables

Settings and names in the code