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.85 v2.1.87newer

Claude Code v2.1.86

25 entries read diff v2.1.85 → v2.1.86 Markdown

This release introduces trusted device enrollment for enhanced session security, a new file read caching optimization that avoids re-reading unchanged files, and a context window usage breakdown command. It also adds Slack channel autocomplete integration, expands git/PR operation tracking beyond just git commit and gh pr create, and includes new shell safety checks for zsh equals expansion and bash array subscript injection.

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

Changesopen

Trusted Device Enrollment#

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

What

Claude Code now automatically enrolls your device as a trusted device, sending a X-Trusted-Device-Token header with API requests for enhanced session security.

Details
  • Enrollment happens automatically in the background when you're logged in via OAuth
  • Device is registered with the display name Claude Code on <hostname> · <platform>
  • The token is persisted locally and reused across sessions
  • You can override with the CLAUDE_TRUSTED_DEVICE_TOKEN environment variable
  • Enrollment can be skipped in essential-traffic mode
Evidence

Trusted device enrollment flow (search for "[trusted-device] Enrolled device_id=") — gated by tengu_sessions_elevated_auth_enforcement flag

[Gradual Rollout] — gated by the tengu_sessions_elevated_auth_enforcement feature flag.

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

File Read Caching ("Unchanged since last read")#

What

When the Read tool is used on a file that hasn't changed since a previous read in the same conversation, Claude now returns a short notice instead of re-reading the entire file, saving context window space.

Details
  • Displays "Unchanged since last read" in the tool output
  • The full message tells Claude to refer to the earlier Read tool result instead of re-reading
  • Controlled by the tengu_compact_line_prefix_killswitch feature flag (enabled when killswitch is off)
  • Helps conserve context window tokens in long conversations with repeated file reads
Evidence

Read caching message (search for "File unchanged since last read") — kf1() at line ~163425

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

Context Window Usage Breakdown#

What

A new command that provides a breakdown of your current context window usage by category (system prompt, tools, messages, etc.).

Details
  • Shows how your context budget is being consumed across different categories
  • Useful for understanding why you're running low on context or for optimizing long sessions
Evidence

Context window command (search for "Breakdown of current context window usage by category")

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

Slack Channel Autocomplete#

What

When a connected Slack MCP server is detected, Claude Code now offers channel autocomplete with #channel-name syntax.

Details
  • Automatically discovers connected Slack MCP servers
  • Searches for channels using the Slack MCP tool (supports public and private channels)
  • Parses channel names from MCP tool responses and provides autocomplete suggestions
  • Channel references use the #channel-name format in the input
Evidence

Slack channel integration (search for "Failed to fetch Slack channels") — AQK() at line ~592144

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

Expanded Git and PR Operation Tracking#

What

Claude Code now tracks a broader set of git and GitHub PR operations, beyond just git commit and gh pr create.

Details
  • Newly tracked operations: git push, gh pr edit, gh pr merge, gh pr comment, gh pr close, gh pr ready
  • Telemetry events emitted as tengu_git_operation with specific operation tags (e.g., pr_edit, pr_merge)
  • Enables better understanding of Claude's git workflow patterns
Evidence

Expanded PR regex list (search for "pr_edit") — in6 at line ~308673

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.

Shell Safety: Zsh Equals Expansion and Bash Array Subscript Checks#

What

New command safety checks that detect and flag potentially dangerous shell expansion patterns before execution.

Details
  • Zsh equals expansion (=cmd): Detects commands containing zsh =cmd syntax, which could unexpectedly expand to command paths
  • Bash array subscript injection: Flags commands where $(cmd) appears inside [[ ... ]] array subscripts, which bash arithmetically evaluates — a known injection vector
Evidence

Shell safety checks (search for "Zsh equals expansion (=cmd)" and "bash arithmetically evaluates")

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

Skill anthropic/alwaysLoad Metadata#

What

Skills can now declare anthropic/alwaysLoad in their MCP metadata to be loaded automatically without requiring explicit invocation.

Details
  • Set via _meta.["anthropic/alwaysLoad"] on the skill server
  • When true, the skill is loaded into the conversation automatically
  • Useful for skills that provide always-relevant context or capabilities
Evidence

