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.69 v2.1.71newer

Claude Code v2.1.70

28 entries read diff v2.1.69 → v2.1.70 Markdown

This release adds incremental MCP server instruction delivery (delta-based), a token-saving output compression system for Bash tool results, and improved CA certificate handling from Claude Code config. It also introduces a "fork" agent mode (feature-flagged), softens "kill" terminology to "stop" across the UI, fixes clipboard error messages on Windows/WSL, and includes numerous rendering and stability improvements.

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

Changesopen

Token Saver for Bash Output#

What

Bash tool results can now send a compressed version of output to the model while the UI still displays the full uncompressed stdout, reducing token usage on large command outputs.

Details
  • A new tokenSaverOutput field is added to the Bash tool result schema
  • When token-saver is active, the model receives a compressed representation while users see full output
  • Helps conserve context window on commands with verbose output
Evidence

New schema field with description "Compressed output sent to model when token-saver is active (UI still uses stdout)" (search for "tokenSaverOutput")

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

CA Certificate Configuration from Settings#

What

Claude Code now reads NODE_EXTRA_CA_CERTS from your config and user settings files, applying them automatically at startup — no need to set environment variables manually.

Details
  • On startup, if NODE_EXTRA_CA_CERTS is not already set in the environment, Claude Code checks globalConfig.env and userSettings.env for the path
  • Supports --use-system-ca flag to load system CA certificates via the Node.js tls.getCACertificates API
  • Custom CA certificates are now also applied to WebSocket connections (both Bun and Node.js)
  • Cache clearing added for CA certificates, mTLS configuration, and proxy agents
Evidence

CA certificate loader (search for "CA certs: Applied NODE_EXTRA_CA_CERTS from config to process.env")

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 Indicator#

What

A visual indicator in the input box border now shows the current reasoning effort level (low, medium, high, or max) using colored block characters.

Details
  • Displays 1–3 filled blocks based on effort level (1 for low, 2 for medium, 3 for high/max)
  • Shows alongside model name and /fast mode indicator when present
  • Controlled by existing effort level settings
Evidence

Effort-to-dots mapping function (search for "▪") and effort indicator builder $Qq/Cgz at line ~258963

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

Session Color Reset#

What

The /color command now accepts default as a valid argument to reset session color.

Details
  • Argument hint changed from <color> to <color|default>
  • Resetting displays "Session color reset to default"
  • Color values "default", "reset", "none", "gray", and "grey" are treated as reset values
Evidence

Updated argument hint (search for "<color|default>") and reset color list (search for "Session color reset to default")

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

Bridge Pointer for Worktree-Aware Reconnection#

What

Remote session reconnection now supports git worktrees by writing and discovering bridge-pointer.json files across worktree directories.

Details
  • A bridge-pointer.json file stores sessionId, environmentId, and source for reconnection
  • When reconnecting, Claude Code searches across git worktrees to find an active session pointer
  • Pointers older than 4 hours are automatically cleared
  • Fanout search is capped to prevent performance issues with many worktrees
Evidence

Bridge pointer system (search for "bridge-pointer.json") and worktree fanout (search for "[bridge:pointer] fanout found pointer in worktree")

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

Session Metadata Files#

What

Session transcripts now have companion .meta.json files that store additional metadata about each session.

Details
  • Metadata files are stored alongside session .jsonl transcripts
  • Written and read via dedicated helpers
  • Errors on inaccessible files are handled gracefully (ENOENT, EACCES, EPERM)
Evidence

Metadata file handler (search for ".meta.json")

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.

CCR v2 Worker Registration#

What

A new CCR v2 worker registration flow enables Claude Code to register workers with session servers via a /worker/register endpoint.

Details
  • Workers register and receive a worker_epoch from the server
  • Epoch mismatch (409) handling is now callback-based instead of hard process.exit(1)
  • Enables reconnection flows and transport handoff in CCR v2 sessions
  • Worker registration is also available for standalone session creation (not just environment-based)
Evidence

Worker registration function (search for "/worker/register") and epoch handling (search for "epoch superseded")

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

