Claude Code v2.1.259

210 entries read v2.1.258 → v2.1.259 Markdown Unofficial

Eighteen entries in this build sit behind flags or unfinished wiring. Plugin hooks can now be written as real JS modules, but they stay off unless CLAUDE_CODE_ENABLE_FUNCTION_HOOKS or a flag forces them on. Artifact pinning is built end to end, including a hidden CLAUDE_CODE_ARTIFACT_PIN override and relay-error handling, but it's gated off by default and unavailable in cloud sessions. A new --proactivity CLI flag can be typed already, though its value is discarded and a matching proactivityLevel setting is being plumbed through sessions with no UI or behavior yet. A "signed cache" verification system exists with an empty list of trusted signing roots, and a consent system for unattended tool serving is wired up but still waiting on its feature flag.

Of the 106 shipped changes, several open up new control over hooks, models, and permissions. The CLAUDE_CODE_ENABLE_FUNCTION_HOOKS environment variable can force on function hooks, and plugins can now hook into new session.start and prompt.context events, the latter capped at 32 contributed text blocks. Settings.json can now set a default model that takes precedence over ANTHROPIC_DEFAULT_MODEL, and a new --permission-prompts none flag makes headless or SDK sessions auto-deny anything needing approval instead of prompting. Organizations can push MCP servers directly to every user via managedMcpServers, locked from local removal, and headless SDK sessions gain a tool.register API for adding, removing, and checking the status of MCP servers. A new CLAUDE_CODE_SKILL_ATTRIBUTION variable attributes actions to a specific skill for telemetry and testing.

Among 29 fixes, permission and shutdown handling get several corrections. A skill or slash command's model override now checks compatibility with auto-mode before switching, rather than always applying. Resumed sessions correctly restore default, plan, dontAsk, and bubble permission modes instead of losing them, and killing a task that looked already finished but was secretly still running now actually stops its loop. Agents mid-shutdown can no longer launch workflows, send messages, or run shell commands during teardown. Separately, the allow_desktop_handoff policy and the built-in claude-api agent's Read, Grep, and Glob access have been removed, narrowing that agent to fetching from platform.claude.com only.

Reading as
Show only
Tier
Flag state
Names
Pick an entry · j / k steps through · rest on a row to peek
56 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
Useful5 Signal5
Artifacts Notable

Artifact pin/unpin — gated off by default#

Artifacts gain full pin and unpin actions, wired end to end but off by default behind a gate with an env override.

Feature flag
tengu_cobalt_plinth_holly 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
pinunpinpins_enabled

Artifacts gain full pin/unpin support, wired end-to-end but gated off by default behind a growthbook gate (overridable by an env var). The artifacts tool's action enum now includes pin and unpin alongside publish, list, read, and others, and the action list conditionally exposes these two verbs based on a new capability flag. The list/read schemas gain a pinned field and a pins_enabled flag.

Pinning an artifact you didn't create triggers an approval prompt; pinning your own session's artifact or unpinning is auto-allowed. The UI renders "pinned to the sidebar" / "unpinned" for these actions, and tool-use rendering now has a dedicated branch for action === "pin" or "unpin" that prints the resolved title and address. The tool description gains the line "(then pins it to the user's own sidebar - private, reversible)", and accounts lacking the capability see "(Pinning isn't available for this account: 'pin' and 'unpin' will not work.)" Cloud sessions refuse the action with "Pinning artifacts isn't available in this cloud session yet...", and pin state is tracked via new store fields including frozenArtifactPins.

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
Useful5 Signal5
Sessions Notable no docs found

New "teleport relay" path for streaming completions#

A teleport relay path can route streaming requests through a remote session's ingress endpoint, with fallbacks to the normal path.

Details 0 0 Feedback

A new "teleport relay" path can intercept outgoing streaming /v1/messages requests and, when a remote/CCR session is active, route them through a /teleport/conversations/.../completion endpoint on the session's ingress origin instead of the normal path. It tracks an arming state machine (inactive/active/reverted) and falls back to standard dispatch on model mismatches, changed tool fingerprints, non-SSE responses, HTTP errors, timeouts, or a 409 with a teleport_relay_refused discriminant, logging cli_teleport_relay_fallback and a telemetry event upgrade_teleport_cache with a reason such as context_reduced, tools_changed, relay_unreachable, relay_dispatch_timeout, relay_refused, relay_not_sse, or model_mismatch.

In dev
Nothing to try yet
Useful5 Signal5
CLI Notable no docs found

New --proactivity CLI flag (scaffolding only)#

A --proactivity flag is accepted and threaded through session creation, but its value is discarded before it has any effect.

Details 0 0 Feedback
proactivityLevel

A new --proactivity CLI flag has been added to the accepted-flags list, and a proactivityLevel field now flows through session creation, telemetry, and query dispatch. In this build the resolving function calls a stub that unconditionally returns undefined, so the flag's value is currently discarded before it has any 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
Useful5 Signal5
Plugin Hooks Notable

Plugin hooks as JS modules — gated off by default#

Plugins can load hooks from real JS modules with per-action permission checks, but the rollout gate defaults off.

Details 0 0 Feedback
CLAUDE_CODE_ENABLE_FUNCTION_HOOKStengu_plugin_hooks_modules--baredisableAllHooks

New machinery loads a plugin's hooks from actual JS modules (function hooks) rather than only declarative config, with permission checks for call_handler, run_script, and get_handlers actions. A loader logs hooks module of plugin "X" not loaded: ... with reasons such as --bare mode, disableAllHooks, or the rollout flag being off. The rollout is controlled by a growthbook gate, tengu_plugin_hooks_modules, that defaults to off, and can be forced on or off via the CLAUDE_CODE_ENABLE_FUNCTION_HOOKS env var, which takes priority over the gate.

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 Signal3
Group of 4 Permissions Notable

New --permission-prompts host|none CLI/SDK option for print sessions#

A new --permission-prompts option lets print sessions auto-deny anything that would prompt instead of asking the host.

Details 0 0 Feedback

In --print/headless mode, a new --permission-prompts <target> CLI option lets you choose who answers permission prompts: host (the default, using the SDK host or --permission-prompt-tool) or none. With none, the SDK does not consult the host; anything that would need a prompt is auto-denied locally, hostAnswersElicitations is disabled, and the SDK logs --permission-prompts none: permission prompts are answered with a local deny; the SDK host is not consulted. Other permission-mode behavior is unaffected. The Agent SDK / CLI query builder exposes the same choice as a permissionPrompts option ("host"/"none"), passed through as --permission-prompts to the CLI. The SDK-level none option is separately marked unsupported for cloud/remote sessions today, logging --permission-prompts none (turning permission prompts off is not supported for a cloud session yet; they reach the host over stdio).

When a tool requiring permission is hit under --permission-prompts=none (or any session with no approval surface), it is now auto-denied with an explicit message telling the model the action was not performed, not to retry, and that all further approval-requiring actions will be denied for the rest of the session.

+New
Use it now
Useful5 Signal3
Group of 3 Remote Tools Notable no docs found

New setting remoteTools.allowUnattendedServing#

A new settings key turns off unattended remote tool serving, at org or user level.

Details 0 0 Feedback
remoteTools.allowUnattendedServing

A new managed/user settings key remoteTools.allowUnattendedServing (settable in ~/.claude/settings.json at the org or user level) controls whether unattended remote-tool serving is allowed. When set to false, a cloud session in auto mode cannot run commands on the local computer without per-command approval; project/local/--settings values are ignored for this key. Invalid values fall back to allowUnattendedServing: !1 (false, i.e. no unattended serving), and the key is registered as non-restrictive in the settings policy list. The UI surfaces a specific explanation depending on whether it was turned off by the organization's settings ("Turned off by your organization's settings (remoteTools.allowUnattendedServing)") or the user's own settings.

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 Signal4
Plugin Hooks Notable no docs found

CLAUDE_CODE_ENABLE_FUNCTION_HOOKS env override#

A new environment variable can force plugin function hooks on or off, overriding the remote feature gate.

Details 0 0 Feedback
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS

A new CLAUDE_CODE_ENABLE_FUNCTION_HOOKS environment variable can force-override the function-hooks feature gate, taking precedence over the existing remote/experiment gate. A debug string documents this as "overridden by the CLAUDE_CODE_ENABLE_FUNCTION_HOOKS environment variable".

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 Signal4
Plugin Hooks Notable no docs found

New functionHooks event: prompt.context#

A new prompt.context hook event lets plugins add named context blocks to a prompt, capped at 32 blocks and 32000 characters.

Details 0 0 Feedback
prompt.contextinvalidatePromptContextinvalidateHookedPromptContext

A new hook event, prompt.context, joins prompt.section, ui.render, and tool.describe in the SDK/plugin hooks event registry. A hook can now contribute named context blocks to a prompt via {blocks: [{name, text}]}, subject to a validator that caps the count at 32 blocks, requires unique names, and enforces a combined 32000-character budget on top of what the engine itself adds. The event is fully wired through the event list, the site/core hook dispatch tables, and new cache-invalidation hooks invalidatePromptContext and invalidateHookedPromptContext.

+New
Use it now
Useful5 Signal4
Plugin Hooks Notable

New plugin/hook events 'prompt.context' and 'session.start'#

Two hook events arrive: session.start fires on terminal session start, and prompt.context is registered but has no emitter here.

Details 0 0 Feedback
session.startprompt.context

Two new hook/event kinds, prompt.context and session.start, are now recognized for host-plugin messaging validation and payload-shape mapping. session.start is wired up: the terminal REPL calls a new _raiseSessionStart() unconditionally during session start, sending {loaded, surface: "terminal", interactive: true}, with a corresponding event schema payload of {cwd}. prompt.context appears in the same validation and telemetry site tables alongside other prompt-family events, but no direct emitter was found in this slice. Both event kinds were also added to the telemetry site registry alongside existing tool/prompt/agent/turn sites.

Related

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

+New
Nothing to try yet
Useful5 Signal4
UI Elements no docs found

New Svg render element type for engine/dialog UI trees#

Dialog and engine UI trees can include an Svg element, and the validator now reports when an element isn't allowed on a surface.

Details 0 0 Feedback
Svg

Dialog and engine UI trees can now include an Svg element, validated with source, alt, width, height, and interactive props subject to size and length limits. The dialog-tree validator also gained a surface-restriction check that reports "<type> is not an element of the <surface> surface" when an element like Svg or Button doesn't belong on the current surface.

+New
Use it now
Useful4 Signal3
Group of 2 Environment Variables Notable no docs found

New CLAUDE_CODE_SESSION_ORIGIN env var passthrough#

A new CLAUDE_CODE_SESSION_ORIGIN environment variable is read and passed through to spawned subsessions.

Details 0 0 Feedback
CLAUDE_CODE_SESSION_ORIGIN

CLAUDE_CODE_SESSION_ORIGIN is now read and added to the allow-listed/passthrough environment variable sets used when spawning subsessions. In the same change, GIT_ALLOW_PROTOCOL was added to the git-environment-variable passthrough allowlist, and CCR_SESSION_PROFILE was added to separate internal environment-variable lists (one for eval/runner context, one for a startup-context safelist).

Related

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

+New
You'll notice
Useful4 Signal4
Plan Mode

ExitPlanMode gains a swarm plan-approval submission path#

Exiting plan mode inside a team context submits your plan to the team lead's inbox for approval instead of just switching modes.

Details 0 0 Feedback
ExitPlanMode

Exiting plan mode inside a swarm/team context can now submit the plan for approval instead of just switching modes: ExitPlanMode writes a plan_approval_request message to the team lead's inbox and returns an awaitingLeaderApproval state, showing "Your plan has been submitted to the team lead for approval."

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 Signal4
Remote Tools

MCP session resume can adopt served tool calls left in-flight by a prior worker#

Resuming an MCP session can adopt tool calls a previous worker left in flight instead of re-issuing the interrupted turn.

Details 0 0 Feedback

When an MCP session resumes, tool calls that a previous worker process had already dispatched but not yet resolved ("served calls") can now be adopted directly by the new process instead of re-issuing the interrupted turn. The model is told which calls' results were lost via an "orphaned-permission" meta-message, and adoption is logged as tengu_remote_tool_restart_adoption.

+New
You'll notice
Useful4 Signal4
Remote Tools Notable

Remote tool serving can be centrally killed by Anthropic#

Anthropic can centrally switch off remote tool serving, and messages explain that plugins and hooks aren't sent to cloud sessions while it's off.

Details 0 0 Feedback

Anthropic can now centrally disable remote tool serving via a global "emergency switch." New user-facing messages explain that while it's off, a computer's plugins and hooks are not sent to cloud sessions, and normal operation resumes once it's back on. Corresponding state changes mark serving as muted or stopped with reason 'muted' rather than idle.

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
Artifacts no docs found

Artifact-toolset tool-name substitution layer (data/comments/check)#

A substitution layer can rewrite legacy artifact tool actions into consolidated data, comments and check tools, adding a spelling notice to prompts.

Feature flag
tengu_cobalt_plinth_damson 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

