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.119 v2.1.121newer

Claude Code v2.1.120

26 entries read diff v2.1.119 → v2.1.120 Markdown

This release introduces a condensed "lean prompt" system for reduced token usage on capable models, a new claude ultrareview CLI command for cloud-hosted code reviews, interactive daemon service installation prompts, a memory write confirmation dialog, and expanded Windows PowerShell support. It also adds the tabs_close_mcp Chrome extension tool, a hideVimModeIndicator setting for custom status lines, and several improvements to how deny rules, autocompact notifications, and explore agent descriptions are handled.

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

Changesopen

claude ultrareview CLI Subcommand#

What

Run a cloud-hosted multi-agent code review directly from the command line, without entering an interactive session.

Usage
claude ultrareview              # review current branch
claude ultrareview 42           # review PR #42
claude ultrareview main         # review against a base branch
claude ultrareview --json       # print raw bugs.json payload
claude ultrareview --timeout 45 # wait up to 45 minutes (default: 30)
Details
  • Launches a remote multi-agent session that finds and verifies bugs in your branch
  • Prints live progress (found, verified, refuted counts) to stderr while waiting
  • Outputs formatted findings with file paths, line numbers, and severity (🔴 normal, 🟡 nit, 🟣 pre-existing)
  • Ctrl-C cancels the wait but leaves the remote review running — a URL is printed so you can view it in the browser
  • The /ultrareview slash command existed previously; this adds it as a top-level CLI entry point
Evidence

CLI command registered via .command("ultrareview [target]") with .description("Run a cloud-hosted multi-agent code review...") — search for "ultrareview [target]"

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

Lean Prompt Mode (Condensed Tool Descriptions)#

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

What

A new prompt optimization mode that significantly reduces system prompt token usage by sending shorter, denser tool descriptions to capable models.

Usage
CLAUDE_CODE_LEAN_PROMPT=1 claude   # force enable via env var
Details
  • When active, tool descriptions for Grep, Glob, WebFetch, Write, Edit, WebSearch, TodoWrite, Bash, and the Task/Explore agent are replaced with much shorter versions
  • Example: the Grep tool description goes from a multi-paragraph usage guide to a compact 4-line summary
  • The Explore agent description is refined to emphasize it is a "read-only search agent" not suitable for code review or cross-file analysis
  • Activated by the CLAUDE_CODE_LEAN_PROMPT environment variable, or gradually rolled out via the tengu_vellum_lantern feature flag
  • Currently limited to Opus 4.6+ and Opus 4.7 models
Evidence

Lean prompt gate function checks CLAUDE_CODE_LEAN_PROMPT and tengu_vellum_lantern — search for "CLAUDE_CODE_LEAN_PROMPT"

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

Memory Write Confirmation Dialog#

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

What

When Claude writes or edits a memory file, a confirmation dialog now appears showing what was saved, with the option to approve or reject the change.

Details
  • Shows "Memory written" or "Memory updated" with a preview of the content (or a one-sentence AI-generated summary for large memories)
  • For edits, displays a diff view; for new memories, displays the body text
  • Auto-hides after a configurable timeout (default 8 seconds) with a countdown indicator
  • Rejecting a memory write undoes the file change (restores the previous content or deletes the file)
  • The summary is generated by Sonnet 4.6 for memories exceeding a line threshold (default: 5 lines)
  • Controlled by the tengu_slate_siskin feature flag (disabled by default)
Evidence

Memory write survey infrastructure with approve/reject dialog — search for "memoryWriteSurvey" and "tengu_slate_siskin"

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

memory-types Skill#

What

A new internal skill that provides a full reference for the memory type taxonomy — what each type captures, when to save it, and how to structure the body.

Details
  • Not user-invocable directly; Claude uses it automatically before writing a memory file when lean prompts are active
  • Enabled when tengu_ochre_finch flag is active or CLAUDE_CODE_LEAN_PROMPT is set
  • Replaces the longer inline memory documentation in the system prompt with a shorter summary plus a skill reference
  • The system prompt now lists memory types as a compact bulleted list and says "Invoke the memory-types skill for scope, body structure and examples"
Evidence

Skill registered as "memory-types" with userInvocable: !1 — search for "memory-types"

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

Daemon Cold-Start Service Installation Prompt#

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

What

When no background daemon is running and one is needed, Claude Code now interactively asks whether to install it as a persistent system service.

