Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All releases Home olderv2.1.140 v2.1.165newer

Claude Code v2.1.163

21 entries read diff v2.1.140 → v2.1.163 Markdown

This release adds two new hook events (SubagentStop and a formal Stop hook output schema with additionalContext), organization-level version enforcement via requiredMinimumVersion/requiredMaximumVersion policy settings, and new /plugin list filter flags. Under the hood, the workflow VM received substantial security hardening against hostile Proxy objects crossing the VM boundary, and OAuth 401 recovery was improved for remote sessions.

Find
Pick an entry · j / k steps through
14 entries

Changesopen

SubagentStop Hook Event#

What

A new hook event fires when a subagent finishes, complementing the existing Stop event which fires when the main conversation agent finishes. The hook output's additionalContext field is delivered back to the subagent so it can continue and act on the feedback.

Details
  • Event name: SubagentStop
  • Available for command-based and prompt-based hooks
  • Hook output schema: { hookEventName: "SubagentStop", additionalContext?: string }
  • additionalContext is non-error feedback; the subagent continues execution so it can act on it
  • Prompt-based hooks now also explicitly support SubagentStop alongside Stop, UserPromptSubmit, and PreToolUse
Evidence

Schema literal for the new event (search for "Hook-specific output for the SubagentStop event")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

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

Stop Hook Output Schema with additionalContext#

What

The Stop hook event now has a formal output schema with an additionalContext field, allowing hooks to send feedback to the model after it finishes a response so the conversation continues.

Details
  • Hook output schema: { hookEventName: "Stop", additionalContext?: string }
  • additionalContext is non-error feedback delivered to the model; the conversation continues so the model can act on it
  • Previously, the Stop hook output schema was not separately defined — it now matches the SubagentStop pattern
Evidence

Schema description (search for "Hook-specific output for the Stop event. additionalContext is non-error feedback")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Organization Version Enforcement (requiredMinimumVersion / requiredMaximumVersion)#

What

Administrators can now enforce a minimum and/or maximum Claude Code version through managed policy settings. If the running version is outside the allowed range, Claude Code exits at startup with instructions on how to update or downgrade.

Details
  • requiredMinimumVersion: If the running version is older than this value, Claude Code exits with a message to update using the organization's approved method.
  • requiredMaximumVersion: If the running version is newer than this value, Claude Code exits with a message to install an approved version (claude install <version> may also work).
  • Both settings are only enforced from managed/policy settings (managed-settings.json / MDM). They have no effect in user or project settings.
  • Exempt commands: update, install, and doctor bypass the version check so users can fix the problem.
  • Invalid semver values are logged as errors and ignored rather than blocking startup.
Evidence

Version check at startup (search for "is older than the minimum version required by your organization" and "is newer than the maximum version allowed by your organization")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

/plugin list --enabled and --disabled Filters#

What

The /plugin list command now accepts --enabled and --disabled flags to filter the output to only installed plugins matching the requested state.

Usage
/plugin list --enabled    # show only enabled plugins
/plugin list --disabled   # show only disabled plugins
/plugin list              # show all installed plugins (unchanged)
Details
  • Enabled/disabled status is shown as ✓ enabled or ✗ disabled per plugin entry.
  • If no plugins match the filter, a short message like "No disabled plugins." is shown.
  • Plugin entries also show version and scope where available.
  • A pending-reload indicator — run /reload-plugins to apply appears when the in-memory state differs from what would be loaded on next start.
Evidence

Filter flag in command rendering (search for "/plugin list [--enabled|--disabled] - List installed plugins")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

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

Expanded Media Type Support for File Uploads#

What

The file upload system now recognizes additional image, video, and audio formats.

Details
  • New image formats: HEIC (.heic), HEIF (.heif), AVIF (.avif), TIFF (.tif, .tiff), ICO (.ico)
  • New video formats: QuickTime/MOV (.mov), AVI (.avi), MKV (.mkv), M4V (.m4v)
  • New audio format: FLAC (.flac)
  • These MIME types are now served correctly when uploading files via the browser integration and Chrome tool