"Kill" Terminology Changed to "Stop"#

Background agent management now uses softer language throughout the UI:

  • "Press ctrl+f again to kill background agents" → "Press ctrl+f again to stop background agents"
  • "Background agents were killed by the user" → "Background agents were stopped by the user"
  • Agent status label changed from "Killed" to "Stopped"
  • Command keywords: kill agentsstop agents, kill all agentsstop all agents
Evidence

Terminology change (search for "stop agents") replacing old (search for "kill agents")

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 Clipboard Error Messages on Windows/WSL#

Clipboard copy failure messages now suggest both PowerShell and clip as alternatives:

  • Windows: "Make sure powershell or clip is available on your system"
  • WSL: "Make sure powershell.exe or clip.exe is available in your WSL environment"
Evidence

Updated error messages (search for "powershell.exe")

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

Task Tool: Simplified Background Agent Notifications#

The Task tool's run_in_background description was simplified from "The tool result will include an output_file path — use Read tool or Bash tail to check on output" to "You will be notified when it completes."

Evidence

Updated background description (search for "You will be notified when it completes")

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.

Task Tool: Agent Resume Support Documented#

The Task tool's system prompt now documents that agents can be resumed using the resume parameter, that agent outputs should generally be trusted, and includes guidance on distinguishing research vs. code-writing tasks.

Evidence

New prompt text (search for "Agents can be resumed using the \resume\ parameter")

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

Better Voice Recording No-Audio Detection#

Voice recording now distinguishes between "no audio detected from microphone" (hardware/permission issue) and "no speech detected" (audio received but no speech recognized), providing more actionable error messages.

Evidence

Improved error message (search for "No audio detected from microphone")

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

MCP Instructions Now Delivered as Deltas#

MCP server instructions are now delivered incrementally as a new mcp_instructions_delta attachment type, sending only added/removed server instructions instead of the full set each turn. Falls back to the previous full-set approach when the tengu_basalt_3kr feature flag is disabled.

Evidence

Delta attachment handler (search for "mcp_instructions_delta")

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

MIME Type Database Removed (Bundle Size Reduction)#

The full IANA MIME type database (~4000+ entries) has been replaced with stubs that throw descriptive errors, significantly reducing bundle size. The stubs warn against relying on axios auto-multipart serialization.

Evidence

Stub implementation (search for "mime-types." and "is stubbed in this build")

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

mkdir Race Condition Fix#

Both async and sync mkdir with recursive: true now catch EEXIST errors, fixing race conditions where parallel operations could fail when two processes try to create the same directory simultaneously.

Evidence

EEXIST handling in mkdir (search for "EEXIST" in the filesystem module at line ~3495)

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

Remote Mode: Restricted defaultMode Settings#

When running in CLAUDE_CODE_REMOTE, only acceptEdits, plan, and default are allowed as defaultMode values. Other modes are silently ignored with a warning logged.

Evidence

Remote mode restriction (search for "is not supported in CLAUDE_CODE_REMOTE")

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.

ToolSearch Disabled for Non-First-Party Hosts#

Optimistic ToolSearch is now properly disabled when ANTHROPIC_BASE_URL points to a non-first-party Anthropic host, preventing unnecessary tool search requests that would fail.

Evidence

Host check (search for "[ToolSearch:optimistic] disabled: ANTHROPIC_BASE_URL=")

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.

Plugin Auto-Refresh After Background Install#

After marketplace plugins are installed in the background, Claude Code now auto-refreshes the plugin list immediately instead of just setting a needsRefresh flag, reducing the need for manual refresh.

Evidence

Auto-refresh logic (search for "Auto-refreshing plugins after")

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: New Environment Variables#

  • CLAUDE_CODE_ALWAYS_ENABLE_EFFORT: Force-enables the effort/reasoning level selector for all models
  • CLAUDE_CODE_EFFORT_LEVEL: Override the effort level (set to "unset" to disable)
  • Third-party models no longer unconditionally get effort level support; it's now checked against first-party host detection