A new indirection layer rewrites references to legacy tool actions, such as the artifact tool's action: "read_db"/"write_db", into new consolidated tool names covering data, comments, and check. When enabled, it also injects a "Tool spelling in this session" notice into prompts.

In dev
Nothing to try yet
Useful4 Signal4
Cloud Sessions

New proactivity cloud-session config field#

Cloud sessions now treat a proactivity key as a supported passthrough option alongside systemPrompt and thinking.

Details 0 0 Feedback
proactivity

A new proactivity key was added to the cloud session flag-mapping table, treated as a supported passthrough option alongside systemPrompt and thinking rather than being unsupported.

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
Prompt Context Notable

Prompt context blocks now pass through a resolver/invalidator pipeline before assembly#

User context is assembled into named blocks and passed through a resolver that can rewrite it; by default it passes through untouched.

Details 0 0 Feedback
setPromptContextResolverclaudeMd

User-context construction (claudeMd, userEmail, attachedProject, currentDate) is now assembled into a name/text array and passed through a pR.resolvePromptContext pipeline before being used in the prompt. By default this is a passthrough, but a resolver can be installed via setPromptContextResolver to rewrite the context. If the resolver rewrites claudeMd, instructionFiles is now conditionally cleared accordingly.

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
Sessions no docs found

proactivityLevel plumbed through session/task creation#

A proactivityLevel field now flows through session creation, agent launch, config parsing and telemetry, with no UI or semantics yet.

Details 0 0 Feedback
proactivityLevel

A new proactivityLevel field is now threaded through session/task creation, agent-launch options, config parsing, and telemetry, alongside permissionMode. This looks like plumbing for a configurable proactivity setting, though its UI and semantics aren't part of this change.

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 Signal3
Telemetry Notable no docs found

CLAUDE_CODE_SKILL_ATTRIBUTION test/override env var#

A new environment variable lets you inject per-content-hash skill and plugin attribution into command and skill telemetry.

Details 0 0 Feedback
CLAUDE_CODE_SKILL_ATTRIBUTIONCLAUDE_CODE_PLUGIN_ATTRIBUTION

A new CLAUDE_CODE_SKILL_ATTRIBUTION env var lets a caller inject per-content-hash skill and plugin attribution (skill_id, plugin_id) into telemetry, mirroring the existing CLAUDE_CODE_PLUGIN_ATTRIBUTION mechanism. It feeds a new CX() attribution helper used across command and skill telemetry events. Entries that aren't a JSON object are ignored.

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 Signal3
SDK

Headless SDK sessions expose a bindable $.tool.register API for MCP servers#

Headless SDK sessions expose a session object for MCP servers with addMcpServer, removeMcpServer, toast, status and refreshContext.

Details 0 0 Feedback
addMcpServerremoveMcpServerrefreshContext

Headless SDK sessions now expose a $.tool.register-style session object with addMcpServer, removeMcpServer, toast, status, and refreshContext hooks for MCP servers. In a headless session, calls to toast and status are logged rather than displayed, since there is no notification bar or status row to show them in.

+New
Use it now
Useful5 Signal3
MCP Notable

Managed settings can now supply MCP servers directly ("managed" as a first-class MCP source)#

Organizations can push HTTPS MCP servers straight from managed settings; they can't be removed locally and their URLs are masked.

Details 0 0 Feedback
managedMcpServers

Managed settings can now supply MCP servers directly via a new managedMcpServers key, read from policy settings and merged in alongside enterprise, local, project, and user MCP servers. This key only allows http/sse servers with https:// URLs (no stdio/command, no ${VAR} expansion) and is validated with checks for control/invisible characters; if it appears in any settings source other than managed settings, it is rejected and a warning is shown. Servers delivered this way cannot be removed locally, and their URLs/headers are masked in the UI as "(value set by your organization)".

A new "managed" scope joins enterprise/user/project/local throughout the settings and MCP system, with its own settings file, a "Managed settings (provided by your organization)" label, and an "MCP servers" label of "Managed MCPs." A helper (WJ) now treats "managed" the same as "enterprise" for the managed-policy gate governing MCP approval and server lookup. When running under Claude Desktop's third-party entrypoint or as a local agent, this new source is skipped entirely, and a warning explains that Claude Desktop supplies and locks the session's MCP servers itself. Managed gateway settings validation also now points admins at managedMcpServers instead of the previous "not supported yet" message when it sees mcpServers under managed settings.

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 Signal3
Environment Variables Notable no docs found

New CLAUDE_CODE_SKILL_ATTRIBUTION environment variable#

A new CLAUDE_CODE_SKILL_ATTRIBUTION variable lets entries declare a skill id alongside a plugin id for attribution.

Details 0 0 Feedback
CLAUDE_CODE_SKILL_ATTRIBUTIONCLAUDE_CODE_PLUGIN_ATTRIBUTION

A new CLAUDE_CODE_SKILL_ATTRIBUTION environment variable parallels the existing CLAUDE_CODE_PLUGIN_ATTRIBUTION mechanism. It lets entries declare a skill_id, matched against a skill_(staging_|local_)? id pattern, alongside pluginId for attribution purposes.

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 Signal3
Sandbox Notable no docs found

New per-command sandbox filesystem deny lists#

Shell execution accepts per-command sandboxDenyRead and sandboxDenyWrite path lists on top of the global sandbox config.

Details 0 0 Feedback
sandboxDenyReadsandboxDenyWrite

Shell execution now accepts explicit sandboxDenyRead and sandboxDenyWrite path lists that get merged into the sandbox's filesystem config for a single command, in addition to the existing global sandbox config.

Related

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

In dev
You'll notice
Useful3 Signal4
Cloud Sessions

'--cloud <session-id>' reattach picker referenced as upcoming#

Resume, continue and login inside a cloud session now point you at claude --cloud with a session id, and note a picker is not built yet.

Details 0 0 Feedback
claude --cloud

When resume, continue, or login is attempted inside a cloud session, the feedback now tells users to instead re-run with claude --cloud <session-id> to re-attach to another session, and notes that a picker UI for choosing a session is not yet built ("a picker is coming").

Improved
You'll notice
Useful3 Signal4
Remote Tools

Remote tool calls now survive session restarts with explicit status messaging#

Tool calls sent to remote hosts are tracked so a session restart can adopt them and explain whether the command actually ran.

Details 0 0 Feedback

A new tracking class records tool calls dispatched to remote hosts in in_flight_served_calls. On restart, it tries to adopt these in-flight calls and generates detailed status messages depending on whether the command definitely ran, was still pending approval, or its fate is unknown, including messaging that the session restarted while a command was under way.

Improved
You'll notice
Useful3 Signal4
Remote Tools Notable

Remote tool serving gets an emergency off switch#

When remote tool serving is muted by the emergency switch, served-call requests are answered empty with an explanatory reason.

Details 0 0 Feedback

MCP and device hooks now check e.isMuted?.() before answering a served-call request. When muted, the request is silently answered empty and logged as 'serving is switched off (emergency switch)', with a corresponding UI reason string explaining that remote tool serving was turned off by Anthropic via the emergency switch.

When this emergency switch is off, the client-facing message now says that any command a cloud session was running on the local machine was cancelled and Claude was told it may have partially run, rather than just stating that no new commands will run. A second, hooks-specific pair of messages mirrors this for plugins, confirming that hooks offered to cloud sessions are likewise suspended and resumed by the same remote emergency switch.

In dev
Nothing to try yet
Useful3 Signal4
Artifacts

Artifact 'pinned' support added, gated by frozenArtifactPins#

Artifacts and listings carry a pinned field with a pins_enabled flag, gated by frozenArtifactPins.

Details 0 0 Feedback
pinnedpins_enabledfrozenArtifactPins

Artifacts and artifact listings now support a pinned field, with list results carrying a pins_enabled flag. Create and publish responses now include messaging that reflects the current pin state.

In dev
Nothing to try yet
Useful3 Signal4
Artifacts

Artifact pinning gated behind new flag, with richer relay error handling#

Pin and unpin go through a relay path with clearer failure messages, and a gated helper decides whether pinning is offered at all.

Feature flag
tengu_cobalt_plinth_holly 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
list

Pin and unpin actions now go through a dedicated relay-aware path with new failure states: relay unavailable, relay error, ok-from-foreign-service, and credential refused. User-facing errors are clearer, telling the user to check with action "list" before retrying, and a gated helper now determines whether pinning is offered at all.

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 Signal4
Remote Control no docs found

CCR client can hold event uploads while no one is subscribed#

Event uploads can be held while a session has no subscribers, but the hold duration comes from a remote flag defaulting to zero.

Feature flag
tengu_ccr_no_subscriber_hold_ms 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.259: no gate table built for this version

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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
noSubscriberUploadHoldMstengu_ccr_no_subscriber_hold_mssetNoSubscriberUploadHoldMs

The CCRClient's durable and internal event uploaders can now hold event uploads when a session has no subscribers. A new noSubscriberUploadHoldMs setting, set via setNoSubscriberUploadHoldMs, works with a holdMaxItems: 50 cap on the internal-event uploader; releasing a hold logs telemetry event ccr_no_subscriber_hold with lane, reason, held_events, and held_ms. The hold duration comes from remote flag tengu_ccr_no_subscriber_hold_ms and defaults to 0 (also forced to 0 for outbound-only sessions), so the hold is inactive unless the server pushes a positive value.

In dev
Nothing to try yet
Useful3 Signal4
Cloud Sessions

Cloud device-hooks bridge gains a "muted" state#

The cloud device-hooks bridge gains a muted phase that unregisters from the cloud session and restores registration on unmute.

Details 0 0 Feedback
claude --cloudservingMute

The cloud device-hooks bridge used by claude --cloud now supports a distinct muted phase, separate from stopped, idle, and registered. A new servingMute method transitions the bridge into {kind:"stopped", reason:"muted"}, unregisters and releases the current registration with the cloud session, and logs a muted outcome; unmuting restores registration and clears the muted note.

The device-hooks client-register flow also recognizes muted as an outcome alongside registered, unregistered, dormant, and no_consent, routed through the same success-telemetry path, with a servingMuted flag threaded through to consumers. Plugin-forwarding feature status reporting now reports muted state as { state: "off", source: "stored", reason: "muted" }, distinct from declined, unreadable, or could_not_send.

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 Signal4
Cloud Sessions no docs found

New proactivityLevel parameter threaded into remote/teleport session creation#

Remote session creation events accept a proactivityLevel field alongside permissionMode, ultraplan, title and thinking.

Details 0 0 Feedback
proactivityLevel

Remote (teleport) session creation events now accept a proactivityLevel field, alongside permissionMode, ultraplan, title, and thinking, when building session creation events.

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 Signal4
Skills Notable no docs found

Skill-proposal tool gating tightened, still cloud/remote-only#

The skill-proposal tool now requires a remote environment and a specific entrypoint or env var, and can be vetoed per session.

Details 0 0 Feedback
CLAUDE_CODE_SKILL_PROPOSALSCLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE

The isEnabled gate for the skill-proposal tool (which proposes skills from recurring procedures for the user to review and save) is now stricter: it bails out for child sessions and nested Claude Code, requires CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE to be set, and only fires under the remote_cowork entrypoint or the CLAUDE_CODE_SKILL_PROPOSALS env var, with an additional per-session "skills sync vetoed" flag that can veto it.

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 Signal4
Plugin Hooks

prompt.context dispatch hook point#

Computed prompt context blocks are forwarded through a registered prompt.context handler when one exists, alongside a session-bound extension point.

Details 0 0 Feedback
prompt.contextsession.start

A new dispatch path forwards computed prompt.context blocks through a registered handler, via zc.hasModuleHandlers("prompt.context") and eS("prompt.context", ...), if one exists, falling back to the untouched blocks otherwise. Related definitions x0e = kj("session.start") and tst = () => rb.whenSessionBound(y0e) point to a session-bound extension point.

Related

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

·Internal
Under the hood
Useful3 Signal4
Remote Control no docs found

Bridge teardown can hold for pending uploads before closing transport#

Remote bridge teardown can hold briefly to flush pending uploads before closing the transport, with the hold time recorded.

Feature flag
tengu_ccr_no_subscriber_hold_ms 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.259: no gate table built for this version

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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
setNoSubscriberUploadHoldMs

Remote-bridge teardown (Remote Control/teleport) can now hold briefly before closing the transport, waiting for pending uploads and internal events to flush via a new settleUploadsBeforeHandoff hook and setNoSubscriberUploadHoldMs on the transport. The hold duration is configurable, and only applies when set to a positive value. A new hold_preflush_ms telemetry field records how long the hold took.

Related

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

·Internal
Under the hood
Useful3 Signal4
Tool Loading

Declared-tools filtering for always-loaded claude.ai MCP tools#

Always-loaded claude.ai MCP tools are held out of the declared tool set and loaded lazily until the tool-use decision settles.

Details 0 0 Feedback