Evidence

MIME type map additions (search for "image/heic", "video/quicktime", "audio/flac")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

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

/reload-plugins Cache Impact Warning#

What

When /reload-plugins would add or remove MCP servers (changing the tool list), Claude Code now warns that the next message will re-read the whole conversation instead of using the prompt cache, and prompts you to confirm with --force.

Details
  • The warning shows how many MCP servers changed, or the specific server name if only one changed.
  • Use /reload-plugins --force to apply immediately and skip the warning.
  • If ToolSearch is active and the model supports it, the warning is suppressed (tool-search mode handles dynamic tools without cache invalidation).
Evidence

Warning message (search for "This reload changes MCP tools" and "Run /reload-plugins --force to apply")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

OAuth 401 Recovery for Remote Sessions#

What

Remote sessions now wait for a rotated OAuth token after receiving a 401 error, instead of immediately propagating the failure.

Details
  • Wait time is controlled by CLAUDE_CODE_OAUTH_401_WAIT_MS (default: 60,000 ms = 60 seconds for remote sessions, 0 for local sessions).
  • If a valid, non-failed token appears within the timeout window, the request is retried automatically.
  • For remote child sessions (workers), CLAUDE_CODE_AUTH_FAIL_EXIT_MS (default: 600,000 ms = 10 minutes) controls how long to tolerate unrecovered 401s before exiting with a message to the runner to recycle the session with fresh credentials.
  • The "failed access token" (the specific token that got the 401) is tracked so a rotation to an identical token value is not treated as a recovery.
Evidence

Recovery function (search for "OAuth 401 recovery: waiting up to" and "OAuth 401 unrecovered past CLAUDE_CODE_AUTH_FAIL_EXIT_MS")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Workflow VM Security Hardening#

What

The workflow VM execution environment was substantially hardened against Proxy-based attacks that could cross the JavaScript VM sandbox boundary.

Details
  • Arrays crossing the VM boundary are now deep-cloned inside the VM sandbox. The array length is read once (preventing a Proxy length getter that increments from causing an infinite loop on the host thread).
  • The maximum array length crossing the boundary is capped; exceeding it throws a clear error rather than hanging.
  • Functions are never cloned across the boundary (they become undefined).
  • A private _CAP symbol on boundary-cap errors prevents hostile Proxy traps from intercepting and suppressing the error.
  • The budget object passed to workflows now uses __proto__: null to prevent prototype chain pollution.
  • agent, parallel, pipeline, workflow, and args are injected into the VM context via Object.defineProperty with proper wrapping rather than being in the initial context literal.
  • The args value is serialized with JSON.stringify/JSON.parse through the VM context to prevent host-side Proxy objects from being accessible inside the script.
Evidence

Cross-VM clone code (search for "array length is not a safe integer across the workflow VM boundary")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Workflow Script Static Validation via AST#

What

Workflow scripts are now parsed with the Acorn JavaScript parser (including the acorn-walk tree traversal library) for accurate static validation before execution.

Details
  • 'with' statements are rejected: SyntaxError: 'with' statements are not supported in workflow scripts.
  • 'await using' declarations are rejected: SyntaxError: 'await using' declarations are not supported in workflow scripts.
  • Identifiers starting with the internal prefix are rejected: SyntaxError: Identifier '<name>' is reserved.
  • import() expressions are disallowed.
  • The AST-based approach replaces simpler regex-based checks and properly handles edge cases like await inside async arrow functions with expression bodies.
Evidence

Error messages (search for "'with' statements are not supported in workflow scripts." and "'await using' declarations are not supported in workflow scripts.")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

MCP Server Failure Notification#

What

When MCP servers fail to connect or need authentication at startup, a structured tree notification now appears listing each affected server with its status and error details.

Details
  • The notification identifies whether each server needs authentication, has a config issue, or has failed for another reason.
  • Shows a summary count: N MCP server(s) not connected — run /mcp to authenticate, retry, or see details:
  • Servers requiring authentication are highlighted as errors; others as warnings.
  • Excludes IDE-attached servers (sse-ide, ws-ide types) and servers that are marked as claudeai-proxy.