Always-load flag (search for "anthropic/alwaysLoad")

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

Overage Credit Grant and Extra Usage Display#

The extra usage billing display has been significantly enhanced with an overage credit grant system. Users may now see their available extra usage credit amount (e.g., "$5 in extra usage") along with the message "On us. Works on third-party apps · /extra-usage". The system fetches grant info from a new /overage_credit_grant API endpoint and caches it per-organization.

Evidence

Overage credit display (search for "On us. Works on third-party apps · /extra-usage") — LE6() at line ~424063

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

Ultrareview Billing Now Org-Scoped#

The ultrareview billing prompt now says "Your free ultrareviews for this organization are used" instead of the previous user-scoped message. This aligns with organization-level billing. The ultrareview billing dialog also now supports abort signals and shows a "Launching…" state.

Evidence

Org-scoped billing text (search for "Your free ultrareviews for this organization are used")

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

Compact Line Number Prefix Format#

The Read tool output format is being updated from spaces + line number + arrow to a more compact line number + tab format. The Edit tool description dynamically adapts to tell the model which format is in use, reducing confusion when matching indentation.

Evidence

Dynamic format description (search for "line number + tab") — controlled by tengu_compact_line_prefix_killswitch

[Gradual Rollout] — gated by tengu_compact_line_prefix_killswitch feature flag.

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

XAA (Cross-App Access) Protocol Expansion#

The MCP OAuth cross-app access (XAA) system has received a major expansion with full PRM (Protected Resource Metadata) discovery, AS (Authorization Server) metadata discovery, and a two-stage token exchange flow (ID token → ID-JAG → access token). New --xaa, --client-id, and --client-secret flags are now available for MCP server configuration. A dedicated XaaTokenExchangeError class provides better error handling with per-stage failure tracking.

Evidence

XAA protocol flow (search for "XAA: starting cross-app access flow") — eB1() at line ~327934

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.

Auto Mode Plan-Gating Message#

The message when auto mode is unavailable has been updated from "Auto mode temporarily unavailable" to the more informative "Auto mode is unavailable for your plan", clarifying that the limitation is plan-based rather than temporary.

Evidence

Plan-gating message (search for "Auto mode is unavailable for your plan")

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

Agent System Prompt Refinements#

Agent system prompts have been refined with more specific guidance:

  • New "don't gold-plate" phrasing: "Complete the task fully—don't gold-plate, but don't cut corners"
  • More emphatic $TMPDIR guidance: "TMPDIR is automatically set to the correct sandbox-writable directory" (removed fallback variable mention)
  • New guidance on failure handling: "diagnose why before switching tactics—read the error, check your assumptions, try a focused fix"
  • Fork workers now use a "Your directive:" prefix with a "fork-boilerplate" key instead of embedded boilerplate text
  • Summary format now strictly requires <analysis> and <summary> blocks with tool-call prohibition: "CRITICAL: Respond with TEXT ONLY. Do NOT call any tools"
Evidence

Agent prompt changes (search for "Your directive:" and "CRITICAL: Respond with TEXT ONLY")

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

Ultrareview Suggests /ultrareview <PR#> for Large Repos#

When a repository is too large for full-repo review, the suggestion now says "Push a PR and use /ultrareview <PR#> instead" (previously referenced /review).

Evidence

Large repo message (search for "Repo is too large. Push a PR and use")

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 Telemetry Overhaul#

Plugin analytics have been comprehensively restructured with hashed plugin IDs, scope classification (official, org, user-local, default-bundle), and per-session tracking of enabled plugins. Load failures are now categorized (network, not-found, permission, validation, unknown) and reported with plugin-level metadata.

Evidence

Plugin telemetry (search for "tengu_plugin_enabled_for_session") — sC() at line ~431412

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

Stdout JSON Guard#

A new stdout guard (streamJsonStdoutGuard) diverts non-JSON lines that accidentally leak to stdout, preventing them from corrupting structured JSON output in headless/piped modes.

Evidence

Stdout guard (search for "streamJsonStdoutGuard diverted non-JSON stdout line:")

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

File Diff Rendering with Streaming I/O#

The Write and Edit tool result renderers now use a new streaming file-read approach (ur6() / Pm1()) that reads files through file handles with buffer-based needle search, rather than loading entire files into memory. This improves performance for large file edits by seeking directly to the relevant region.