A new code path filters out MCP tools flagged isMcp === true, alwaysLoad === true, and mcpInfo.scope === 'claudeai' from the initially declared tool set until the model's tool-use decision settles, wrapping the remainder in a lazy collection. This only fires when the caller hasn't already decided declared tools and at least one matching tool is present.

Related

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

·Internal
Under the hood
Useful3 Signal4
MCP no docs found

MCP connect: caching/rejecting the /v1/mcp_servers discover projection#

MCP connections can cache a discovery projection to skip a round trip, discarding and re-probing it if the server rejects it.

Details 0 0 Feedback
tengu_mcp_listing_prior_rejected

For claude.ai-proxy MCP connections, the client can now cache and adopt a "discover projection" from /v1/mcp_servers, skipping the server/discover round trip on connect. If the upstream later rejects a request built from that cached projection, the client discards it for that connector, re-probes server/discover on a fresh transport, and logs a tengu_mcp_listing_prior_rejected event.

Related

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

·Internal
Under the hood
Useful3 Signal4
SDK no docs found

hostOwnsModel flag added alongside hostOwnsPermissionMode#

An embedding host is now treated as authoritative for the active model as well as for permission mode.

Details 0 0 Feedback
hostOwnsModelhostOwnsPermissionMode

Two SDK/host integration points now pass hostOwnsModel: !0 alongside hostOwnsPermissionMode: !0, meaning the embedding host, not the CLI, is now treated as authoritative for the active model as well as for permission mode.

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 3 Artifacts

Artifact publish gains a pin option#

Publishing an artifact can now also pin it to your claude.ai sidebar, and the reply says whether the pin worked.

Details 0 0 Feedback
pin

The artifacts/files tool's publish action now accepts a pin boolean parameter; when true, publishing also pins the artifact to the user's claude.ai sidebar, where it shows up the next time the sidebar loads. On success the tool reply includes a note that it was pinned to the sidebar; if pinning fails, the publish itself still succeeds and the reply appends a note that the pin didn't go through. This is wired into the publish tool's response builder at two call sites, gated by the tool's Zod schema still exposing a pin literal in its action shape.

Whether the field is even offered to the model is controlled by a check ($Ot()) that returns false outright for remote/cloud sessions (unless Jd()), otherwise reads the CLAUDE_CODE_ARTIFACT_PIN env var or falls back to a gate.

+New
Use it now
Useful4 Signal2
Group of 2 Plugin SDK no docs found

plugin-types command now also emits claude-code.d.ts for built-in tool inputs#

A generated claude-code.d.ts now types built-in tool inputs, so TypeScript can narrow on checks like tool === Bash.

Details 0 0 Feedback
claude-code.d.tsToolCallInput

A new generator (BuiltinToolInputs) writes a claude-code.d.ts declaration file merging built-in tool input schemas into ToolCallInput, similar to the existing MCP tool-input declaration file. This lets TypeScript users narrow e.tool === "Bash" etc. to typed arguments for built-in tools, not just MCP tools. The built-in plugin-types local command now writes both claude-code.d.ts and claude-code-mcp.d.ts, whereas previously it only wrote the MCP tool inputs file.

Related

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

Improved
Use it now
Useful4 Signal2
Group of 2 SDK

SDK turn results now include user_message_uuids for consumed prompts#

SDK turn results now list every user message uuid consumed by the turn, up to 64, not just the first.

Details 0 0 Feedback
user_message_uuids

Assistant message/result frames (complete, partial-first-frame, and stream-event variants) and the result schema gain a new user_message_uuids array listing every user message uuid consumed by or merged into a turn, in order, capped at 64 entries, including uuids for prompts that were queued but not yet started during the turn. This lets SDK consumers bind a reply to any of the sends it answers, not just the first.

A new helper (Jc) tracks the up-to-64 recently-seen user message UUIDs and attaches them as user_message_uuid/user_message_uuids to result and error telemetry via sendEcho, errorVariantFields(), and related call sites, fully wired into the query loop's telemetry emission.

Related

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

+New
You'll notice
Useful4 Signal3
Git Integration

Gerrit change detection for PR-lifecycle announcements#

Gerrit remotes are now detected via Change-Id lookup, so PR-lifecycle announcements work there as they do for GitHub and GitLab.

Details 0 0 Feedback

Claude Code can now detect a Gerrit code-review remote by matching a googlesource.com URL pattern, extract the Change-Id from the last commit, and query the Gerrit REST API for the matching open change. When found, this powers the same 'started' PR-lifecycle announcement already used for GitHub and GitLab.

Related

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

+New
You'll notice
Useful4 Signal3
Plugin Hooks

Plugin hooks directories are now hot-reloaded#

A plugin's directory is now watched and its hooks module reloads automatically when files change, with a success/failure log line.

Details 0 0 Feedback

Claude Code now watches a plugin's root directory, ignoring node_modules and .git, and automatically reloads its hooks module when files change. Reloads are debounced, and a UI log line reports the success/failure counts of reloaded hooks.

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 Signal3
Group of 3 Code Review Notable

Cloud/bughunter poll timeout driven by remote config client_wait_minutes#

The cloud review poll timeout is no longer hardcoded at 30 minutes and now comes from remote config.

Feature flag
tengu_review_bughunter_config 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.259: no gate table built for this version

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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

The remote-config value client_wait_minutes is now read and clamped to a finite number between 30 and 55, falling back to 45 if it is unset, non-numeric, or out of range. This replaces the previously hardcoded 30-minute (1800000ms) timeout used by the remote/cloud-review task poller before it declares poll_timeout; the value is computed once (memoized) and reused everywhere the timeout is checked or reported, including the timeout error message. The same value is used to compute BUGHUNTER_RESULT_RELAY_MAX_SEC for the bughunter feature's result-relay wait time.

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 Signal4
Cloud Sessions

Cloud plugin admission gated by new session-mute state#

Cloud plugin admission checks a muted session state and stays disconnected while muted, reconnecting and flushing on unmute.

Details 0 0 Feedback

The cloud-plugins consent/admission flow now checks a muted session state before connecting. When muted, it emits a flag_off/muted admission event and stays disconnected instead of requesting consent; unmuting reconnects and flushes any pending messages.

In dev
Nothing to try yet
Useful2 Signal4
Remote Tools no docs found

Served-tools mute flag added (tengu_violin_mute)#

An internal flag controls whether the local tool server runs in a muted state, toggling serving mute on the sender.

Details 0 0 Feedback
tengu_violin_mute

A new internal flag, tengu_violin_mute, controls whether the local tool server is served in a muted state. Session/sender wiring uses an isServingMuted check to call servingMute(true/false) on the sender when the flag toggles.

Improved
Use it now
Useful3 Signal3
Plugin Hooks no docs found

Plugin UI hooks can now invalidate on prompt.context, not just prompt.section#

Plugins can now invalidate prompt.context specifically through ui.invalidate, alongside ui.render and prompt.section.

Details 0 0 Feedback
prompt.contextui.invalidate

The plugin SDK bridge's ui.invalidate call now also accepts "prompt.context" as an event to invalidate, alongside the existing "ui.render", "prompt.section", and "tool.describe", letting plugins force a refresh of that section specifically.

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 Signal3
Models Notable

Settings can now supply a default model, ahead of ANTHROPIC_DEFAULT_MODEL#

A model set in settings.json now takes precedence over the ANTHROPIC_DEFAULT_MODEL environment variable at startup.

Details 0 0 Feedback
ANTHROPIC_DEFAULT_MODELANTHROPIC_MODEL

Startup model resolution now checks for a settings-provided model before falling back to ANTHROPIC_DEFAULT_MODEL. The resolution order is now CLI flag, then ANTHROPIC_MODEL env var, then the model from settings, then ANTHROPIC_DEFAULT_MODEL, giving a settings.json-configured default precedence over the legacy env-var default.

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 Signal4
Signed Cache

'Signed cache' trust-root list is empty#

A signed-cache subsystem with write, remove and shadow-check paths exists, but its list of trusted signing roots is empty.

Details 0 0 Feedback

A signed-cache subsystem now exists, with its own logging prefix, an accepted-iat lock, a shadow check, and write/remove paths, computing a frozen list of trusted signing roots. In this build the literal roots array is empty (roots: []), so whatever verification it is meant to gate currently has nothing to verify against.

Improved
Use it now
Useful3 Signal2
MCP no docs found

claude mcp marketplace list now shows claude.ai-hosted marketplaces not yet added locally#

Marketplace listing now also shows claude.ai-hosted marketplaces you haven't added locally, plus browse-only ones.

Details 0 0 Feedback
claude mcp marketplace list

claude mcp marketplace list now also queries claude.ai and adds a "From claude.ai:" section listing marketplaces available there but not yet added locally (marked "— not added"), plus browse-only marketplaces (marked "browse on claude.ai"). This applies to both text and JSON output.

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
Plugins

Manage-marketplaces screen can now suggest marketplaces to add#

The manage-marketplaces screen now suggests marketplaces synced from claude.ai that you haven't added yet.

Details 0 0 Feedback

The manage-marketplaces screen now fetches a synced list of marketplaces from a claude.ai-linked plugin sync feature and shows ones not yet added alongside the user's installed marketplaces, letting them pick one to add directly. A 'browse-only' subset of these is tracked separately. Previously the screen only showed already-configured marketplaces.

Improved
Use it now
Useful3 Signal2
Plugin SDK no docs found

Plugin type declarations file now also documents the built-in hooks API#

Generated plugin declarations now include a claude-code.d.ts covering the plugin API and built-in tools.

Details 0 0 Feedback
claude-code.d.ts

Generated plugin TypeScript declarations now also emit a claude-code.d.ts file covering the plugin API and built-in tools, in addition to the previous MCP tool types. Guidance text for tsconfig setup has been updated to point at both declaration files.

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 Signal1
Plugins

claude plugin validate gains --json output#

claude plugin validate gains a --json flag for machine-readable validation results.

Details 0 0 Feedback
claude plugin validate--json

The claude plugin validate command gains a --json flag, emitting machine-readable validation results (with success/strict flags) instead of only human-readable text, using the same exit codes as normal output.

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
Plugins

Add-marketplace flow accepts a claude.ai listing directly#

Picking a suggested marketplace opens the add flow with its name and source already filled in.

Details 0 0 Feedback

Selecting one of the newly-suggested marketplaces in the manage-marketplaces list now routes into the add-marketplace flow with that listing's name and source pre-filled.

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.

2 entries

New Featuresopen

+New
You'll notice
Useful3 Signal3
Plugins

New claude.ai marketplaces sync path#

Marketplace listings are now synced from claude.ai into a local etag-keyed cache, with typed failure reasons.

Details 0 0 Feedback

A new sync routine pulls marketplace listings from claude.ai into a local cache keyed by etag. Failures are surfaced through a new MarketplacesSyncFailed error with typed reasons such as bucket_unresolved, root_refused, and denied, along with telemetry including a marketplaces_sync_starting event.

+New
You'll notice
Useful3 Signal2
Artifacts

Artifact database usage warnings when nearing capacity#

Artifact shared databases now warn when they are full or nearing capacity, suggesting you prune or aggregate documents.

Details 0 0 Feedback

A new helper builds usage warning messages for an artifact's shared database, alerting when it is full ("writes that create a document will fail until some are deleted") or over a threshold percentage full, advising to prune or aggregate existing documents rather than creating one document per item.

48 entries

Improvementsopen

Improved
You'll notice
Useful3 Signal3
MCP

Cached remote managed MCP servers withheld until session confirms them#

Cached org-managed MCP servers are withheld until the server reconfirms them this session, with a warning explaining the wait.

Details 0 0 Feedback
managedMcpServers

If managedMcpServers exist in a cached remote settings payload but haven't been reconfirmed by the current session's live payload, they are withheld from taking effect rather than applied immediately. A status-only warning is shown explaining that the organization's MCP servers are withheld until the server confirms them this session, and they connect automatically as soon as it does.

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 Signal3
Workflows

Workflow runs now watch for a 'runaway' condition and self-kill#

A workflow run now watches for a runaway event on its scope and kills itself when it sees one.

Details 0 0 Feedback

found() on a workflow run now subscribes to world events and calls this.kill("runaway") if a runaway event is seen for its scope, letting a run self-terminate when it detects it has gone runaway. The subscription is cleaned up on abort or completion.

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 Signal3
Context Window

Context-usage telemetry callback added#

Used and maximum token counts are now computed and pushed out as context usage whenever they change, feeding live usage indicators.

Details 0 0 Feedback
context_usage

A new helper computes used and max token counts from the current message history and model, and calls notifyMetadataChanged({ context_usage }) whenever the totals change. This feeds live context-window usage indicators, such as a status bar, rather than being purely internal bookkeeping.

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 Signal3
MCP no docs found

MCP tool-wait logic reworked with grace period and per-server state resolution#

MCP tool resolution now waits across connected servers with a grace window and reports per-server states like pending, needs-auth and failed.

Details 0 0 Feedback

MCP tool resolution has been reworked to walk connected servers and wait up to maxWaitMs before giving up, followed by an absentGraceMs grace window if the tool still isn't found. The resolver now exposes serverState and initialServerState values such as pending, needs-auth, failed, and disabled for telemetry and UX, replacing the previous simpler resolution logic.