Usage
No background daemon is running.
Installing it as a service keeps scheduled and remote-control workers running across reboot.
Install as a service now? [Y/n/never, or 'once' for this login session]
Details
  • Y (default): installs a launchd (macOS) or systemd (Linux) service that persists across reboot
  • once: spawns a transient daemon for the current login session only
  • never: remembers the dismissal and won't ask again (spawns transient)
  • n: does nothing — the command fails with the original "no daemon running" error
  • Controlled by the tengu_quiet_harbor feature flag (determines whether mode is "ask" or "transient")
  • Also configurable via CLAUDE_CODE_DAEMON_COLD_START environment variable or settings.daemonColdStart
  • The daemon auto-uninstalls stale service files that were not created by the current version (tagged with claude-managed: v1)
Evidence

Interactive prompt with "Install as a service now? [Y/n/never, or 'once' for this login session]" — search for that string, gated by tengu_quiet_harbor

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

Chrome Extension: tabs_close_mcp Tool#

What

A new MCP tool that lets Claude close individual tabs in the Chrome tab group by ID.

Details
  • Only tabs in the current session's tab group are closable
  • Call tabs_context_mcp first to get valid tab IDs
  • If you close the group's last tab, Chrome auto-removes the group — the next tabs_context_mcp with createIfEmpty starts fresh
  • Replaces the previous update_plan tool that was used in the Chrome extension's plan-approval flow
Evidence

Tool registered as "tabs_close_mcp" with title "Tabs Close" — search for "tabs_close_mcp"

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

User Deny Rules Awareness in System Prompt#

What

Claude is now informed about the user's configured permission deny rules and instructed to block circumvention attempts.

Details
  • The system prompt now includes a section listing all active deny rules
  • Claude is instructed to block actions that achieve the same effect via a different tool — e.g., using python -c, sed -i, cat >, heredocs, or similar to write a file that an Edit/Write deny rule covers
  • Only non-internal deny rules are surfaced (rules starting with a specific internal prefix are filtered out)
Evidence

New function builds deny rule text: "User Deny Rules: The user has configured these permission deny rules..." — search for "User Deny Rules"

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

hideVimModeIndicator Status Line Setting#

What

A new boolean setting to suppress the built-in -- INSERT -- / -- VISUAL -- vim mode indicator below the prompt.

Usage (in settings):

{
  "statusLine": {
    "hideVimModeIndicator": true
  }
}
Details
  • Use this when your custom status line script already renders vim.mode itself
  • Prevents duplicate mode indicators when using a custom status line
Evidence

New setting hideVimModeIndicator with .describe("Hide the built-in...") — search for "hideVimModeIndicator"

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

CLAUDE_EFFORT System Prompt Substitution#

What

A new ${CLAUDE_EFFORT} template variable is now available in system prompts, dynamically resolved from the session's effort setting.

Details
  • The variable is interpolated during session initialization
  • Allows system prompts to adapt behavior based on the current effort level
Evidence

Template variable ${CLAUDE_EFFORT} appears in system prompt processing — search for "CLAUDE_EFFORT"

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

Renamed "Bash Mode" to "Shell Mode"#

The ! prefix hint has been renamed from "bash mode" to "shell mode" to reflect the broader shell support now available (bash, zsh, sh, and PowerShell on Windows).

Evidence

String changed from "! for bash mode" to "! for shell mode" — search for "! for shell 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.

Expanded Windows PowerShell Integration#

PowerShell support on Windows has been improved with smarter shell selection and better error handling:

  • Shell selection now falls back gracefully: if defaultShell is set to "bash" but Git Bash isn't installed, PowerShell is used instead, and vice versa
  • The shell setting description now reads "Defaults to bash (powershell on Windows without Git Bash)"
  • Clipboard operations on Windows now use proper argument arrays instead of concatenated strings for safer command execution
  • Clear error messages guide users when neither Git Bash nor PowerShell is available:
  • "Claude Code on Windows requires either Git for Windows (for bash) or PowerShell"
  • Hook errors now suggest "Install Git for Windows, or add shell: powershell to this hook's config"
Evidence

Shell fallback logic in g24() function — search for "Git Bash not found" and "CLAUDE_CODE_USE_POWERSHELL_TOOL"

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

Improved Scroll Wheel Notification#

The scroll wheel arrow-key detection now suggests a simpler fix. The notification has been changed from "run /terminal-setup to fix" to "use PgUp/PgDn to scroll", removing the need for users to run a separate command.

Evidence

String changed from "run /terminal-setup to fix" to "use PgUp/PgDn to scroll" — search for "PgUp/PgDn to scroll"

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.

Improved Autocompact Notification#

The autocompact notification has been refined:

  • Message changed from "compacted at the auto window (N tokens)" to "compacting at the auto N window · configure with /autocompact"
  • Notification priority changed from "medium" to "immediate" for better visibility
  • Now uses the "suggestion" color theme and a 12-second timeout
