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.0.77 v2.1.1newer

Claude Code v2.1.0

11 entries read diff v2.0.77 → v2.1.0 Markdown

This release focuses on improving the SDK mode experience, enhancing git commit attribution mechanics, and cleaning up memory resources. Key improvements include context-aware error messages for SDK mode users, pre-emptive trailer injection into git commits (replacing post-commit amendment), a new paste content caching system for large content, and better OAuth URL redaction for security.

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

Changesopen

Paste Content Caching#

What

Large pasted content is now cached to disk rather than stored inline in session transcripts.

Details
  • Content larger than 1KB is stored in a separate paste-cache directory
  • Content is hashed (SHA-256, truncated to 16 chars) and stored as individual text files
  • Old paste cache files are automatically cleaned up on startup based on age
  • This reduces memory pressure and transcript file sizes for sessions with large pastes
Evidence

OMB() at line 225421, MMB() at line 225432, RMB() at line 225443 (paste storage/retrieval/cleanup, uses "paste-cache" directory)

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

Pre-emptive Git Commit Trailer Injection#

What

Git commit attribution trailers are now injected into the commit command before execution, rather than amending commits after the fact.

Details
  • Uses PreToolUse hook to intercept git commit commands
  • Injects Claude-Generated-By, Claude-Steers, Claude-Permission-Prompts, Claude-Escapes, and Claude-Plan trailers directly into the commit message
  • Supports both HEREDOC-style commit messages and quoted -m style messages
  • Eliminates race conditions and edge cases from the previous post-commit amendment approach
  • Tracks injection state via trailersInjectedForCurrentCommit flag
Evidence

x$7() at line 530968 (contains "Attribution hook: PreToolUse - Injecting trailers into git commit command")

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.

Double-Dash Argument Separator for MCP Commands#

What

The claude mcp add command now supports -- to separate the command from its arguments.

Usage
claude mcp add myserver -- node server.js --port 3000
Details
  • Allows cleaner separation when MCP server commands have their own arguments
  • Arguments after -- are passed directly to the server command
Evidence

ZC9() at line 535512 (contains "--" && Q.length > 0)

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

SDK Mode-Aware Error Messages#

Error messages for PDF and image handling now provide context-appropriate guidance based on whether Claude Code is running in SDK mode:

  • PDF too large:
  • Interactive: "PDF too large. Please double press esc to edit your message and try again."
  • SDK mode: "PDF too large. Try reading the file a different way (e.g., extract text with a CLI tool)."
  • Password-protected PDF:
  • Interactive: "PDF is password protected. Please double press esc to edit your message and try again."
  • SDK mode: "PDF is password protected. Try using a CLI tool to extract or convert the PDF."
  • Image too large:
  • Interactive: "Image was too large. Double press esc to go back and try again with a smaller image."
  • SDK mode: "Image was too large. Try resizing the image or using a different approach."
Evidence

Hi8() at line 278470, Di8() at line 278475, Fi8() at line 278480 (contain d2() SDK mode check)

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

OAuth URL Parameter Redaction#

Sensitive OAuth parameters are now redacted from URLs in logs and error messages for improved security.

Details
  • Redacts: state, nonce, code_challenge, code_verifier, code
  • Parameters are replaced with [REDACTED] in logged URLs
Evidence

gB2() at line 296262 (contains Q.searchParams.set(B, "[REDACTED]"))

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

Tool Search Mode Telemetry#

Enhanced telemetry for tool search mode decisions, providing better observability into when and why tool search is enabled or disabled.

Details
  • Logs tengu_tool_search_mode_decision events with reason codes:
  • model_unsupported, mcp_search_unavailable, tst_enabled
  • auto_above_threshold, auto_below_threshold, mcp_cli_mode, standard_mode
  • Includes MCP tool count and threshold information
Evidence