Evidence

New env vars (search for "CLAUDE_CODE_ALWAYS_ENABLE_EFFORT" and "CLAUDE_CODE_EFFORT_LEVEL")

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

Rendering: Frame Contamination Tracking#

Terminal rendering now tracks whether the previous frame was "contaminated" (had selection overlays or image clears), preventing unnecessary full-screen redraws and reducing flickering in alt-screen mode.

Evidence

New prevFrameContaminated property (search for "prevFrameContaminated")

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

Text Input: Improved Carriage Return Handling#

The text input editor now strips trailing \r from single-line inputs more precisely and handles multi-line paste with trailing carriage returns, which improves behavior when pasting from Windows clipboard sources.

Evidence

CR handling in input editor (structural change in function Uy1 at line ~452368)

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

Git Watcher Initialization Order Fix#

The git file watcher now sets this.initialized = true after (instead of before) calling gitDir(), preventing a race where the watcher could report as initialized before knowing the git directory.

Evidence

Initialization reorder in ZFA class (search for "this.initialized" near "this.gitDir")

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

3 entries

Bug Fixesopen

#

  • Fixed clipboard copy on Windows/WSL to suggest PowerShell as an alternative when clip/clip.exe is unavailable (search for "powershell")
  • Fixed AskUserQuestion tool input schema being re-parsed on every render by wrapping in useMemo (search for "inputSchema.safeParse")
  • Fixed remote hook (useRemoteMode) return value not being memoized, causing unnecessary re-renders (search for "useMemo" in vQq)
  • Fixed destructive command warning and sandboxing check not being memoized in permission prompts (search for "destructiveWarning")
  • Fixed permission animation timer starting before component is visible by using null initial delay when K is true (search for "lc6")
  • Fixed CLAUDE_CODE_EXTRA_BODY env var to shallow-copy parsed object, preventing mutations to the cached parse result (search for "CLAUDE_CODE_EXTRA_BODY")
  • Fixed WebFetch HTML-to-Markdown converter (Turndown) being loaded eagerly; it's now lazy-loaded via dynamic import (search for "turndown")
  • Fixed Bash command argument parser to use case-insensitive comparison for command names like python/Python3 (search for "python3")
  • Fixed early return from onSubmit when bridge reconnection is active, preventing accidental message submission (search for "[onSubmit] early return")
  • Fixed deferred context attachments (tips, changed files) leaking empty arrays when no items are found by adding early-return checks (search for "if (K.length === 0) return []")

Fork Agent [Feature-Flagged]#

What

A new "fork" agent type for the Task tool that creates a copy of the current conversation context to process a task in the background.

Status

Feature-flagged — only triggers when the fork experiment is active.

Details
  • When the fork experiment is active, omitting subagent_type from the Task tool creates a fork instead of using the general-purpose agent
  • Forks inherit the full conversation context from the parent
  • Fork workers cannot create nested forks ("Fork is not available inside a forked worker")
  • Uses permissionMode: "bubble" to propagate permission requests to the parent
  • System prompt indicates: "You are a forked worker process" with worktree context awareness
  • Maximum 200 turns per fork
Evidence

Fork agent definition (search for "You are a forked worker process") and fork config (search for "Implicit fork")

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

BTW Side Questions Gating [Feature-Flagged]#

Feature flag
tengu_marble_whisper On for this account, and not off by default

The flag server returned on for the one account this site reads, and nothing in this release compiles it off by default. The compiled default is shown below, and says which it is when we cannot read one: a fifth of gates compile in a string or a number rather than on or off, and most published releases have no gate table behind them at all. No client can see what the server returns for your account.

This account: on · anonymous baseline: on · compiled default in v2.1.70: 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.70. It isn't a statement about your account. What a flag value here can and cannot tell you

What

The BTW side-question feature, previously hardcoded as disabled (w1(void 0) which was always false), is now properly gated behind the tengu_marble_whisper feature flag.

Status

Feature-flagged via tengu_marble_whisper (default false)

