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.22 v2.1.25newer

Claude Code v2.1.23

18 entries read diff v2.1.22 → v2.1.23 Markdown

This release adds a ripgrep search timeout with graceful error handling, introduces an in-app auto-update configuration dialog, adds customizable spinner verbs for personalized UI, and implements significant infrastructure improvements including WebSocket-based direct connect mode, pipelined speculation for faster responses, and a prompt cache break debugging system. The security policy for code analysis has been updated to better support authorized security testing scenarios.

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

Changesopen

Ripgrep Search Timeout Handling#

What

Ripgrep searches now have a timeout (20 seconds, or 60 seconds on WSL) with graceful error handling that returns partial results.

Details
  • Searches that take too long will now fail gracefully with a RipgrepTimeoutError
  • Partial results found before timeout are preserved and returned
  • Clear error message: "The search may have matched files but did not complete in time. Try searching a more specific path or pattern."
Evidence

fz8 class at line 31473 (contains "RipgrepTimeoutError" and "Ripgrep search timed out after")

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

In-App Auto-Update Configuration#

What

New dialog to enable or disable auto-updates directly from within Claude Code, with channel selection.

Usage: Access through the settings interface to configure auto-updates.

Details
  • Choose between "Enable with latest channel" or "Enable with stable channel"
  • When auto-updates are controlled by environment variables (CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC or DISABLE_AUTOUPDATER), the dialog shows a message explaining this and how to re-enable
Evidence

UI component at line 488151 (contains "Enable Auto-Updates", "Enable with latest channel", "Enable with stable channel")

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

Customizable Spinner Verbs#

What

New configuration option to customize the spinner verbs shown during Claude's thinking phase.

Usage: Add to your settings:

{
  "spinnerVerbs": {
    "mode": "append",
    "verbs": ["Pondering", "Contemplating", "Musing"]
  }
}
Details
  • mode: "append" - adds your verbs to the default list
  • mode: "replace" - uses only your custom verbs
  • Empty verbs array with replace mode falls back to defaults
Evidence

Schema definition at line 552840 (contains "spinnerVerbs", 'Customize spinner verbs. mode: "append" adds verbs to defaults, "replace" uses only your verbs.')

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

Toggle Terminal Keybinding#

What

New app:toggleTerminal keyboard action added to the available keybindings.

Details
  • Adds a new action for toggling terminal view
  • Can be bound to a custom key combination in keybindings configuration
Evidence

Action registered at line 560172 (contains "app:toggleTerminal")

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.

WebSocket Direct Connect Mode#

What

Infrastructure for connecting directly to a remote Claude Code server via WebSocket.

Details
  • New useDirectConnect hook manages WebSocket connections
  • Handles connection lifecycle: connecting, connected, disconnected, errors
  • Supports permission request forwarding from remote sessions
  • Provides clear error messaging for connection failures
Evidence

useDirectConnect hook at line 586518 (contains "[useDirectConnect] Connecting to", "WebSocket connection error", "Server disconnected.")

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

Updated Security Policy for Code Analysis#

The system prompt for security-related tasks has been expanded to better support legitimate security work:

Previous policy: "Assist with defensive security tasks only"

New policy: "Assist with authorized security testing, defensive security, CTF challenges, and educational contexts"

Details
  • Now explicitly allows: pentesting engagements, CTF competitions, security research, defensive use cases
  • Still refuses: destructive techniques, DoS attacks, mass targeting, supply chain compromise, detection evasion for malicious purposes
  • Dual-use security tools (C2 frameworks, credential testing, exploit development) require clear authorization context
Evidence

Policy string at line 550045 (contains "authorized security testing", "CTF challenges")

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

Prompt Cache Break Debugging#

What

New detailed logging when prompt caching breaks, helping identify why cache misses occur.