Improved
You'll notice
Useful3 Signal3
Background Tasks

Background/local-shell task delivery can now append to the same assistant turn instead of always starting a new turn#

A finished background task's result can now be appended into the current assistant turn instead of always starting a new one.

Details 0 0 Feedback

When a background or local-shell task finishes, its result can now be appended as a tool_use into the current assistant turn if that turn already made a tool call, instead of always being inserted as a new synthetic turn. This distinction is tracked via a new telemetry dimension recording whether delivery was an append or a new_turn.

Improved
You'll notice
Useful3 Signal3
Compaction

Reactive compaction gains a last-resort "summarize everything" mode#

When compaction runs out of room it now summarizes the whole conversation, truncating the head and retrying, instead of failing.

Details 0 0 Feedback

When reactive compaction's normal ladder of progressively-preserving-fewer-groups runs out of room, it no longer fails outright with exhausted. It now falls back to summarizing the entire conversation, and if that request is still too long, truncates the head of the conversation and retries, up to a bound, before giving up.

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 Signal3
MCP

Orphaned MCP permission responses now carry richer resumption context#

Orphaned permission responses now carry sibling tool-use and resumption details so an interrupted multi-tool turn resumes faithfully.

Details 0 0 Feedback

When a permission control_response arrives for a tool_use with no live handler, such as after a reconnect, the queued orphaned-permission entry can now carry initFirst, resumesInterruptedTurn, and sibling tool-use information. This lets the main loop resume an interrupted multi-tool turn more faithfully instead of just replaying the single orphaned permission.

Improved
You'll notice
Useful3 Signal3
SDK

Early hydrate prefetch for SDK/remote-control resume sessions#

Starting with --sdk-url and --resume now warms session and history state in parallel with the rest of startup.

Details 0 0 Feedback
--resume

When starting with --sdk-url and --resume, the CLI can now kick off an early hydrate-reads prefetch (startEarlyHydrateReads) concurrently with the rest of startup, to warm session/history state ahead of the SDK connection coming up. The result is threaded through as earlyHydrateReads in the prepared-session config.

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 Signal3
Git Integration

Gerrit / glab support added to PR-tracking heuristics#

PR tracking now recognizes Gerrit remotes and classifies glab merge-request commands, feeding the existing announcements.

Details 0 0 Feedback

PR-tracking heuristics now recognize Gerrit remotes, detected via a googlesource.com host plus a Change-Id trailer, and query the Gerrit REST API for an open change. They also classify glab mr create, update, merge, note, close, and reopen commands, feeding the existing pr_started_announce telemetry with a new provider: "gerrit" branch.

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 Signal3
Sessions no docs found

Background-forked sessions now inherit proactivityLevel#

Backgrounding a session now carries the parent conversation's proactivity setting into the forked session.

Details 0 0 Feedback
proactivityLevel

The background-session-fork request builder now passes proactivityLevel into the fork call, wiring the parent conversation's proactivity setting through to a newly backgrounded session. This field was previously absent; the argument slot it now occupies held alwaysDenyRules in the prior build's order. The background-fork flow itself, triggered from the "Background this session?" confirmation dialog, is an existing feature, so this extends already-reachable functionality rather than adding a new gate.

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 Signal3
Permissions no docs found

Background sessions get a narrower permission snapshot#

Background sessions run with session allow-rules cleared and a narrower set of working directories, and always snapshot the system prompt.

Details 0 0 Feedback
CLAUDE_CODE_SESSION_KINDsystemPromptSnapshot

A new permission-context snapshot publisher zeroes out session allow-rules and restricts additional working directories to session-sourced ones specifically for background sessions, giving them a narrower permission footprint than foreground sessions. System prompt snapshotting is also now forced on whenever the session kind is bg (CLAUDE_CODE_SESSION_KIND=bg), in addition to being triggered by the existing explicit systemPromptSnapshot flag.

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 Artifacts no docs found

Artifact publish surfaces remaining publish quota#

Publishing an artifact now reports remaining quota and reset time once you are down to 20 or fewer publishes.

Details 0 0 Feedback
publishesRemainingpublishesResetAt

Publish responses now read an x-frame-push-remaining header (and the response date) and attach pushRemaining/pushResetAt to the publish result, along with a push_remaining_seen telemetry field. When the reported pushRemaining count is 20 or fewer, the tool result additionally includes publishesRemaining and publishesResetAt fields so the low-quota state is visible to the caller/model instead of being silently dropped.

Improved
You'll notice
Useful3 Signal2
Artifacts

Subagent-initiated artifact publishes can be adopted by the parent/session after the subagent finishes#

A subagent's pending artifact publish subscriptions are handed to the parent session when it finishes instead of being dropped.

Details 0 0 Feedback

When a subagent that initiated a live artifact publish finishes, its pending publish subscriptions are now adopted into the parent session context instead of being dropped, via a new queue of "pending subagent arms." The queue is capped, and evictions are reported through a new subagent_arm_evicted telemetry event.

Improved
You'll notice
Useful3 Signal2
Cloud Sessions

/status shows a distinct Cloud session ID#

/status now shows a separate Cloud session ID next to the local one when they differ.

Details 0 0 Feedback
/status

The /status panel now shows a separate 'Cloud session ID' label alongside the local Session ID whenever they differ, such as for teleported or remote sessions, instead of showing only a single session id field.

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
Sandbox

New sandbox refusal message for protected credential directories#

Claude now refuses with a clear message when the sandbox can't run a command while still protecting credential files.

Details 0 0 Feedback

A new refused.sandbox_custody message covers the case where a local sandbox cannot run a command while also protecting its credential files. Claude Code now refuses to run and explains the situation, instead of silently failing or running the command unprotected.

Improved
You'll notice
Useful3 Signal2
Plugins

Plugin marketplace management now surfaces claude.ai marketplaces#

Both the manage-marketplaces screen and the CLI list now show claude.ai marketplaces you haven't added, plus a browse-only section.

Details 0 0 Feedback

The 'Manage marketplaces' TUI screen and the CLI marketplace list output now show marketplaces available from claude.ai that haven't been added locally yet, alongside a browse-only section and the marketplaces already configured.

Improved
You'll notice
Useful3 Signal2
Artifacts

Daily artifact-publish quota surfaced in UI#

The publish confirmation now shows how many artifact publishes you have left today and when the quota resets.

Details 0 0 Feedback

The publish/update confirmation UI now shows how many artifact publishes remain for the day and when the quota resets, rendering a line like "No artifact publishes left today on your plan · resets ...". New helpers validate the remaining count and reset timestamp before showing this.

Improved
You'll notice
Useful3 Signal2
Artifacts no docs found

Subagent artifact live-watch handoff on agent completion#

When a subagent finishes, its artifact watch is re-armed for the launching session and reported as publish_adopted.

Details 0 0 Feedback

A subagent watching a published artifact can now surface a publish_adopted live-subscription state: when the subagent holds no watch on the artifact but the launching session will take over notifications once the subagent finishes, the handoff re-arms the subscription for the parent session and emits subagent_publish_adopted telemetry. This is wired to fire on subagent completion and is consumed by the artifact tool's status 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
Remote Tools

Parked-permission fallback can now serve adopted responses instead of always re-asking#

A parked permission that can't be resolved now checks for an already-served response before cancelling and re-asking.

Details 0 0 Feedback

When a parked tool-use permission can't be resolved from a persisted control_response, the code now first checks for served or adopted responses and uses one if found, instead of always canceling and re-asking. The outcome is logged as fallback_served_adopted or fallback_reask.

Improved
You'll notice
Useful2 Signal2
Sandbox

Served/remote-tool commands warn when running without the credential-file sandbox mask#

Remote-tool commands on a machine with no strict sandbox filesystem now warn once that credential files rely on permission rules alone.

Details 0 0 Feedback

When a served (remote-tools) command runs on a machine with no sandbox filesystem configuration, or with a relaxed sandbox policy, Claude Code now logs a one-time warning that credential files are protected only by permission rules, and suggests enabling strict sandbox filesystem isolation for the additional mask.

Improved
You'll notice
Useful2 Signal2
Artifacts no docs found

Artifact pinning availability surfaced to users#

Listing artifacts on an account with pinning disabled now notes that pin and unpin will not work.

Details 0 0 Feedback
pins_enabled

When listing artifacts for an account that has pinning disabled (pins_enabled === false), the tool result now appends a note that pin and unpin commands will not work for that account.

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
Elsewhere no docs found

Interactive shell allowlist shrunk, 'hush' added#

Many shells including fish, powershell and wsl lost special interactive handling, and hush was added to the list.

Details 0 0 Feedback

The interactive-shell allowlist used for special interactive handling dropped fish, csh, tcsh, rsh, busybox, toybox, cmd, powershell, pwsh, wsl, su, and runuser, and added hush, a busybox-style shell. Shells removed from the list no longer get the special interactive-safe treatment.

Improved
You'll notice
Useful2 Signal2
MCP

MCP 'not served' error now lists which tools the server does serve#

When a remote host doesn't serve a requested MCP tool, the error now lists which tools it does serve.

Details 0 0 Feedback

When a remote MCP tool call fails because the target host doesn't serve that tool, the error message now lists which tools the host does serve there, making it easier to redirect the call correctly.

Improved
You'll notice
Useful2 Signal2
MCP

mcp remove now blocks removing organization-managed servers#

claude mcp remove now refuses org-managed servers with an explicit message instead of reporting them as not found.

Details 0 0 Feedback
claude mcp removeclaude mcp get

Running claude mcp remove on a server with no configured local scope now checks whether it's actually provided by managed or enterprise settings; if so, it refuses with an explicit message saying the server cannot be removed locally, instead of just reporting it as not found. claude mcp get gained a matching message for the same case.

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
Background Tasks

New wake-up notice text distinguishing background task results delivered alongside real user messages#

A new notice tells Claude that a real user message arriving alongside a background result is genuine input to answer.

Details 0 0 Feedback

A new wake-up notice clarifies to the model that when a background task's result is delivered in the same turn as a genuine new message from the user, that user message is real input and should be responded to normally.

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
Models no docs found

Skill-invoked model overrides now respect auto-mode/fast-mode compatibility#

A model override declared by a skill or command is now ignored when the model isn't supported under the current auto or fast mode.

Feature flag
tengu_auto_mode_config 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.259: no gate table built for this version

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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
disableFastMode

When a slash-command or skill declares its own model override, Claude Code now checks whether that model is actually supported under the current auto-mode/fast-mode configuration before applying it. If the model isn't supported in auto mode, or if the auto-mode disableFastMode setting (from tengu_auto_mode_config) rules it out, Claude Code logs a warning and keeps the session's current model instead of switching. Previously the override was applied unconditionally whenever a skill or command specified one.

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
Workflows

New 'killed (runaway)' guidance surfaced to workflow rows#

Rows retracted by the per-scope cap now say killed (runaway) and point you at the rule that blew the row cap.

Details 0 0 Feedback

Rows retracted by the new per-scope cap now carry explanatory 'killed (runaway)' text pointing to inspecting retracted facts and fixing the rule that caused the run to exceed the per-run row cap.

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
Elsewhere

Auto-mode gate fallback notification on plan exit#

Exiting plan mode when auto mode is unavailable now tells you it is falling back to the default mode instead of doing it silently.

Details 0 0 Feedback

If the mode active before entering plan mode was auto but the auto-mode gate is currently disabled, exiting plan mode now shows an immediate notification that it's falling back to the default mode, instead of switching back to auto silently.

Improved
You'll notice
Useful1 Signal2
Models no docs found

Model catalog now honors dropped_model_ids and dropped_confidential_ids from config#

The model catalog now hides ids listed as dropped in remote config, and a flag can mask every id in a served catalog.

Details 0 0 Feedback
dropped_model_idsdropped_confidential_ids

The visible model catalog now excludes models listed in dropped_model_ids and dropped_confidential_ids from remote config, on top of previous exclusion logic. A new dropped_unidentified_rows flag can mark an entire served catalog as masking every id.

Improved
You'll notice
Useful1 Signal2
Policy Limits no docs found

Policy limits fail open on 404/unsolicited 304 with no cache#

A missing policy-limits response with no cache no longer counts as a failure; the session runs with no restrictions instead.

Feature flag
tengu_rustling_orbit 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
tengu_rustling_orbit

In the policy-limits fetch/cache loader, a 404 or an unsolicited 304 response with no local cache is no longer treated as a hard fetch failure. The client logs Policy limits: ${n.httpStatus} with no cache, no restrictions for this session (not persisted), applies an empty restriction object for that session, and records telemetry as route_missing_fail_open or unsolicited_304_fail_open. This fail-open path is gated by tengu_rustling_orbit, which defaults to off in the resolved gate table, so failing open is the default shipped behavior; turning the gate on remotely falls back to the old failure-closed path instead.

Improved
You'll notice
Useful2 Signal1
Permissions

Bash path-restriction checks now track cd/pushd/popd across compound commands#