Evidence

Streaming file read (search for "Skipping raw transcript read: file too large") — Pm1() at line ~317956

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

1 entry

Bug Fixesopen

#

  • Directory removal is now more robust — uses a single rmdir call and handles ENOTDIR/ENOENT/ENOTEMPTY errors gracefully instead of manually checking if a directory is empty first (search for "Could not remove directory at")
  • Lock acquisition failure logging simplified — always wraps errors with a cause chain instead of conditionally stringifying (search for "NON-FATAL: Lock acquisition failed")
  • Skill usage tracking now debounces writes with a minimum interval, preventing rapid config updates when a skill is invoked repeatedly (search for "skillUsage" in bI8())
  • SwarmPermissionPoller now validates and drops malformed permission update entries with a warning instead of crashing (search for "[SwarmPermissionPoller] Dropping malformed permissionUpdate")
  • Advisor feedback message wording corrected: "will apply the feedback" (was: "will now apply the feedback.") (search for "Advisor has reviewed the conversation and will apply the feedback")
1 entry

Notesopen

#

  • The CLAUDE_CODE_ENABLE_XAA=1 environment variable is required to use XAA features. Without it, servers configured with oauth.xaa will error on startup.
  • The --xaa, --client-id, and --client-secret flags are only supported for HTTP/SSE MCP transports and will be ignored for stdio.
  • The compact line prefix format and trusted device enrollment are behind feature flags and may not be active for all users yet.

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.86. 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 X-Claude-Code-Session-Id header to API requests so proxies can aggregate requests by session without parsing the body
  • Added .jj and .sl to VCS directory exclusion lists so Grep and file autocomplete don't descend into Jujutsu or Sapling metadata
  • Fixed --resume failing with "tool_use ids were found without tool_result blocks" on sessions created before v2.1.85
  • Fixed Write/Edit/Read failing on files outside the project root (e.g., ~/.claude/CLAUDE.md) when conditional skills or rules are configured
  • Fixed unnecessary config disk writes on every skill invocation that could cause performance issues and config corruption on Windows
  • Fixed potential out-of-memory crash when using /feedback on very long sessions with large transcript files
  • Fixed --bare mode dropping MCP tools in interactive sessions and silently discarding messages enqueued mid-turn
  • Fixed the c shortcut copying only ~20 characters of the OAuth login URL instead of the full URL
  • Fixed masked input (e.g., OAuth code paste) leaking the start of the token when wrapping across multiple lines on narrow terminals
  • Fixed official marketplace plugin scripts failing with "Permission denied" on macOS/Linux since v2.1.83
  • Fixed statusline showing another session's model when running multiple Claude Code instances and using /model in one of them
  • Fixed scroll not following new messages after wheel scroll or click-to-select at the bottom of a long conversation
  • Fixed /plugin uninstall dialog: pressing n now correctly uninstalls the plugin while preserving its data directory
  • Fixed a regression where pressing Enter after clicking could leave the transcript blank until the response arrived
  • Fixed ultrathink hint lingering after deleting the keyword
  • Fixed memory growth in long sessions from markdown/highlight render caches retaining full content strings
  • Reduced startup event-loop stalls when many claude.ai MCP connectors are configured (macOS keychain cache extended from 5s to 30s)
  • Reduced token overhead when mentioning files with @ — raw string content no longer JSON-escaped
  • Improved prompt cache hit rate for Bedrock, Vertex, and Foundry users by removing dynamic content from tool descriptions
  • Memory filenames in the "Saved N memories" notice now highlight on hover and open on click
  • Skill descriptions in the /skills listing are now capped at 250 characters to reduce context usage
  • Changed /skills menu to sort alphabetically for easier scanning
  • Auto mode now shows "unavailable for your plan" when disabled by plan restrictions (was "temporarily unavailable")
  • [VSCode] Fixed extension incorrectly showing "Not responding" during long-running operations
  • [VSCode] Fixed extension defaulting Max plan users to Sonnet after the OAuth token refreshes (8 hours after login)
  • Read tool now uses compact line-number format and deduplicates unchanged re-reads, reducing token usage
System prompt

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