Details
  • Logs when cache breaks due to: model changes, system prompt changes (with character delta), tool schema changes
  • Format: [PROMPT CACHE BREAK] system prompt changed (+123 chars) [source=X, call #Y, cache read: A → B, creation: C]
  • Useful for debugging unexpected cache misses in long sessions
Evidence

Logging at line 266957 (contains "[PROMPT CACHE BREAK]", "system prompt changed", "tools changed", "model changed")

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

Pipelined Speculation System#

What

New speculative execution system that pre-generates suggestions before they're needed.

Details
  • Generates pipelined suggestions asynchronously during interaction
  • Promotes cached suggestions when user input matches predictions
  • Stops speculation at denied tools to avoid wasted work
  • Debug logging: [Speculation] Pipelined suggestion: "...", [Speculation] Promoting pipelined suggestion: "..."
Evidence

Speculation logic at line 457819 (contains "[Speculation] Pipelined suggestion:", "[Speculation] Promoting pipelined suggestion:", "[Speculation] Stopping at denied tool:")

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

Enhanced Fork Agent Logging#

What

Forked agents now log detailed progress information for debugging.

Details
  • Logs transcript recording events
  • Tracks message counts and types received
  • Reports final usage statistics including cache read/create tokens
  • Format: Forked agent [name] finished: N messages, types=[...], totalUsage: input=X output=Y cacheRead=Z cacheCreate=W
Evidence

Logging at line 421675 (contains "Forked agent [", "cacheCreate=", "total sent)")

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

Dynamic Skills Loading via Attachments#

What

Skills can now be loaded dynamically and sent to the model via attachments rather than in the initial prompt.

Details
  • Reduces initial prompt size by loading skills on-demand
  • Logs: Sending N skills via attachment (initial/dynamic, X total sent)
  • Skills are formatted with a header: "The following skills are available for use with the Skill tool"
Evidence

Skills handling at line 463656 (contains "skills via attachment", "The following skills are available for use with the Skill tool")

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

GitHub PR State Field#

What

PR view commands now include the state field in addition to existing fields.

Details
  • gh pr view --json now fetches: number,url,reviewDecision,isDraft,headRefName,state
  • Previously only fetched: number,url,reviewDecision,isDraft,headRefName
  • Enables better PR status detection (open, closed, merged)
Evidence

GH command at line 578119 (contains "number,url,reviewDecision,isDraft,headRefName,state")

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

Improved Windows Process Ancestor Detection#

What

PowerShell-based process ancestor detection now retrieves the full ancestor chain in a single call.

Details
  • Uses a more efficient PowerShell script that walks the process tree in one execution
  • Retrieves both process IDs and command lines for ancestors
  • Timeout increased from 1 second to 3 seconds for reliability
Evidence

PowerShell script at line 198756 (contains "$currentPid =", batched ancestor retrieval logic)

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

Improved API Error Logging#

What

API errors now include attempt numbers and more detailed error information.

Details
  • Format: API error (attempt N/M): status message
  • Includes full status code and message for Anthropic API errors
  • Helps diagnose retry behavior and transient failures
Evidence

Error logging at line 325950 (contains "API error (attempt")

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.

Effort Level UI Improvements#

What

The effort level selector now shows when effort is not supported for the current model.

Details
  • Displays "Effort not supported" when the model doesn't support effort configuration
  • Shows arrow key hint: "← → to adjust" when effort is supported
  • Optional model name shown: "Effort not supported for {model}"
Evidence

UI at line 486241 (contains "Effort not supported", "← → to adjust")

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

Better useAppState Error Messages#

What

Improved error messages for incorrect usage of the useAppState hook.

Details
  • Combined error for both useAppState and useSetAppState: "useAppState/useSetAppState cannot be called outside of an <AppStateProvider />"
  • New error when selector returns the whole state: "Your selector in useAppState(...) returned the original state, which is not allowed. You must instead return a property for optimised rendering."
Evidence

Error handling at line 476661 (contains "useAppState/useSetAppState cannot be called outside", "Your selector in \useAppState("`)

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

Teammate Message UI Improvements#

What

Simplified teammate message notifications in the UI.

Details
  • Changed from verbose "Queued teammate X:" to brief notification with sender's name
  • Changed from text-based "Agent idle · Task N completed" status to rendered components
  • Cleaner presentation of teammate messages in the conversation
Evidence

UI changes at line 416889, 423206 (removes "Agent idle · Task", "Queued teammate")

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

3 entries

Bug Fixesopen

#

  • Fixed escaped backslash display in terminal setup hints: now correctly shows \\ instead of \ in messages about multi-line input (p89() at line 188045, "Use backslash (\\\\) + Enter")
  • Fixed prompt caching scope constant to use 2026 date: "prompt-caching-scope-2026-01-05" (constant at line 2882)

Removed Swarm Launch from Plan Approval#

The "Yes, and launch swarm" option has been removed from the plan approval dialog. Users can still spawn teams manually using the Task tool with team_name parameter after plan approval. A hint about parallelization is now shown when appropriate: "If this plan can be broken down into multiple independent tasks, consider using a team of teammates (via the Task tool with team_name) to parallelize the work."

Evidence

Removed strings "Yes, and launch swarm", "Whether to launch a swarm to implement the plan", "Number of teammates to spawn in the swarm" and added "hasTaskTool" schema field

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.

System Prompt Dynamic Boundary#

New __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ marker added for separating static and dynamic portions of system prompts, likely for improved prompt caching behavior.

Evidence

Constant at line 550046 (contains "__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__")

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

Verbatim
Official · Anthropic

Anthropic’s official release notes

Published verbatim by Anthropic for v2.1.23. 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 customizable spinner verbs setting (spinnerVerbs)
  • Fixed mTLS and proxy connectivity for users behind corporate proxies or using client certificates
  • Fixed per-user temp directory isolation to prevent permission conflicts on shared systems
  • Fixed a race condition that could cause 400 errors when prompt caching scope was enabled
  • Fixed pending async hooks not being cancelled when headless streaming sessions ended
  • Fixed tab completion not updating the input field when accepting a suggestion
  • Fixed ripgrep search timeouts silently returning empty results instead of reporting errors
  • Improved terminal rendering performance with optimized screen data layout
  • Changed Bash commands to show timeout duration alongside elapsed time
  • Changed merged pull requests to show a purple status indicator in the prompt footer
  • [IDE] Fixed model options displaying incorrect region strings for Bedrock users in headless mode
System prompt

The system prompt was not captured for this release, so this page cannot say whether it moved.