Path deny rules now follow cd, pushd and popd across a compound command, denying reads when a directory target can't be resolved.

Details 0 0 Feedback

Bash path-restriction checks now follow directory changes across a compound command. A new walk tracks cd, chdir, pushd, and popd (including popping the pushd stack) through a command's statement list, so later commands in the same line are evaluated against deny rules relative to the resolved working directory. If a cd target can't be resolved, subsequent reads are denied rather than silently checked against the wrong directory.

Improved
You'll notice
Useful2 Signal1
Permissions

New deny-checked commands: grep/rg/diff/git/cp/mv and generic argument-path extraction#

Path deny rules now extract file arguments from more flag shapes and apply to grep, rg, diff, git, cp and mv.

Details 0 0 Feedback

Path-restriction deny rules now reach further into command arguments: file-like arguments are extracted from -e/-f/--file flags, key=value pairs, @file tokens, colon-separated tokens, and combined short flags, and denied if the resolved path matches a Read() deny rule. Separately, grep, egrep, fgrep, rg, diff, git, cp, and mv get this same path check, falling back to an 'ask' prompt when the path can't be resolved after a cd.

Improved
You'll notice
Useful2 Signal1
Git Integration

/install-github-app now recognizes non-GitHub remotes#

/install-github-app now checks the git remote first and explains itself on GitLab or Bitbucket instead of proceeding.

Details 0 0 Feedback
/install-github-app

Before launching the GitHub App install flow, /install-github-app now checks the repo's git remote provider. If the remote is GitLab or Bitbucket, it shows a specific explanation instead of proceeding; for GitLab, it also points to CI/CD docs.

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
Sandbox

git tool's allowed-subcommand shim gains git grep and worktree flag parsing#

The restricted git wrapper now parses -C and --work-tree flags and fully handles git grep.

Details 0 0 Feedback

The sandboxed git command allowlist now parses -C, --work-tree, and --work-tree= flags before the subcommand and resolves relative paths against that worktree. It also adds a full handler for git grep, alongside the existing expanded handling for git diff. This applies to everyone using the restricted git wrapper.

Improved
You'll notice
Useful2 Signal1
Artifacts no docs found

Live-subscription status gains a 'publish_adopted' state for handed-off agents#

An artifact watch inherited from a finished subagent now reports a publish_adopted state explaining the handoff.

Details 0 0 Feedback

When a background or sub-agent's artifact watch is inherited by the launching session because the agent finished normally, the live-subscription status now reports a dedicated publish_adopted state explaining the handoff, instead of leaving it unexplained.

Improved
You'll notice
Useful2 Signal1
Artifacts

Database write tool results now report usage#

Artifact database write results now include a usage field, echoed into the confirmation text shown to the model.

Details 0 0 Feedback

Successful artifact/database write and batch-write tool results now include a usage field from the server response alongside version info, and this usage is appended to the human-readable confirmation text shown to the model.

Improved
You'll notice
Useful2 Signal1
Elsewhere

grep tool supports -d/--directories flag and refined recursive detection#

The grep argument parser now recognizes -d and --directories and defaults the search path when a recursive flag is present.

Details 0 0 Feedback

The internal grep argument parser now recognizes -d/--directories alongside the existing recursive flags -r, -R, and --recursive, and defaults the search path to . when any of these flags are present.

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
Code Review

--timeout default for review command raised to 45 minutes#

The review wait timeout help text now states a 45-minute default, up from 30.

Details 0 0 Feedback
--timeout

The CLI help text for the review-wait timeout option now states a default of 45 minutes, up from 30.

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

SDK MCP server timeout changes on already-registered servers are ignored with a warning#

Re-sending initialize with a different timeout for a registered SDK MCP server now warns that the change is ignored.

Details 0 0 Feedback

If initialize is re-sent specifying a different timeout for an SDK MCP server that's already registered, Claude Code now logs a warning that the timeout change is ignored until the server is removed and re-added, rather than silently applying or dropping the new value.

Improved
You'll notice
Useful1 Signal1
Permissions

Command-safety analyzer now parses ANSI-C quoted strings ($'...')#

The command-safety analyzer now understands ANSI-C quoted strings instead of treating them as opaque dynamic content.

Details 0 0 Feedback

The bash command-safety analyzer that decides whether a command is safe to auto-run now understands ANSI-C quoted strings like $'...\n...' and unescapes them to their literal value, instead of treating them as opaque dynamic content.

Improved
You'll notice
Useful1 Signal1
Permissions

Bash safety guard adds sudo-prefix handling#

The shell safety checker now treats sudo like env when scanning for prefixed variable assignments, plus a few more git-reach checks.

Details 0 0 Feedback

The shell-command safety checker, which determines whether a bash command could reach git, now treats sudo the same as env when scanning for prefixed environment-variable assignments. It also adds checks for commands run via a variable or file descriptor and for git-naming text piped into other commands.

Improved
You'll notice
Useful1 Signal1
Cloud Sessions

Clearer error when uploading a partial git clone for a cloud session#

The partial-clone upload error no longer suggests starting the cloud session from the repository's GitHub source.

Details 0 0 Feedback

The error message shown when a repository can't be uploaded to a cloud session because it's a partial or sparse clone no longer suggests starting the cloud session from the repository's GitHub source instead; that workaround sentence was removed.

Improved
You'll notice
Useful1 Signal1
Elsewhere

Turn status simplified: 'streaming' states collapse into 'turn_running'#

Spinner status no longer separates requesting, responding, thinking and tool-input; they collapse into one running state.

Details 0 0 Feedback

The status computed for spinner/turn display no longer distinguishes 'requesting'/'responding'/'thinking'/'tool-input' as separate streaming vs tool-running states; these now collapse into a single 'turn_running' state. 'subagent_running' remains a distinct state for delegated work.

Improved
You'll notice
Useful1 Signal1
Permissions

Bash safety analysis flags cd/pushd into /dev or /proc#

Changing directory into a path under /dev or /proc is now flagged as unsafe and needs approval.

Details 0 0 Feedback

The bash-command risk analyzer that decides whether a command needs approval now flags cd and pushd invocations that target a path under /dev or /proc as unsafe, in addition to its existing checks.

Improved
You'll notice
Useful1 Signal1
Permissions

Bash safety analysis extended to more shell builtins (shopt, setopt, unsetopt, sort)#

The dynamic-option-argument safety heuristic now also covers shopt, setopt, unsetopt and sort.

Details 0 0 Feedback

The option-argument-taint heuristic for detecting dynamic/unsafe option arguments, previously applied only to set and rg, now also covers shopt, setopt, unsetopt, and sort.

Improved
You'll notice
Useful1 Signal0
Background Tasks

Background command status hint rewording#

The hint shown while a background command runs was reworded to simply warn against checking on it repeatedly.

Details 0 0 Feedback

The hint text shown when a background command is still running was reworded from warning against "repeated ... calls" with a placeholder metric to simply warning against "checking on it repeatedly." The underlying advice about foreground versus background waiting is unchanged.

26 entries

Bug Fixesopen

Fixed
You'll notice
Useful3 Signal2
Sessions

Rewind now distinguishes 'poll' tool_result targets from ordinary ones#

Rewinding onto an in-progress poll result is now refused with a specific reason instead of quietly corrupting state.

Details 0 0 Feedback

Rewind now checks whether its target message is a tool_result for a still-in-progress poll, and rejects the rewind with a specific reason for that case as well as for a target whose poll events have already landed later in the transcript. Previously these cases could silently corrupt state; now the rewind is refused outright.

Fixed
You'll notice
Useful2 Signal2
Subagents

Block new subagent spawns while an agent's stop is still completing#

Launching a subagent, skill fork or monitor is now refused while the invoking agent's stop is still completing.

Details 0 0 Feedback

Subagent, skill, and monitor launches now check a stopPendingAgentIds registry before starting. If the invoking agent's stop is still completing, launching a new subagent, skill fork, or background monitor is refused with an explicit error instead of racing the in-flight stop.

Fixed
You'll notice
Useful2 Signal2
Configuration

Config lock acquisition now retries with backoff instead of failing on ELOCKED#

Saving or deleting config now retries with backoff when the lock is held instead of failing outright.

Details 0 0 Feedback

Saving or deleting global and project config (saveGlobalConfig, saveCurrentProjectConfig, deleteProjectConfig, deleteCurrentProjectConfigFields) now retries lock acquisition with exponential backoff when the config lock is already held, instead of failing outright. Fallback writes skipped or suppressed due to lock contention are now tracked with distinct telemetry, including tengu_config_fallback_skipped_contention.

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 Signal2
Workflows

New guard: resuming a workflow whose run has ended but not exited is blocked#

Resuming a workflow is blocked while its run process is still exiting, so two copies can't run against the same journal.

Details 0 0 Feedback

Resuming a local_workflow is now blocked not only when it is still running, but also when it has ended while its run process has not yet exited. This avoids running two copies of the workflow's agents against the same journal, with the refusal message: "Resuming now would run two copies of its agents against the same journal."

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 Signal2
Subagents

Stopped agents can no longer launch workflows or send messages while their stop is still finishing#

A stopped agent can no longer launch workflows or send messages while its teardown is still in progress.

Details 0 0 Feedback

Both the workflow-spawning tool and the send-message tool now throw an error if the calling agent has been stopped and its stop is still completing, instead of letting the action proceed mid-teardown: "This agent has been stopped and its stop is still completing; it cannot launch workflows or act on existing runs."

Fixed
You'll notice
Useful2 Signal2
Permissions

Additional CLI permission modes surfaced when replaying session state#

Replayed sessions now round-trip the default, plan, dontAsk and bubble permission modes, not just the three previously handled.

Details 0 0 Feedback
--permission-mode

The helper that reconstructs a --permission-mode CLI flag for a resumed or replayed session now recognizes default, plan, dontAsk, and bubble, in addition to the previously supported bypassPermissions, acceptEdits, and auto. Sessions using these modes now round-trip correctly when replayed.

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 Signal2
Background Tasks

Killing an already-ended task now re-signals its still-live loop#

Killing a task that shows as ended but whose loop is still live now aborts it for real instead of doing nothing.

Details 0 0 Feedback

Stopping a task whose record already shows it ended, but whose execution loop hasn't actually exited, now re-signals the loop: it aborts the loop's abort controllers and kills its process groups, and returns a note explaining that the record stayed listed because the loop was still live. Previously this case was a silent no-op.

Fixed
You'll notice
Useful2 Signal2
Skills no docs found

Skills tool now enforces a description length cap#

The skill-proposal description field now has a hard length cap, with guidance to stay under 200 characters.

Details 0 0 Feedback
propose_skills

The propose_skills tool's description field now enforces a hard maximum length, rejecting overly long descriptions with an explicit error message. Guidance for the field now asks for descriptions under 200 characters and never exceeding 1024, where previously no limit existed.

Fixed
You'll notice
Useful2 Signal2
Elsewhere

Remote settings 304 mismatch now surfaces as an error#

A 304 response to a non-conditional remote settings request now raises an explicit error instead of quietly using the cache.

Details 0 0 Feedback

If the server responds with HTTP 304 Not Modified to a request that was not conditional (no cached ETag was sent), this now surfaces as an explicit error, "Unexpected 304 Not Modified", with skipRetry set, instead of silently falling back to cached remote settings.

Fixed
You'll notice
Useful2 Signal2
Policy Limits no docs found

Policy-limits endpoint 404 gets an explicit error#

A 404 from the policy-limits endpoint now explains that your proxy must forward that path, instead of failing silently.

Details 0 0 Feedback
/api/claude_code/policy_limits

If the org policy-limits check returns a 404, for example when going through a proxy or gateway, Claude Code now shows an explicit error explaining that the proxy must forward /api/claude_code/policy_limits rather than failing silently.

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 Signal2
Subagents

New guards prevent resuming an agent whose stop hasn't finished#

Resuming an agent is now blocked while either the caller's or the target's stop is still finishing.

Details 0 0 Feedback

resumeAgentBackground now guards against resuming an agent whose stop is still in progress. If the agent attempting the resume has itself been stopped and that stop hasn't finished, the resume throws immediately. Separately, if the target agent's previous run was stopped but hasn't fully exited yet, the resume is blocked with a message telling the user to re-run the stop tool or wait for it to exit. This closes a race where an agent could be resumed, or could resume others, mid-teardown.

Fixed
You'll notice
Useful2 Signal2
Elsewhere

Shell exec refuses commands for agents with a pending kill-loop settlement#

Shell commands are refused while the owning agent has a kill still settling, rather than being run anyway.

Details 0 0 Feedback

Before spawning a shell command, Claude Code now checks whether the owning agent has a kill pending loop settlement in progress, and refuses to run the command if so instead of executing it.

Fixed
You'll notice
Useful2 Signal2
Compaction

Partial compaction now preserves thinking-stripped markers across the summary boundary#

Partial compaction now marks stripped thinking content across the summary boundary so the state carries over correctly.

Details 0 0 Feedback