Evidence

Notification text (search for "MCP server(s) not connected — run /mcp to authenticate, retry, or see details:")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Builtin MCP Servers Ignored in Plugin Config#

What

MCP server entries declared in plugin configs that refer to CLI-owned builtin servers are now silently ignored with a debug log, rather than causing a conflict or error.

Evidence

Log message (search for "Builtin server is CLI-owned; ignored")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Plugin LSP Extension Conflict Detection#

What

Claude Code now detects when two or more plugins declare LSP servers claiming the same file extension, and reports the conflict rather than silently picking one.

Details
  • Conflicts are reported as lsp-extension-conflict warnings, including which plugin and server name is active for the extension vs. the newcomer.
  • The first plugin to register an extension wins; subsequent claims for the same extension are flagged.
Evidence

Conflict detection function (search for " declares two LSP servers for" in LSP warnings or "already registered a server for that extension")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Hermetic Mode MCP Config Filtering#

What

MCP servers passed via --mcp-config CLI flags are now properly blocked when running in hermetic mode, with a warning log listing the ignored servers.

Evidence

Warning message (search for "ignored in hermetic mode:")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

$TMPDIR Sandbox Documentation Clarified#

What

The system prompt instruction about using $TMPDIR for temporary files now correctly states that TMPDIR is set to the sandbox-writable directory specifically in sandbox mode (the old wording implied it was set in both sandboxed and unsandboxed contexts).

Evidence

Updated instruction text (search for "TMPDIR is automatically set to the correct sandbox-writable directory in sandbox mode")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

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

1 entry

Bug Fixesopen

#

  • Path traversal via symlinks with .. segments is now detected correctly in the git-controlled directory check. The old implementation could miss cases where a symlink in the path was followed by a .. component that escaped the intended root. (search for "would overwrite tracked literal" near the symlink traversal logic)
  • The fetchSession error log is now counter-based, reporting "N times in a row" rather than always showing a fixed count. Previously the message was hardcoded as "10 times in a row." (search for "fetchSession failed")
  • Bridge setMode commands that are rejected (invalid mode) now fall back to 'default' mode with a warning instead of leaving the bridge in an indeterminate state. (search for "bridge setMode '" and "rejected (")
5 entries

In Developmentopen

#

Features with infrastructure added but not yet enabled. These are shipped "dark" and may become available in future versions.

Related

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

Settings Panel Category Reorganization [In Development]#

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

What

A complete reorganization of the /config settings panel into named groups — Appearance, Model & output, Display, Input & controls, Connections, Advanced, Experimental, Internal — replacing the flat list of settings.

Status

Feature-flagged via tengu_maple_sundial (defaults to false).

Details
  • Settings like autoScrollEnabled, terminalProgressBarEnabled, showTurnDuration, and prStatusFooterEnabled move to a Display group.
  • editorMode, copyOnSelect, fileCheckpointingEnabled, and workflow-related toggles move to Input & controls.
  • MCP/IDE connection settings move to Connections.
  • Experimental settings (switchModelsOnFlag, showMessageTimestamps, teammateMode) get their own section.
  • The snipEnabled and snipDebug settings appear in an Internal group.
  • /vim and /output-style commands show a "moved to /config" redirect message when the flag is active.
Evidence

Category map gated on tengu_maple_sundial (search for "Model & output" near the settings group map)

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Slash Command Menu Kind Lanes [In Development]#

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

What

A visual grouping of slash commands in the menu that separates config commands, action commands, info commands, and agent commands into distinct lanes.

Status

Gated by tengu_mint_lanes feature flag or CLAUDE_CODE_ENABLE_MENU_KIND_LANES environment variable (both default off).

Details
  • Commands are classified as config (settings-changing), action (one-off operations), info (read-only queries), and agent (background agent launchers).
  • Source labels (project, org, plugin) appear on applicable commands.
  • The classification map covers all known slash commands.
Evidence