Evidence

Notification text updated — search for "compacting at the auto" and "configure with /autocompact"

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.

Better Exit/Detach Labels for Remote Sessions#

When running as a background/remote session with active tasks, the Escape exit message now shows "detach (session keeps running)" instead of "stop session", making it clearer that background work continues after detaching.

Evidence

Dynamic label logic — search for "detach (session keeps running)" and "stop session"

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.

Richer Tool-Call Labels in Status Display#

AskUserQuestion prompts and Plan-mode submissions now show descriptive labels in the status display:

  • Questions show the header/question text (e.g., "Question: Which library?" or "Tap to answer")
  • Plan submissions show "Plan ready for review"
Evidence

Label rendering logic — search for "Tap to answer" and "Plan ready for review"

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

Hidden Message Count in Focused Mode#

When messages are hidden due to /focus mode, the prompt now displays a count like "3 messages hidden (/focus to show)" to help users know when context has been abbreviated.

Evidence

New label format — search for "hidden (/focus to show)"

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

Graceful Marketplace Plugin Degradation#

Plugins with unrecognized source types are now stubbed rather than dropped entirely:

  • If a marketplace plugin entry uses a source type not supported by the current Claude Code version, it is preserved as an "unsupported" placeholder
  • Installation attempts fail with a clear "update Claude Code and try again" message
  • This prevents detectDelistedPlugins from incorrectly treating it as removed
Evidence

Plugin stubbing logic — search for "Stubbing unparseable marketplace plugin entry" and "source.source: 'unsupported'"

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

Daemon CLI Enhancements#

The claude daemon subcommand has been reorganized with new operations:

  • New hub subcommand for interactive daemon management (requires TTY)
  • New list subcommand for a flat view across all worker kinds
  • New scheduled, assistant, remote-control subcommands for per-kind listing and mutation
  • start and restart subcommands are now explicitly disabled with a clear message: "the daemon runs on demand and exits when the last client disconnects"
  • stop --any can now stop transient (non-service) daemons
  • Better status output including pid, version, uptime, origin, and config path
  • Auto-uninstalls stale service files from previous Claude Code versions
Evidence

Help text registered as "Usage: claude daemon [subcommand] [options]..." — search for that string

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

Improved Explore Agent Description#

The Explore (search) agent description has been rewritten to be more precise about its limitations: it is now described as a "read-only search agent" that should NOT be used for "code review, design-doc auditing, cross-file consistency checks, or open-ended analysis" since it "reads excerpts rather than whole files and will miss content past its read window."

Evidence

New description string — search for "read-only search agent"

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

Feedback Submission Now Tracks Surface Origin#

The /feedback submission now records the surface field (e.g., "cli") to distinguish reports from different Claude Code surfaces (terminal, CCD, CCW). This helps the triage pipeline route reports correctly.

Evidence

surface parameter in feedback payload — search for "Where the feedback flow was initiated"

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

File Watcher Error Handling#

Multiple subsystems now log warnings on file watcher errors instead of crashing:

  • [settings] watcher error: for settings file changes
  • [skills] watcher error: for skill file changes
  • [theme] watcher error: for theme file changes
  • [jobStateNameSync] watcher error: for job state changes
  • [useBgSessionPr] watcher error: for background session PR changes
  • FileChanged: watcher error: for general file change detection
Evidence

Search for "watcher error:" in the string diff

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

Agent Auto-Relaunch Tracking#

A new CLAUDE_AGENTS_AUTO_RELAUNCHED_AT environment variable is set when an agent is automatically relaunched, allowing detection and prevention of relaunch loops.

Evidence

New env var — search for "CLAUDE_AGENTS_AUTO_RELAUNCHED_AT"

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

Username Validation#

The getUsername() function now validates the system username against a safe regex pattern and falls back to "claude-code-user" if it contains unexpected characters, preventing potential issues with unusual usernames.

Evidence

Username validation with regex test — function xe() at line ~104573

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.

4 entries

Bug Fixesopen

#

  • Fixed Chrome extension ToolCallTimeoutError and ExtensionDisconnectedMidCallError — new error types provide more specific messaging when the Chrome extension disconnects mid-operation or times out (search for "ExtensionDisconnectedMidCallError")
  • Fixed daemon stop on Windows: the error message now correctly advises using taskkill /PID instead of attempting signals that Windows doesn't support (search for "taskkill /PID")
  • Fixed worktree cleanup handling: uncommitted changes in agent worktrees are now preserved with a warning rather than silently lost (search for "changed file(s) would be lost, kept")
  • Fixed autocompact thrashing detection: the thrashing message now properly triggers on repeated rapid re-compactions (search for "Autocompact is thrashing")
  • Fixed auth token refresh: proactive token refresh failures are now logged and retried with a 60-second delay instead of failing silently (search for "auth: proactive refresh failed")
  • Fixed plan-mode blocking: the post_turn_summary now correctly maps "blocked" status to "need_input" for plan mode flows (search for "status_category")