When partial compaction starts from a point in the transcript where earlier assistant thinking content had already been stripped, the compaction logic now inserts a synthetic thinking_stripped attachment marker so the summary boundary correctly reflects that stripped state. The set of thinking-stripped responses is also passed into the summarization call.

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 Signal2
Permissions

Command-name normalization now checks a known-binary allowlist before stripping version suffixes#

Command-name normalization only strips a trailing version number when the result is a known binary, so names like python3 stay intact.

Details 0 0 Feedback

The helper that normalizes command/process names for detection, used in bash-safety and permission logic, used to unconditionally strip trailing version digits (e.g. python3python). It now only strips the suffix if the resulting stripped name is in a known-binary allowlist, otherwise it keeps the original name intact.

Fixed
You'll notice
Useful1 Signal2
Policy Limits

Policy-limits fetch now distinguishes conditional vs unconditional 304 responses#

An unexpected 304 to an unconditional policy-limits request is now a hard failure, and the 404 fast path was removed.

Details 0 0 Feedback

An unconditional (non-etag) request to the policy-limits endpoint that unexpectedly receives a 304 Not Modified response is now treated as a hard failure instead of being accepted as valid cached data. The 404 'no restrictions found' fast path has also been removed from this handler.

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 no docs found

Managed plugin ordering conflict warning#

A managed plugin listed in both prepend and append lists now warns about the conflict and is prepended.

Details 0 0 Feedback
prependPluginsappendPlugins

When a managed plugin is listed in both prependPlugins and appendPlugins, Claude Code now warns about the conflict and prepends the plugin instead of silently picking one placement.

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
Elsewhere

Windows registry proxy reads now guard against oversized values#

Windows proxy registry reads now check value size and explain when a value is too large instead of failing quietly.

Details 0 0 Feedback

Reading Windows proxy settings from HKLM/HKCU via reg query now checks the value size before reading. Oversized values surface an hklmUnreadReason explaining that the value exceeded a size cap, given in MiB, instead of failing silently or hanging.

Fixed
You'll notice
Useful2 Signal1
Skills

Skill model-var substitution now limited to .md files#

Model-variable substitution in skill files now applies only to .md files; other files pass through untouched.

Details 0 0 Feedback

The skill-files templating helper now only performs model-variable substitution on files ending in .md; other skill files pass through unmodified.

Fixed
You'll notice
Useful2 Signal1
Sessions

Rewind reports 'unseen later turn' vs 'stale target'#

A refused rewind now distinguishes an unseen later turn from a stale target when explaining why.

Details 0 0 Feedback

When a rewind targets a message but a later, unobserved turn exists past it, the CLI now picks between two more specific rejection reasons: an "unseen later turn" case and a separate "stale target" case, depending on whether the target message itself is still known.

Fixed
You'll notice
Useful1 Signal1
Subagents

send_message gets the same stop-pending guard#

Sending a message to an agent that has been stopped but hasn't settled is now refused with a dedicated error.

Details 0 0 Feedback
send_message

Sending a message to another agent via send_message now checks whether that agent has been stopped but hasn't finished settling. If so, the send is refused with a dedicated error instead of proceeding against an agent mid-stop.

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
Code Review

Cloud review timeout messages now show actual wait duration#

Cloud review timeout messages now report the actual wait duration instead of always saying 30 minutes.

Details 0 0 Feedback

Cloud and ultrareview session timeout messages ("cloud session exceeded ...") now report the actual configured wait duration via a minutes parameter, instead of always saying "30 minutes". If no duration is available, the message falls back to "its wait".

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
MCP

MCP retry loops for tools/list and generic retry helper stop early on abort#

Cancelled MCP retries now stop during the backoff window instead of continuing through it.

Details 0 0 Feedback

The generic backoff-retry helper and the tools/list retry loop now check for cancellation both before throwing and again after the backoff delay, so a cancelled operation stops retrying instead of continuing through its backoff window.

Fixed
You'll notice
Useful1 Signal1
Workflows

Task eviction now double-checks local-workflow tasks aren't still local agents#

Idle eviction no longer drops a workflow task whose agent is still live locally.

Details 0 0 Feedback

Idle-task eviction for local_workflow tasks now also requires that the task is not still a live local agent, in addition to having passed its evictAfter timestamp. This prevents evicting a task whose agent is still considered local/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
Subagents

Companion message for still-stopping target agent#

Resuming an agent that is still stopping now tells you to re-run the stop or wait for it to exit.

Details 0 0 Feedback

When the agent targeted for resume is still stopping and hasn't reached a terminal status, the resume attempt is refused with guidance to re-run the stop command or wait for it to exit, rather than racing the in-flight stop.

4 entries

In Developmentopen

In dev
Nothing to try yet
Useful3 Signal3
Group of 2 Artifacts

Artifact listing gains a pins option#

Artifact listing takes a pins option, active only when the server reports starsEnabled, and reports pinsEnabled back.

Details 0 0 Feedback
pinsstarsEnabledpinsEnabled

Zun()'s artifact listing now accepts a pins option. When true and the server response indicates starsEnabled === true, starred rows are marked pinned: true in the listing, and the result reports pinsEnabled.

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
Artifacts no docs found

Artifact schema now advertises a 'pin' capability flag#

The artifact schema computes whether pinning is enabled and appends a pin clause to the tool description when it is.

Details 0 0 Feedback
frozenArtifactPins

The artifact tool's input schema construction now computes whether pinning is enabled, stores the result on ue().frozenArtifactPins, and logs it. When active, a pin-related description clause is appended to the schema.

In dev
Nothing to try yet
Useful2 Signal3
MCP no docs found

New mcp discovery projection prior gate#

A new gate resolves MCP discovery projection to legacy-only, all or off, and defaults to off.

Feature flag
tengu_mcp_discover_projection_prior 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.259: no gate table built for this version

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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
tengu_mcp_discover_projection_prior

A new gated function resolves tengu_mcp_discover_projection_prior to one of "legacy_only", "all", or "off", defaulting to "off" for any other value.

In dev
Nothing to try yet
Useful1 Signal2
Elsewhere no docs found

New tengu_hidden_frog gate#

A new internal boolean gate was added and defaults to false, with no stated purpose.

Feature flag
tengu_hidden_frog 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
tengu_hidden_frog

A new gated boolean check, tengu_hidden_frog, was added, defaulting to false.

Related

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

56 entries

Internal Changesopen

·Internal
Under the hood
Useful3 Signal3
Tool Loading

Dynamic tool loading can seed deferred-tool references from a previous process#

A new process can reconstruct which deferred tools an earlier process already surfaced, so they don't need re-announcing.

Details 0 0 Feedback

When starting a new process, the harness can now reconstruct which deferred/lazy-loaded tools a previous process had already surfaced, using deferred_tools_delta attachments, and seeds references to them in the new process so those tools don't need to be re-announced. This is logged as Dynamic tool loading: seeded N tool reference(s).

Related

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

·Internal
Under the hood
Useful3 Signal3
Workflows

Workflow facts gain a status lifecycle and reserved-key protection#

Workflow facts now carry a five-state lifecycle and reject keys that collide with reserved internal ones.

Details 0 0 Feedback

Workflow world facts now carry one of five statuses as part of their lifecycle. A new schema also rejects any fact whose keys collide with reserved keys, preventing accidental overwrites of internal state.

Related

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

·Internal
Under the hood
Useful3 Signal3
Plugins

Plugin marketplace served-catalog sync from claude.ai#

An organization's marketplace list is fetched from claude.ai, validated, deduped and cached to disk for plugin discovery.

Details 0 0 Feedback

New code fetches an organization's marketplace list from claude.ai via /api/oauth/organizations/:orgUUID/marketplaces, validates and dedupes the entries, and caches them to disk with an etag and parserVersion. This exposes both available marketplaces and browse-only, claude.ai-hosted marketplaces for plugin discovery and sync.

·Internal
Under the hood
Useful3 Signal3
Permissions

Glob/Grep tools gain an auto-classifier fast path for permission checks#

Glob and Grep now feed a structured pattern and path into permission auto-classification and report that they suppress rule updates.

Details 0 0 Feedback

The Glob and Grep tools' auto-classifier input can now return a structured object with pattern, path, and a computed field instead of a bare pattern string, feeding permission-rule auto-classification. Both tools also now report suppressesAllPermissionUpdates, affecting how their calls interact with permission rule updates.

·Internal
Under the hood
Useful3 Signal3
Tool Loading no docs found

New deferred_tools_record attachment tracks full tool schemas across turns#

A new attachment records full deferred tool schemas and name-only announcements, diffed so only changes are re-emitted.

Details 0 0 Feedback

A new deferred_tools_record attachment type now also records full tool input schemas (toolEntries) and name-only announcements (nameOnlyAnnouncements) alongside the existing per-turn deferred tool descriptions. These are diffed turn-over-turn so only new or changed entries are re-emitted.

Related

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

·Internal
Under the hood
Useful3 Signal3
Permissions

Permission-prompt-tool routing gets a bypass for an explicit "none" sentinel#

A permission-prompt tool named none now routes through an ask-based fallback resolver instead of the MCP prompt tool.

Details 0 0 Feedback

canUseTool construction now checks whether the permission-prompt-tool server name is the literal sentinel "none". When it is, or when no MCP prompt tool was configured, requests can go through an ask-based fallback path that resolves ask behaviors via a new resolver before falling through to normal permission-denied handling.

·Internal
Under the hood
Useful3 Signal3
Workflows no docs found

Per-scope row cap added to the agent-orchestration "world" engine#

The workflow fact engine now caps rows per scope, emitting a runaway event and retracting the scope when it is exceeded.

Details 0 0 Feedback
maxRows

The internal fact/rule engine backing agent() / parallel() / pipeline() workflows now tracks how many rows accumulate under each scope. If a scope exceeds a per-scope cap, it emits a 'runaway' event and automatically retracts that scope, rather than relying solely on the existing global maxRows cap.

Related

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

·Internal
Under the hood
Useful3 Signal3
Remote Control no docs found

New event-uploader 'no subscriber' upload holding mechanism#

Event uploads can be held for a configurable period while nobody is watching the session, then flushed with a log.

Details 0 0 Feedback
noSubscriberUploadHoldMs

The CCR (client-side reporting) client can now hold back durable/internal event uploads for a configurable duration, via noSubscriberUploadHoldMs, when no subscriber is watching the session, instead of uploading immediately. Held events are flushed later, with a log of how long and how many events were held.

·Internal
Under the hood
Useful3 Signal3
Tool Loading

Dynamic tool loading: deferred MCP tools re-seeded from prior worker's transcript#

Deferred MCP tools announced by a previous worker are re-seeded from the transcript during query preparation.

Details 0 0 Feedback
defer_loading

New machinery re-seeds tool references for MCP tools that a prior worker process had already announced with defer_loading: true, by scanning transcript attachments of type deferred_tools_delta. It logs Dynamic tool loading: seeded ${n} tool reference(s) to ${k} deferred tool(s) the previous process sent and is wired into the query-preparation path, guarded by Oe.readsTranscriptRecord.

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
Artifacts

Artifact auto-react edit can be rejudged/withdrawn by auto mode#

Auto mode can now veto an artifact edit late in the pipeline even after it was judged eligible.

Details 0 0 Feedback

The artifact-editability check used by the comment auto-reply/auto-edit pipeline now accepts an extra flag that, when set, marks an edit as not editable even after it was already judged eligible. This rejudgment logs a new edit_rejudged_by_auto_mode telemetry breadcrumb, letting auto mode veto an edit late in the pipeline.

·Internal
Under the hood
Useful2 Signal3
Git Integration

New cache slot for GitHub web connection status#

A new cache for GitHub web connection status is now cleared alongside the existing session caches.

Details 0 0 Feedback

Session state cache invalidation now also clears a new githubWebConnectionStatusCache alongside existing caches like autoCompactWindowsCache, indicating a new cached lookup for GitHub web connection status.

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
Artifacts no docs found

Org-level artifact pin preference synced after a successful direct pin#

After a successful direct pin, the client marks your organization as having used pinning in account settings.

Details 0 0 Feedback
artifact_pins_by_org

After a successful direct (non-relay) pin, the client now fetches /api/oauth/account/settings and PATCHes artifact_pins_by_org to mark the organization as having used pinning, with the stored org list capped in size.

·Internal
Under the hood
Useful2 Signal3
Remote Tools no docs found

Device hook serving can now be muted#

The device-hooks serving session accepts a muted parameter that is forwarded into the hook servicer config.

Details 0 0 Feedback
isMuted

The device-hooks-serve session constructor now accepts a new isMuted parameter, which is forwarded into the hook servicer config when provided.

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
MCP

managedMcpServers added to managed-settings merge semantics#

Managed-settings merge semantics now cover org-supplied MCP servers, with the higher-priority source winning name collisions.

Details 0 0 Feedback
managedMcpServers

The managedSettingsSourcePolicy 'merge' mode now explicitly covers managedMcpServers: server names union across sources, but if two sources define the same server name, the higher-priority source's whole entry wins.

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
Git Integration

PR/change announcements can carry a branch name for Gerrit#