Classification map (search for "CLAUDE_CODE_ENABLE_MENU_KIND_LANES")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Velvet Falcon Model Detection [In Development]#

Feature flag
tengu_velvet_falcon_model 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.163: not a boolean we can read

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

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

What

Infrastructure to detect and handle a new internal model variant identified as "velvet falcon."

Status

Gated by tengu_velvet_falcon_model feature flag; also overrideable via CLAUDE_CODE_VELVET_FALCON environment variable.

Details
  • The model string is fetched from clientDataCache.velvet_falcon_model first, then from the feature flag.
  • Detection returns true when the session's model string includes the configured identifier.
Evidence

Detection function (search for "tengu_velvet_falcon_model" and "CLAUDE_CODE_VELVET_FALCON")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Subscription Switch Notice [In Development]#

What

A UI component that encourages users on a usage-based (API/console) account to activate their existing Claude subscription plan with Claude Code instead.

Status

Shown based on a new seenNotifications["subscription-switch"] counter — only appears to users who have not yet seen it the configured number of times. The display logic is wired up but gated on subscription type detection.

Details
  • Shows: "Use your existing Claude [Pro/Max/Team] plan with Claude Code · /login to activate"
  • Impression count is stored in local config under seenNotifications.
  • Telemetry event: tengu_switch_to_subscription_notice_shown
Evidence

UI component text (search for "Use your existing Claude " and "/login to activate")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

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.163. 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.

  • Added requiredMinimumVersion and requiredMaximumVersion managed settings — Claude Code refuses to start if its version is outside the allowed range and directs the user to an approved version
  • Added /plugin list command to list installed plugins, with --enabled/--disabled filters
  • Added a "c to copy" shortcut to /btw that copies the raw markdown answer to the clipboard, preserving formatting when pasted elsewhere
  • Hooks: Stop and SubagentStop hooks can now return hookSpecificOutput.additionalContext to give Claude feedback and keep the turn going without being labeled a hook error
  • Skills: added \$ escape syntax to include a literal $ before a digit in command bodies
  • stdio MCP servers now receive the same CLAUDE_CODE_SESSION_ID as hooks/Bash on --resume
  • Fixed claude -p hanging forever after its final result when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes
  • Fixed claude -p failing with "ANTHROPIC_API_KEY required" on Bedrock/Vertex/Foundry when CI=true and no Anthropic API key is set
  • Fixed bash commands failing under bazel and EDR-protected Go workflows: $TMPDIR was overridden to /tmp/claude-{uid} for all commands instead of only sandboxed ones (regression in 2.1.154)
  • Fixed Bash commands failing on Windows with "EEXIST: file already exists" on the session-env directory when it has the read-only attribute or is inside OneDrive
  • Fixed org-managed permission rules not applying for the entire session when the managed settings fetch completed during startup on a fresh config directory
  • Fixed background sessions in claude agents losing their running background tasks when reattached after a Claude Code update
  • Fixed terminal misalignment and a multi-second hang when exiting the agent view by pressing Esc
  • Fixed clicking Stop on a background-task chip in the desktop app not clearing the chip when the underlying process was already gone
  • Fixed keyboard input becoming permanently unresponsive after a paste operation whose end marker is dropped by the terminal
  • Fixed hook if: "Bash(...)" conditions firing on every Bash command containing $() or $VAR; the pattern now matches against commands inside subshells and backticks too
  • Fixed deny rules on home-directory paths (e.g. Read(~/Desktop/**)) not blocking Bash commands that reference the path via $HOME
  • Fixed a stray "(no content)" line left in the transcript after closing panel dialogs like /mcp and /plugins
  • Background agent sessions now update to a new Claude Code version in the background, so opening a session after an update no longer waits on a cold restart
  • Clearer descriptions for built-in commands and skills in the / menu
  • The subscription-switch suggestion now shows in the startup announcement slot instead of a toast
  • claude agents dispatching from the state-grouped view now starts the session in the directory the agent view was opened from
System prompt

1 of 25 tool descriptions changed. The appended system-reminder blocks moved: 3 lines added, 3 lines removed.

Claude Code, interactive mode