Lean Prompt System [Gradual Rollout]#

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

What

The full lean prompt system that compresses all tool descriptions and system prompt content for reduced token usage.

Status

Feature-flagged behind tengu_vellum_lantern (default false), overridable with CLAUDE_CODE_LEAN_PROMPT=1.

Details
  • Currently restricted to Opus 4.6+ and Opus 4.7 models
  • The tengu_ochre_finch flag controls lean memory prompts independently
  • When fully enabled, tool descriptions are 60-80% shorter while preserving essential usage information
  • Users can preview it now via the environment variable

Memory Write Confirmation [Gradual Rollout]#

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

What

The interactive approve/reject dialog for memory file writes.

Status

Feature-flagged behind tengu_slate_siskin (default false), with configurable timeout, throttle, and summary threshold.

Details
  • Full UI infrastructure is in place including diff rendering, AI-powered summaries, and undo capability
  • Configurable via the feature flag's schema: enabled, timeoutMs (1000-120000), throttleMs (0-3600000), summaryLineThreshold (1-50)
  • When enabled, every memory write surfaces a brief confirmation with countdown timer

Daemon Service Cold-Start Prompt [Gradual Rollout]#

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

What

Interactive prompt to install the daemon as a persistent system service.

Status

Feature-flagged behind tengu_quiet_harbor (default false — defaults to "transient" mode where daemon spawns on demand without asking).

Details
  • When the flag is enabled (set to return "ask"), the interactive installation prompt appears
  • Can be forced via CLAUDE_CODE_DAEMON_COLD_START=ask environment variable or settings.daemonColdStart
Verbatim
Official · Anthropic

Anthropic’s official release notes

Published verbatim by Anthropic for v2.1.120. 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.

  • Windows: Git for Windows (Git Bash) is no longer required — when absent, Claude Code uses PowerShell as the shell tool
  • Added claude ultrareview [target] subcommand to run /ultrareview non-interactively from CI or scripts — prints findings to stdout (--json for raw output) and exits 0 on completion or 1 on failure
  • Skills can now reference the current effort level with ${CLAUDE_EFFORT} in their content
  • Set AI_AGENT environment variable for subprocesses so gh can attribute traffic to Claude Code
  • Spinner tips that recommend installing the desktop app or creating skills/agents are now hidden when you already have them
  • Show a "use PgUp/PgDn to scroll" hint when the terminal sends arrow keys instead of scroll events
  • Faster session start when you have many claude.ai connectors configured but not authorized
  • The auto mode denial message now links to the configuration docs
  • claude plugin validate now accepts $schema, version, and description at the top level of marketplace.json and $schema in plugin.json
  • Auto-compact in auto mode now displays auto (lowercase, no token count) instead of a misleading token value
  • Fixed pressing Esc during a stdio MCP tool call closing the entire server connection (regression in 2.1.105)
  • Fixed /rewind and other interactive overlays not responding to keyboard input after launching with claude --resume
  • Fixed terminal scrollback duplication in non-fullscreen mode (resize, dialog dismiss, long sessions)
  • Fixed DISABLE_TELEMETRY / CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC not suppressing usage metrics telemetry for API and enterprise users
  • Fixed false-positive "Dangerous rm operation" permission prompts in auto mode for multi-line bash commands containing both a pipe and a redirect
  • Fixed long selection menus clipping below the terminal in fullscreen mode — the focused option now stays on screen as you scroll
  • Fixed Write tool output collapsing instead of expanding when clicking "+N lines" in fullscreen
  • Fixed slash command picker jumping while typing, and improved highlight to only match contiguous substrings in blue
  • Fixed /plugin marketplace failing to load when one entry uses an unrecognized source format — that entry is shown but installing it prompts you to update
  • [VSCode] /usage now opens the native Account & Usage dialog instead of returning plain-text session cost
  • [VSCode] Voice dictation now respects the language setting in ~/.claude/settings.json
  • Fixed find in the Bash tool exhausting open file descriptors on large directory trees, causing host-wide crashes (macOS/Linux native builds)
System prompt

2 added and 1 removed, of 218 lines, about 3 words, in the prompt all 27 arms receive. 2 of 24 tool descriptions changed.

Claude Code, interactive mode