Change announcements can carry a branch name for providers like Gerrit whose changes have no head branch.

Details 0 0 Feedback

The session-activity announcement schema gains an optional branch field, populated only for providers whose changes lack their own head branch, currently Gerrit, so a host can place the change on the right checkout.

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
MCP

MCP client-capabilities header gains a discover-protocol-version companion header#

claude.ai MCP calls now send a discover-protocol-version header whenever the discovery mode isn't off.

Details 0 0 Feedback

Outgoing headers for claude.ai MCP calls now also include an anthropic-mcp-discover-protocol-version header, added when the mode value is not "off". The existing client-capabilities header is now skipped only when both a renamed check and mode === "off" fail, whereas previously it was skipped whenever a single check failed.

·Internal
Under the hood
Useful2 Signal3
Telemetry

Prompt snapshot tool replay comparison telemetry#

Prompt-snapshot replay now compares recorded tool schemas and reports mismatches as telemetry.

Details 0 0 Feedback

A new function compares recorded input_schema for tools during prompt-snapshot replay and emits strict_mismatch, schema_differs, or success telemetry under the prompt_snapshot_tool_replay event.

·Internal
Under the hood
Useful2 Signal3
Remote Tools no docs found

remoteExecution.supported enabled on Grep and Search tools#

Grep and Search now declare remote execution support, so those calls can be routed to a remote host.

Details 0 0 Feedback
remoteExecution

The Grep tool and a Search tool now declare remoteExecution: { supported: !0 }, joining other tools that already had this. This feeds into the dispatcher logic that, combined with a separate remote-capability check, decides whether a tool call is routed to a remote host instead of run locally.

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
Remote Control no docs found

Two new CCR (remote-control) heartbeat/upload tuning gates#

Remote-control worker connections gained tuning gates for an upload hold delay and for skipping redundant heartbeats.

Feature flag
tengu_ccr_no_subscriber_hold_ms 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.259: no gate table built for this version

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_ccr_skip_redundant_heartbeat 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
tengu_ccr_no_subscriber_hold_ms

The remote-control (CCR) worker connection gained two new tuning gates: a hold delay, tengu_ccr_no_subscriber_hold_ms, before dropping uploads when there's no subscriber, and a switch to skip sending redundant heartbeats.

·Internal
Under the hood
Useful2 Signal3
MCP

MCP cold-start now waits for a second, unverified-cache confirmation stage#

MCP cold start now waits for remote managed-settings confirmation when org MCP servers are withheld from the cache.

Details 0 0 Feedback
managedMcpServers

MCP cold start now has an added wait stage for a case where managedMcpServers is withheld from the unverified cache: it logs a wait on remote managed-settings confirmation and awaits the settled-fetch promise before falling back to the older managed-settings-load check. A parallel code path gained the same fallback.

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
Permissions no docs found

New destructive-MCP auto-mode gate added alongside the existing one#

Destructive MCP calls under remote auto mode can now be allowed by either the existing gate or a new flag.

Feature flag
tengu_modular_mochi 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.259: 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.

tengu_remote_auto_mode_include_destructive_mcp 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback
tengu_modular_mochi

Whether destructive MCP tool calls are allowed under remote auto mode is now decided by either of two checks: the existing gate, or a new one controlled by the tengu_modular_mochi flag.

·Internal
Under the hood
Useful2 Signal3
Updater

Reverify flow now distinguishes 'manifest authenticated' from 'signature verified'#

Binary reverification now reports manifest authentication and signature verification as separate results.

Details 0 0 Feedback

The retained-binary reverification flow now tracks manifestAuthenticated and signatureVerified as separate fields returned from the verify call, rather than conflating both under a single signatureVerified field as 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
Remote Tools

Remote MCP tool calls gain send/addressed callbacks#

Remote MCP tool dispatch gained callbacks for when a call is first sent and when a recipient acknowledges it.

Details 0 0 Feedback

The remote MCP tool-call dispatcher now accepts optional onFirstSend and onAddressed callbacks, fired when a tool call is sent over the transport and when a recipient acknowledges it.

·Internal
Under the hood
Useful2 Signal3
SDK

Headless/SDK session loop tracks command lifecycle and attachment notifications#

The headless session loop now handles command lifecycle events and records attachments in its telemetry.

Details 0 0 Feedback

The headless/SDK session loop now handles a command_lifecycle event, calling noteCommandStarted when a command starts, and records attachment events via noteAttachment. Result and error telemetry payloads are enriched accordingly.

·Internal
Under the hood
Useful2 Signal3
Skills

Skills sync detects skill attribution moves between plugins#

Skills sync detects when a skill's attribution moves between plugins and re-syncs its metadata even with no file changes.

Details 0 0 Feedback

Skills sync now compares old and new skill rows by backingPluginId to detect when a skill's attribution moved between plugins, persisting and re-syncing metadata when that happens even if no files changed.

·Internal
Under the hood
Useful2 Signal2
Group of 2 Elsewhere no docs found

Turn-attribution metadata added to background/notification message sends#

Task notifications can now say which conversational turn they belong to via a turn-attribution option.

Details 0 0 Feedback
turnAttribution

Internal message-send call sites (task notifications, hook stop messages, WebSocket housekeeping messages) now pass a turnAttribution value of "inherit" or "none", and a new helper resolves turnAttributionKey for task-notification mode. The task-notification enqueue path also gained a second options argument carrying turnAttribution, with the ultrareview-failed notification explicitly passing { turnAttribution: "inherit" }. This is internal bookkeeping to track which conversational turn a background message belongs to.

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
Git Integration

glab (GitLab CLI) actions now recognized for PR-lifecycle telemetry#

PR-lifecycle telemetry now recognizes glab merge-request commands alongside gh and git.

Details 0 0 Feedback

PR-lifecycle telemetry now recognizes glab (the GitLab CLI) alongside gh and git. glab mr create, update, merge, note, close, and reopen map to pr_create, pr_edit, pr_merge, pr_comment, pr_close, and pr_reopen respectively.

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

History retention prune rewritten to a two-pass, integrity-verified streaming scan#

History pruning now scans lock-free and verifies the file hasn't changed, deferring the prune instead of erroring if it has.

Feature flag
tengu_hipaa_history_retention_prune 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.259: 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.259. It isn't a statement about your account. What a flag value here can and cannot tell you

Details 0 0 Feedback

Pruning of history.jsonl under retention rules now runs a lock-free scan first, verifying the file's identity (inode/birthtime) hasn't changed, and only takes the retention lock and rewrites the file if there's actually something to prune. If the file changes underneath the scan, pruning is deferred rather than erroring, logged as History retention prune deferred: history.jsonl changed under the scan.

·Internal
Under the hood
Useful2 Signal2
Telemetry no docs found

Plugin attribution parsing now shares a size-capped, case-normalizing JSON parser#

Plugin attribution parsing now goes through a size-capped JSON helper that logs exactly why a value was ignored.

Details 0 0 Feedback
CLAUDE_CODE_PLUGIN_ATTRIBUTION

Parsing of CLAUDE_CODE_PLUGIN_ATTRIBUTION now goes through a shared helper that enforces a byte-size cap and validates that the value is a JSON object. Invalid input is now logged with specific messages ("Ignoring ... larger than the size cap", "not valid JSON", "not a JSON object") instead of failing silently.

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
Workflows

Workflow journal writer now detaches permanently on a failed append instead of silently continuing#

A failed workflow journal write now detaches the writer permanently instead of retrying every append.

Details 0 0 Feedback

If a write to a workflow's journal fails, the journal writer now marks itself permanently detached for that run instead of logging a warning and retrying on each subsequent append. Later rows are kept in memory only rather than being repeatedly re-attempted against a failing journal.

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
Skills

Skills sync resync now backs off and detects long sleeps#

The skills resync loop now backs off exponentially and skips an immediate resync after the process was asleep.

Details 0 0 Feedback

The background skills-sync resync loop now uses exponential backoff capped at 2400000ms. It also detects when the process was asleep for longer than half the max backoff, in which case it skips an immediate resync and logs skills_sync_resync_skipped_after_sleep instead.

·Internal
Under the hood
Useful2 Signal2
Git Integration

Git operation telemetry extended to GitLab merge requests#

Creating a GitLab merge request now counts toward the same PR-created telemetry as a pull request.

Details 0 0 Feedback

The git-command telemetry and PR-tracking logic, which already detects gh pr create and pushes, now also matches merge-request creation patterns via a second matcher alongside the existing pull-request one. Creating a GitLab merge request increments the same PR-created counter used for pull requests, and pushed-branch PR links are now tracked even without an existing gh pr view match.

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

Heartbeat cadence beats can now be skipped when other traffic already confirmed liveness#

A scheduled heartbeat is skipped when a recent events upload already proved the connection is alive.

Details 0 0 Feedback

The CCR background job client can now skip a scheduled heartbeat tick if a non-ephemeral events POST already succeeded recently, logging Heartbeat skipped (events beat). This reduces redundant heartbeat traffic.

·Internal
Under the hood
Useful2 Signal2
MCP

MCP allowedMcpServers check bypassed for non-plugin, non-env-expanded project scope#

Project-scoped MCP servers that aren't from a plugin or env expansion now skip the allowlist check entirely.

Details 0 0 Feedback
allowedMcpServers

The allowedMcpServers restriction check now short-circuits to 'allowed' for servers whose scope is a project scope and which were not expanded from an environment variable or sourced from a plugin, skipping the full allowlist matching logic in that 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
Useful2 Signal2
Git Integration

Gerrit added as a recognized code-review provider#

Gerrit joins GitHub, GitLab and Bitbucket as a recognized provider in published-change events.

Details 0 0 Feedback

The code_change_published system event's provider field now recognizes gerrit for changes made on googlesource.com Gerrit hosts, joining the existing github, github-enterprise, gitlab, and bitbucket classifications.

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
Cloud Sessions

Session identity now cached per host and derived from a new token source#

Remote session identity is now cached per host and read through a helper instead of the access-token variable directly.

Details 0 0 Feedback
CLAUDE_CODE_SESSION_ACCESS_TOKEN

The remote-session identity resolver, which derives organizationUuid, accountUuid, and emailAddress, now caches its result per host and reads its token through a new internal helper instead of reading CLAUDE_CODE_SESSION_ACCESS_TOKEN directly. This avoids repeated JWT parsing when the token hasn't changed.

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
Configuration

Config load now distinguishes parse errors from read errors#

Config loading now distinguishes read errors from parse errors, and both trigger the fallback-to-cache path.

Details 0 0 Feedback

Internal config-loading state now tracks a lastGetConfigOutcome enum with values "parsed", "parse-error", "read-error", and "enoent", replacing the previous boolean lastGetConfigWasParseError. Callers now branch on both parse-error and read-error cases to trigger fallback-to-cache behavior, where previously only parse errors did, and the outcome is surfaced as a readRejected flag alongside the returned config.

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
MCP

New validator function warns on managedMcpServers entries#

A validator now warns about org-supplied MCP server entries that are ignored.

Details 0 0 Feedback
managedMcpServers

A new validator function processes managedMcpServers from settings and emits warnings for entries that are ignored, feeding into the managed-settings validation output.

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

New integrity-checked incremental reader for history.jsonl#

History reads now stream in chunks with a running digest and verify the file wasn't rewritten mid-scan.

Details 0 0 Feedback

history.jsonl reads now go through a new low-level incremental reader that streams the file in chunks, computes a running sha256 digest, and verifies the file wasn't rewritten out from under an earlier scan by comparing inode, birthtime, and a previously-recorded digest before returning parsed lines.

·Internal
Under the hood
Useful2 Signal2
Compaction

Conversation transcript builder gains thinking-stripped-response tracking#

Transcript assembly now tracks which assistant responses had thinking stripped and removes those blocks before returning.

Details 0 0 Feedback

The message-history assembly function now derives a thinkingStrippedResponses set and strips thinking blocks from assistant messages whose IDs are in that set before returning the transcript.

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
Subagents

Async agent task loops now track per-agent controllers for settlement#

Async agent tasks now register per-agent controllers so stop and cleanup only settle once no subagents remain attached.

Details 0 0 Feedback

Background/async agent task execution now registers a kill controller and a per-agent controller map per task through a new loop-settlement mechanism, calling settle callbacks only once agent associations are empty when required. This makes task stop/cleanup sequencing more reliable when subagents are still associated with a task.

·Internal
Under the hood
Useful1 Signal2
Sessions

Retention sweep now also cleans up 'tiny_memory' directories per project#

The retention sweep now also cleans tiny_memory directories under each project.

Details 0 0 Feedback