G70() at line 280942 (contains l("tengu_tool_search_mode_decision")

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

Session Data Type Classification#

Added classification of internal file paths for session memory and transcripts, enabling better handling of internal data access.

Evidence

un8() at line 282585 (returns "session_memory" or "session_transcript")

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.

Tree-Sitter Parser Memory Cleanup#

The shell command parser now properly cleans up tree-sitter AST trees after parsing to prevent memory leaks.

Details
  • Calls tree.delete() after extracting pipe positions and redirection nodes
  • Pre-extracts needed data before cleanup to avoid use-after-free
Evidence

Line 1050 in diff: return (Q.tree.delete(), !0); and line 1067: return (G.tree.delete(), new Ww2(A, Z, Y));

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

Focus Tracking State Cleanup#

Improved terminal focus tracking cleanup on exit, with proper state reset to prevent orphaned event listeners.

Evidence

Ew0() at line 457322 (contains process.stdout.write("\x1B[?1004l"), Fw0 = !1)

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

Cache Clearing on Reset#

Added explicit cache clearing when resetting application state, improving memory management.

Evidence

mD1() at line 467837 (contains hV.cache.clear?.() and multiple other cache clears)

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.

2 entries

Bug Fixesopen

#

  • Fixed potential memory leak in tree-sitter shell parser by properly deleting AST trees after use (Ww2 class at line 370359)
  • Fixed terminal focus mode not being properly disabled on exit in some cases (Tt2() at line 457328)

Year-End 2025 Rate Limit Promotion#

The holiday promotion banner displaying "A gift for you - Your rate limits are 2x higher through 12/31" has been removed as the promotion period has ended.

Evidence

Removed function re2() at line 460646, vw0() at line 460649 (contained "tengu_year_end_2025_campaign_promo")

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.0. 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 automatic skill hot-reload - skills created or modified in ~/.claude/skills or .claude/skills are now immediately available without restarting the session
  • Added support for running skills and slash commands in a forked sub-agent context using context: fork in skill frontmatter
  • Added support for agent field in skills to specify agent type for execution
  • Added language setting to configure Claude's response language (e.g., language: "japanese")
  • Changed Shift+Enter to work out of the box in iTerm2, WezTerm, Ghostty, and Kitty without modifying terminal configs
  • Added respectGitignore support in settings.json for per-project control over @-mention file picker behavior
  • Added IS_DEMO environment variable to hide email and organization from the UI, useful for streaming or recording sessions
  • Fixed security issue where sensitive data (OAuth tokens, API keys, passwords) could be exposed in debug logs
  • Fixed files and skills not being properly discovered when resuming sessions with -c or --resume
  • Fixed pasted content being lost when replaying prompts from history using up arrow or Ctrl+R search
  • Fixed Esc key with queued prompts to only move them to input without canceling the running task
  • Reduced permission prompts for complex bash commands
  • Fixed command search to prioritize exact and prefix matches on command names over fuzzy matches in descriptions
  • Fixed PreToolUse hooks to allow updatedInput when returning ask permission decision, enabling hooks to act as middleware while still requesting user consent
  • Fixed plugin path resolution for file-based marketplace sources
  • Fixed LSP tool being incorrectly enabled when no LSP servers were configured
  • Fixed background tasks failing with "git repository not found" error for repositories with dots in their names
  • Fixed Claude in Chrome support for WSL environments
  • Fixed Windows native installer silently failing when executable creation fails
  • Improved CLI help output to display options and subcommands in alphabetical order for easier navigation
  • Added wildcard pattern matching for Bash tool permissions using at any position in rules (e.g., Bash(npm ), Bash( install), Bash(git main))
  • Added unified Ctrl+B backgrounding for both bash commands and agents - pressing Ctrl+B now backgrounds all running foreground tasks simultaneously
  • Added support for MCP list_changed notifications, allowing MCP servers to dynamically update their available tools, prompts, and resources without requiring reconnection
  • Added /teleport and /remote-env slash commands for claude.ai subscribers, allowing them to resume and configure remote sessions
  • Added support for disabling specific agents using Task(AgentName) syntax in settings.json permissions or the --disallowedTools CLI flag
  • Added hooks support to agent frontmatter, allowing agents to define PreToolUse, PostToolUse, and Stop hooks scoped to the agent's lifecycle
  • Added hooks support for skill and slash command frontmatter
  • Added new Vim motions: ; and , to repeat f/F/t/T motions, y operator for yank with yy/Y, p/P for paste, text objects (iw, aw, iW, aW, i", a", i', a', i(, a(, i[, a[, i{, a{), >> and << for indent/dedent, and J to join lines
  • Added /plan command shortcut to enable plan mode directly from the prompt
  • Added slash command autocomplete support when / appears anywhere in input, not just at the beginning
  • Added --tools flag support in interactive mode to restrict which built-in tools Claude can use during interactive sessions
  • Added CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS environment variable to override the default file read token limit
  • Added support for once: true config for hooks
  • Added support for YAML-style lists in frontmatter allowed-tools field for cleaner skill declarations
  • Added support for prompt and agent hook types from plugins (previously only command hooks were supported)
  • Added Cmd+V support for image paste in iTerm2 (maps to Ctrl+V)
  • Added left/right arrow key navigation for cycling through tabs in dialogs
  • Added real-time thinking block display in Ctrl+O transcript mode
  • Added filepath to full output in background bash task details dialog
  • Added Skills as a separate category in the context visualization
  • Fixed OAuth token refresh not triggering when server reports token expired but local expiration check disagrees
  • Fixed session persistence getting stuck after transient server errors by recovering from 409 conflicts when the entry was actually stored
  • Fixed session resume failures caused by orphaned tool results during concurrent tool execution
  • Fixed a race condition where stale OAuth tokens could be read from the keychain cache during concurrent token refresh attempts
  • Fixed AWS Bedrock subagents not inheriting EU/APAC cross-region inference model configuration, causing 403 errors when IAM permissions are scoped to specific regions
  • Fixed API context overflow when background tasks produce large output by truncating to 30K chars with file path reference
  • Fixed a hang when reading FIFO files by skipping symlink resolution for special file types
  • Fixed terminal keyboard mode not being reset on exit in Ghostty, iTerm2, Kitty, and WezTerm
  • Fixed Alt+B and Alt+F (word navigation) not working in iTerm2, Ghostty, Kitty, and WezTerm
  • Fixed ${CLAUDE_PLUGIN_ROOT} not being substituted in plugin allowed-tools frontmatter, which caused tools to incorrectly require approval
  • Fixed files created by the Write tool using hardcoded 0o600 permissions instead of respecting the system umask
  • Fixed commands with $() command substitution failing with parse errors
  • Fixed multi-line bash commands with backslash continuations being incorrectly split and flagged for permissions
  • Fixed bash command prefix extraction to correctly identify subcommands after global options (e.g., git -C /path log now correctly matches Bash(git log:*) rules)
  • Fixed slash commands passed as CLI arguments (e.g., claude /context) not being executed properly
  • Fixed pressing Enter after Tab-completing a slash command selecting a different command instead of submitting the completed one
  • Fixed slash command argument hint flickering and inconsistent display when typing commands with arguments
  • Fixed Claude sometimes redundantly invoking the Skill tool when running slash commands directly
  • Fixed skill token estimates in /context to accurately reflect frontmatter-only loading
  • Fixed subagents sometimes not inheriting the parent's model by default
  • Fixed model picker showing incorrect selection for Bedrock/Vertex users using --model haiku
  • Fixed duplicate Bash commands appearing in permission request option labels
  • Fixed noisy output when background tasks complete - now shows clean completion message instead of raw output
  • Fixed background task completion notifications to appear proactively with bullet point
  • Fixed forked slash commands showing "AbortError" instead of "Interrupted" message when cancelled
  • Fixed cursor disappearing after dismissing permission dialogs
  • Fixed /hooks menu selecting wrong hook type when scrolling to a different option
  • Fixed images in queued prompts showing as "[object Object]" when pressing Esc to cancel
  • Fixed images being silently dropped when queueing messages while backgrounding a task
  • Fixed large pasted images failing with "Image was too large" error
  • Fixed extra blank lines in multiline prompts containing CJK characters (Japanese, Chinese, Korean)
  • Fixed ultrathink keyword highlighting being applied to wrong characters when user prompt text wraps to multiple lines
  • Fixed collapsed "Reading X files…" indicator incorrectly switching to past tense when thinking blocks appear mid-stream
  • Fixed Bash read commands (like ls and cat) not being counted in collapsed read/search groups, causing groups to incorrectly show "Read 0 files"
  • Fixed spinner token counter to properly accumulate tokens from subagents during execution
  • Fixed memory leak in git diff parsing where sliced strings retained large parent strings
  • Fixed race condition where LSP tool could return "no server available" during startup
  • Fixed feedback submission hanging indefinitely when network requests timeout
  • Fixed search mode in plugin discovery and log selector views exiting when pressing up arrow
  • Fixed hook success message showing trailing colon when hook has no output
  • Multiple optimizations to improve startup performance
  • Improved terminal rendering performance when using native installer or Bun, especially for text with emoji, ANSI codes, and Unicode characters
  • Improved performance when reading Jupyter notebooks with many cells
  • Improved reliability for piped input like cat refactor.md | claude
  • Improved reliability for AskQuestion tool
  • Improved sed in-place edit commands to render as file edits with diff preview
  • Improved Claude to automatically continue when response is cut off due to output token limit, instead of showing an error message
  • Improved compaction reliability
  • Improved subagents (Task tool) to continue working after permission denial, allowing them to try alternative approaches
  • Improved skills to show progress while executing, displaying tool uses as they happen
  • Improved skills from /skills/ directories to be visible in the slash command menu by default (opt-out with user-invocable: false in frontmatter)
  • Improved skill suggestions to prioritize recently and frequently used skills
  • Improved spinner feedback when waiting for the first response token
  • Improved token count display in spinner to include tokens from background agents
  • Improved incremental output for async agents to give the main thread more control and visibility
  • Improved permission prompt UX with Tab hint moved to footer, cleaner Yes/No input labels with contextual placeholders
  • Improved the Claude in Chrome notification with shortened help text and persistent display until dismissed
  • Improved macOS screenshot paste reliability with TIFF format support
  • Improved /stats output
  • Updated Atlassian MCP integration to use a more reliable default configuration (streamable HTTP)
  • Changed "Interrupted" message color from red to grey for a less alarming appearance
  • Removed permission prompt when entering plan mode - users can now enter plan mode without approval
  • Removed underline styling from image reference links
  • [SDK] Changed minimum zod peer dependency to ^4.0.0
  • [VSCode] Added currently selected model name to the context menu
  • [VSCode] Added descriptive labels on auto-accept permission button (e.g., "Yes, allow npm for this project" instead of "Yes, and don't ask again")
  • [VSCode] Fixed paragraph breaks not rendering in markdown content
  • [VSCode] Fixed scrolling in the extension inadvertently scrolling the parent iframe
  • [Windows] Fixed issue with improper rendering
System prompt

First capture in the ledger, so there is nothing to compare it against yet.

Agent SDK, print mode