Details
  • All three references to the BTW feature (tip display, input parser, spinner tip) now check gz6() which reads tengu_marble_whisper
  • This means the feature can be enabled server-side without a client update
Evidence

Feature gate function (search for "tengu_marble_whisper")

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

1 entry

Notesopen

#

  • The coral_reef_sonnet client data flag was added, checked via YgA() — this may gate future model-related behavior (search for "coral_reef_sonnet")
  • A kairosActive flag was added to session telemetry, tracked as is_assistant_mode in analytics (search for "kairosActive")
  • The telemetry event tengu_session_quality_classification was replaced by tengu_session_file_read (search for "tengu_session_file_read")
  • The "server" subcommand infrastructure (including WebSocket server, session management, auth tokens, direct-connect protocol, and cc+unix:// URL scheme) has been removed, suggesting the standalone server mode has been deprecated in favor of the CCR bridge architecture
Verbatim
Official · Anthropic

Anthropic’s official release notes

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

  • Fixed API 400 errors when using ANTHROPIC_BASE_URL with a third-party gateway — tool search now correctly detects proxy endpoints and disables tool_reference blocks
  • Fixed API Error: 400 This model does not support the effort parameter when using custom Bedrock inference profiles or other model identifiers not matching standard Claude naming patterns
  • Fixed empty model responses immediately after ToolSearch — the server renders tool schemas with system-prompt-style tags at the prompt tail, which could confuse models into stopping early
  • Fixed prompt-cache bust when an MCP server with instructions connects after the first turn
  • Fixed Enter inserting a newline instead of submitting when typing over a slow SSH connection
  • Fixed clipboard corrupting non-ASCII text (CJK, emoji) on Windows/WSL by using PowerShell Set-Clipboard
  • Fixed extra VS Code windows opening at startup on Windows when running from the VS Code integrated terminal
  • Fixed voice mode failing on Windows native binary with "native audio module could not be loaded"
  • Fixed push-to-talk not activating on session start when voiceEnabled: true was set in settings
  • Fixed markdown links containing #NNN references incorrectly pointing to the current repository instead of the linked URL
  • Fixed repeated "Model updated to Opus 4.6" notification when a project's .claude/settings.json has a legacy Opus model string pinned
  • Fixed plugins showing as inaccurately installed in /plugin
  • Fixed plugins showing "not found in marketplace" errors on fresh startup by auto-refreshing after marketplace installation
  • Fixed /security-review command failing with unknown option merge-base on older git versions
  • Fixed /color command having no way to reset back to the default color — /color default, /color gray, /color reset, and /color none now restore the default
  • Fixed a performance regression in the AskUserQuestion preview dialog that re-ran markdown rendering on every keystroke in the notes input
  • Fixed feature flags read during early startup never refreshing their disk cache, causing stale values to persist across sessions
  • Fixed permissions.defaultMode settings values other than acceptEdits or plan being applied in Claude Code Remote environments — they are now ignored
  • Fixed skill listing being re-injected on every --resume (~600 tokens saved per resume)
  • Fixed teleport marker not rendering in VS Code teleported sessions
  • Improved error message when microphone captures silence to distinguish from "no speech detected"
  • Improved compaction to preserve images in the summarizer request, allowing prompt cache reuse for faster and cheaper compaction
  • Improved /rename to work while Claude is processing, instead of being silently queued
  • Reduced prompt input re-renders during turns by ~74%
  • Reduced startup memory by ~426KB for users without custom CA certificates
  • Reduced Remote Control /poll rate to once per 10 minutes while connected (was 1–2s), cutting server load ~300×. Reconnection is unaffected — transport loss immediately wakes fast polling.
  • [VSCode] Added spark icon in VS Code activity bar that lists all Claude Code sessions, with sessions opening as full editors
  • [VSCode] Added full markdown document view for plans in VS Code, with support for adding comments to provide feedback
  • [VSCode] Added native MCP server management dialog — use /mcp in the chat panel to enable/disable servers, reconnect, and manage OAuth authentication without switching to the terminal
System prompt

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