The periodic retention sweep now also walks tiny_memory directories under each project in ~/.claude/projects/*, cleaning them up alongside transcripts and messages.

·Internal
Under the hood
Useful1 Signal2
Permissions no docs found

New telemetry for orphaned permission handling#

Three telemetry events now track permissions parked across turn boundaries and whether they were applied.

Details 0 0 Feedback
tengu_orphaned_permission_applied

Three new telemetry events track permissions that were parked and applied across turn boundaries: one for when a parked permission is applied, and two for when it goes unapplied, at turn end or on turn resume, including tengu_orphaned_permission_applied.

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 Signal2
MCP no docs found

New telemetry events for MCP listing races and model-catalog comparisons#

Two telemetry events were allowlisted, one for rejected MCP tool listings and one comparing served model catalogs.

Details 0 0 Feedback
tengu_mcp_listing_prior_rejected

Two telemetry events are now allowlisted: tengu_mcp_listing_prior_rejected, fired when an MCP tool listing response is rejected because a newer one already arrived, and a second event for comparing served model catalogs.

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 Signal2
Compaction

Reactive compaction telemetry distinguishes full-summary splits#

Compaction telemetry now records the split kind and head truncations, and flags when the whole conversation was summarized.

Details 0 0 Feedback

tengu_reactive_compact_succeeded now reports splitKind and headTruncations, and fires a distinct compact_reactive_summarized_all gate event when the compaction summarized the entire conversation instead of doing an incremental split.

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 Signal2
Subagents

New telemetry when killing an agent whose task has no local loop entry#

Killing a local agent with no matching task-loop entry now fires a telemetry event flagging the mismatch.

Details 0 0 Feedback

Killing a running local agent that has no matching entry in the local task loop now fires a new task_kill_missing_loop_entry telemetry event with source local_agent, flagging the bookkeeping mismatch.

·Internal
Under the hood
Useful1 Signal2
Sandbox

Telemetry for deny-list requested without sandbox#

A telemetry event now fires when per-command deny paths are requested but the command isn't actually sandboxed.

Details 0 0 Feedback

If per-command deny paths are requested but the command isn't actually running sandboxed, a new per_command_deny_unsandboxed telemetry event fires noting the deny list was ignored.

·Internal
Under the hood
Useful1 Signal1
Background Tasks

Task summary field description clarifies source#

Task summary docs now spell out that local agents give a model-written progress summary and MCP tasks give the server's status.

Details 0 0 Feedback
agentProgressSummaries

The summary field on task status objects is now documented to clarify its source: for a local_agent task it is a model-generated progress summary, shown only when agentProgressSummaries is enabled, while for a backgrounded mcp_task it is the MCP server's own status message and is always emitted.

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
Skills

Skill model field description updated#

A skill result's model field is documented as the model the turn actually ran on, not the raw frontmatter override.

Details 0 0 Feedback

The model field returned for a skill's execution result is now documented as the resolved model the skill turn actually runs on when the skill's frontmatter model override took effect, rather than just the raw override value.

·Internal
Under the hood
Useful1 Signal1
Configuration

Config parse-error tracking becomes tri-state#

Config load outcome is now recorded as parsed, parse-error or missing rather than a single parse-error boolean.

Details 0 0 Feedback

The prior boolean setLastGetConfigWasParseError is replaced by setLastGetConfigOutcome, which records one of 'parse-error', 'enoent', or 'parsed', giving more granular diagnostics on config load outcomes.

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
Plugins

Plugin bucket-root quarantine check is now memoized#

The plugin bucket-root quarantine check is memoized so it doesn't redo directory work on every sync.

Details 0 0 Feedback

The plugin bucket-root quarantine check, which quarantines an unmarked plugin bucket directory, has been extracted from the sync routine into a helper named ensureBucketRoot that memoizes itself per plugins-sync state, avoiding repeated directory-quarantine work on every sync call.

·Internal
Under the hood
Useful1 Signal1
Skills

Skills sync tracks consecutive failed rounds#

The skills sync loop now counts consecutive failed rounds in its persistent state.

Details 0 0 Feedback

The background skills-sync loop now maintains a consecutiveFailedRounds counter in its persistent state, incrementing it on list failures and unexpected errors and resetting it to 0 on success.

·Internal
Under the hood
Useful1 Signal1
Skills

Skills sync failure logs now include structured failure detail#

Skills sync failure logs now include structured failure detail rather than just a duration.

Details 0 0 Feedback

Skills sync list-failure log and telemetry events now include extra structured failure detail extracted via a new helper, rather than just a duration.

·Internal
Under the hood
Useful1 Signal1
Plugins

Plugin sync failure telemetry gains error kind/status detail#

Plugin sync failure logs and telemetry now break the failure down by kind and HTTP status.

Details 0 0 Feedback

When a plugins sync round fails to list plugins, the plugins_sync_list_failed warn log, the tengu_plugins_sync_list_failed telemetry event, and the plugins_sync_round failure event now include a kind/status breakdown of the failure extracted from the response, in addition to the timing fields already sent.

·Internal
Under the hood
Useful1 Signal1
Remote Control no docs found

Internal events uploader now caps hold batch size#

The held-upload batch is capped at 50 events so it can't grow unbounded.

Details 0 0 Feedback
holdMaxItems

The internal-event uploader's hold mechanism now caps the number of events it will accumulate at holdMaxItems: 50, so it won't grow unbounded while holding uploads for a session with no subscribers.

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
Configuration

getProjectDirsUpToHome now stats candidate .claude dirs in parallel#

The walk up to home for .claude directories now stats candidates in parallel instead of one at a time.

Details 0 0 Feedback

getProjectDirsUpToHome, which walks up from the current directory to home collecting .claude subdirectories, now collects all candidate paths first and stats them concurrently via Promise.all, keeping only the ones that exist, instead of stating each one sequentially during the walk.

Related

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

3 entries

Removedopen

Removed
You'll notice
Useful2 Signal3
Sandbox no docs found

Sandboxed bash deny-list enforceability check removed#

Sandboxed bash no longer errors out when a remote call carries file deny lists it cannot enforce.

Details 0 0 Feedback
additionalDenyReadadditionalDenyWrite

The sandboxed bash execution path no longer throws an error when a remote call carries additionalDenyRead/additionalDenyWrite lists that can't be enforced there; the guard and its message, "This call carries file deny lists that cannot be enforced here yet," along with the telemetry gate sandbox_exec/remote_deny_list_unenforceable, have been removed.

Related

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

Removed
You'll notice
Useful2 Signal3
Permissions no docs found

'allow_desktop_handoff' policy removed#

Desktop handoff is no longer a separately gated capability in the permission and HIPAA lists.

Details 0 0 Feedback
allow_desktop_handoff

The allow_desktop_handoff permission entry has been removed from both the HIPAA permission-pair list and the general capability list, so desktop handoff is no longer a distinct gated capability.

Related

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

Removed
You'll notice
Useful3 Signal2
Subagents

claude-api built-in agent tool access tightened#

The built-in claude-api agent lost Read, Grep and Glob and now only has WebFetch scoped to one docs domain.

Details 0 0 Feedback
WebFetch

The built-in claude-api agent's tool access is narrowed: it previously had Read/Grep/Glob/WebFetch, and now only has WebFetch scoped to platform.claude.com.

Related

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

Verbatim
Official · Anthropic

Anthropic’s official release notes

Published verbatim by Anthropic for v2.1.259. 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 37 bullets, 7 name something an entry on this page also names, 8 name something no entry here does, and 22 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 managedMcpServers managed setting: organizations can provide HTTP/SSE MCP servers to every user (same entry shape as .mcp.json); entries that name a command to run are skipped Probably cached-remote-managed-mcp-servers-withheld-until-session-con, managedmcpservers-added-to-managed-settings-merge-semantics, new-validator-function-warns-on-managedmcpservers-entries, mcp-cold-start-now-waits-for-a-second-unverified-cache-conf, managed-settings-can-now-supply-mcp-servers-directly-manag
  • Added --permission-prompts none for unattended headless hosts: anything that would prompt is denied automatically while the active permission mode (including auto mode) keeps deciding Probably auto-deny-message-when-no-approval-surface-exists, new-permission-prompts-none-cli-flag-for-headless-print, new-permission-prompts-hostnone-clisdk-option-to-silen, new-sdk-option-permissionprompts-alongside-permissionpromp
  • Added recognition of glab mr create/merge/close/reopen/note/update so GitLab merge requests show as MR !N in the collapsed tool summary and refresh the footer MR badge No entry names this
  • Added --json to claude plugin validate for a machine-readable validation report Probably claude-plugin-validate-gains-json-output
  • Fixed concurrent sessions silently reverting each other's ~/.claude.json changes — workspace trust no longer resets and MCP/project state is no longer lost when running many sessions at once No entry names this
  • Fixed a conversation whose thinking was rejected once being rejected again on every later turn Nothing to match on
  • Fixed Bash Read() deny rules not covering files given as option values (--ignore-revs-file=.env, -f.env, @file), git diff/git grep file operands, or cd DIR && cat FILE compounds; grep -r/cp -r over a directory holding a denied file now asks Probably new-deny-checked-commands-greprgdiffgitcpmv-and-generi, git-tools-allowed-subcommand-shim-gains-git-grep-and-work
  • Fixed the prompt cache being invalidated when the OAuth token refreshed in sessions with telemetry disabled Nothing to match on
  • Fixed fullscreen mode showing a blank conversation after a long turn with hundreds of tool calls Nothing to match on
  • Fixed auto mode running a turn on a model it doesn't support when a command or skill's frontmatter model: named one; the turn now keeps the session model Nothing to match on
  • Fixed CLAUDE_CODE_MAX_CONTEXT_TOKENS being ignored for Vertex-style model IDs (@YYYYMMDD suffix) of model versions Claude Code doesn't recognize No entry names this
  • Fixed the live output preview of a running shell command hiding its newest lines when an earlier line wrapped Nothing to match on
  • Fixed a background GitHub connection check that ran on every launch for claude.ai users; the result is now remembered across launches Nothing to match on
  • Fixed --resume failing (and --continue opening an empty conversation) when a saved session contains an attachment entry with no payload Probably early-hydrate-prefetch-for-sdkremote-control-resume-session
  • Fixed frontmatter model: on custom commands and skills being ignored in interactive sessions Nothing to match on
  • Fixed Artifact publishing failing once with an "unexpected parameter note" error in conversations continued from an older version No entry names this
  • Fixed managed forceRemoteSettingsRefresh being ignored at startup when a policy helper configured by MDM or the managed settings file had already run No entry names this
  • Fixed worktree isolation refusing hook-created worktrees on machines where git rev-parse fails with a message other than "not a git repository" No entry names this
  • Fixed OpenTelemetry metrics and events from cloud sessions missing the user.email, organization.id, and user.account_uuid attributes No entry names this
  • Fixed MCP servers that disconnect while their tools are being listed at startup showing as connected with no tools instead of reporting the error Nothing to match on
  • Fixed the file edit permission dialog sometimes showing a changed line cut short with no indication Nothing to match on
  • Fixed repository detection dropping a known repo identity after a transient git probe failure Nothing to match on
  • Fixed managed settings silently going unenforced when the managed-settings file, a drop-in, the MDM plist, or the HKLM value cannot be parsed: Claude Code now refuses to start and names the source Nothing to match on
  • Fixed Stop not actually stopping background agents and workflows in remote-control sessions: killed tasks now stay visible and re-stoppable until their processes exit Nothing to match on
  • Fixed resuming a workflow run while its previous stopped run was still exiting, which could run duplicate copies of its agents Nothing to match on
  • Fixed marketplace repo URLs on github.com with a trailing slash or dangling ?/# producing an unusable .git clone URL Nothing to match on
  • Fixed blocking Stop hooks causing the turn after a block to lose the model's reasoning from that turn and, on some models, miss the prompt cache Nothing to match on
  • Fixed remote (claude.ai) sessions taking 60 seconds to start a turn after a browser-hosted MCP server's page had gone away Nothing to match on
  • Fixed worktree-isolated sessions refusing common Bash loops, xargs pipelines and launcher-wrapped commands that cannot reach the main checkout Nothing to match on
  • Improved terminal resize and first-render performance for long responses by reusing text measurements Nothing to match on
  • Improved /workflows agent detail: JSON outcomes are pretty-printed with syntax colors and real line breaks, and long outcomes fold behind an expand toggle No entry names this
  • Improved headless/SDK session start: the first turn begins up to 50 ms sooner when MCP servers finish connecting Nothing to match on
  • Improved /install-github-app to explain it is GitHub-only and point to the GitLab CI/CD docs when run inside a GitLab repository Probably install-github-app-now-recognizes-non-github-remotes
  • Improved nested background subagent results to be saved in the parent subagent's transcript, so resumed subagents keep them and shared transcripts show the delivery Nothing to match on
  • Changed allowedMcpServers to govern only servers users add: a literal managed-mcp.json server your allowlist used to filter out now loads on upgrade; use deniedMcpServers to keep it off Probably mcp-allowedmcpservers-check-bypassed-for-non-plugin-non-env
  • [VSCode] Added an Active quick filter and a status filter menu (Needs input, Working, Completed) to the session list sidebar Nothing to match on
  • Fixed remote and scheduled sessions doing nothing after a connector-tool permission prompt was approved while the session was paused Nothing to match on
System prompt

No change to the system prompt since v2.1.258.

Claude Code, interactive mode

Documentation

What the docs did around this release

137 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 93 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