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.97 v2.1.100newer

Claude Code v2.1.98

25 entries read diff v2.1.97 → v2.1.98 Markdown

This release introduces the Monitor tool for streaming background events, a comprehensive Vertex AI setup wizard with credential validation and model pinning, and Perforce workspace support. It also adds subprocess environment scrubbing for enhanced security, sleep command blocking in agent mode, model-aware image processing limits, and a new --exclude-dynamic-system-prompt-sections CLI flag for improved prompt cache reuse. The Vertex AI model management system gains automatic upgrade detection and fallback capabilities.

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

New Featuresopen

Monitor Tool#

What

A new built-in tool that streams events from background scripts as live notifications in the conversation.

Usage
# Inside a Claude Code session, Claude can use the Monitor tool to:
# - Tail logs for errors
# - Watch for file changes
# - Poll GitHub for new PR comments
# - Stream events from WebSocket listeners
Details
  • Each stdout line from the script becomes a notification in the conversation
  • Events arriving within 200ms are batched into a single notification
  • Supports persistent: true mode for session-length watches (PR monitoring, log tails)
  • Supports timeout_ms for time-limited monitoring
  • Monitors that produce too many events are automatically stopped with guidance to restart using tighter filters
  • Use TaskStop to cancel a running monitor
  • Distinct from Bash with run_in_background — Monitor is for the streaming case ("tell me every time X happens"), while background Bash is for one-shot "wait until done"
Evidence

MonitorTool definition (search for "stream events from a background script as live notifications")

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

Vertex AI Setup Wizard#

What

An interactive, multi-step wizard for configuring Google Vertex AI as your model backend, with credential validation and model pinning.

Details
  • Step-by-step flow: authentication method → service account key (if applicable) → GCP project → region → credential verification → model pinning → confirmation
  • Three authentication methods: Application Default Credentials (gcloud auth), service account key file, or existing environment credentials
  • Reads existing gcloud configurations to auto-discover project IDs
  • Validates credentials by making a test API call to Vertex AI
  • Probes each model tier (Sonnet, Opus, Haiku) with a one-token request to check availability
  • Provides specific error messages for common issues: expired credentials, missing permissions, wrong region, missing API enablement
  • Model pinning option: pin specific model versions that are confirmed working, or use Claude Code defaults (auto-updates)
  • Saves configuration to ~/.claude/settings.json under the env key
  • For ADC users, reminds that gcloud auth application-default login refreshes credentials automatically
Evidence

Vertex setup wizard (search for "How do you authenticate to Google Cloud?" and "Pin model versions")

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.

Vertex AI Model Upgrade and Fallback System#

What

Automatic detection of stale Vertex model pins and probing for accessible fallback models when defaults are unavailable.

Details
  • On startup (for first-party Vertex users), Claude Code checks whether pinned model versions are outdated compared to built-in defaults
  • For each stale tier, it probes Vertex AI to verify the upgrade candidate is accessible (one-token request, 20s timeout)
  • If upgrades are found, presents a dialog to update model pins
  • Separately, detects unpinned tiers where the default model may not be accessible and finds compatible fallbacks
  • Displays warnings when fallback models are used instead of defaults
  • Logs telemetry: tengu_vertex_upgrade_check and tengu_vertex_fallback_check
  • Auto-restarts Claude Code when model configuration changes
Evidence

Vertex upgrade/fallback system (search for "[vertex-upgrade] tiersWithPin=" and "[vertex-fallback] unpinnedTiers=")

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

Perforce Workspace Support#

What

First-class support for Perforce version control workspaces, including read-only file detection and checkout guidance.

Usage
export CLAUDE_CODE_PERFORCE_MODE=1
Details
  • When enabled, Claude Code detects files that haven't been opened for edit in Perforce
  • Write tool returns a specific error message guiding users to run p4 edit <file> before modifying
  • Prevents chmod workarounds that would bypass Perforce tracking
  • System prompt includes Perforce-specific guidance for the model
Evidence

Perforce mode (search for "CLAUDE_CODE_PERFORCE_MODE" and "File is read-only — it has not been opened for edit in Perforce")

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

--exclude-dynamic-system-prompt-sections CLI Flag#

What

Moves per-machine sections (cwd, environment info, memory paths, git status) from the system prompt into the first user message to improve prompt cache reuse across users.

Usage
claude --exclude-dynamic-system-prompt-sections
Details
  • Only applies when using the default system prompt (ignored with --system-prompt)
  • Particularly useful for teams or CI environments where multiple users/machines share cached prompts
  • Defaults to false (disabled)
Evidence

CLI flag (search for "--exclude-dynamic-system-prompt-sections")

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

CLAUDE_CODE_MAX_CONTEXT_TOKENS Environment Variable#

What

Allows manual control of the maximum context token limit when automatic compaction is disabled.

Usage
export DISABLE_COMPACT=1
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=500000
Details
  • Only takes effect when DISABLE_COMPACT is set to a truthy value
  • Parses the value as an integer; ignores invalid or non-positive values
  • When compaction is disabled without this variable, the context limit message now shows "Compaction is disabled." instead of the previous autocompact instructions
Evidence

Context limit override (search for "CLAUDE_CODE_MAX_CONTEXT_TOKENS" and "Compaction is disabled.")

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

CLAUDE_CODE_SCRIPT_CAPS Environment Variable#

What

Enforces per-script call limits in subprocess-scrubbed environments to prevent data exfiltration via repeated write operations.

Usage
export CLAUDE_CODE_SCRIPT_CAPS='{"curl": 10, "wget": 5}'
Details
  • JSON object mapping script/command name substrings to maximum call counts
  • Tracks cumulative usage across the session
  • Throws an error when a cap is exceeded: "Script call limit exceeded: X has been called N times (cap: M)"
  • Only active when CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is enabled
  • Designed for untrusted-input workflows where exfiltration prevention is critical
Evidence

Script caps (search for "CLAUDE_CODE_SCRIPT_CAPS" and "Script call limit exceeded")

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

MCP Resource Templates Support#

What

Adds support for MCP resource templates, enabling template-based resource discovery with completion and icon support.

Details
  • Fetches resourceTemplates alongside existing resources during MCP server initialization
  • New mcp-template tool type detection for template-based resource access
  • Template resources get their own icon in the UI (distinct from regular mcp-resource icon)
  • Supports completions for template arguments via the MCP protocol's complete method
  • Template resource IDs use mcp-template:: and mcp-template-value:: prefixes
Evidence

MCP templates (search for "mcp-template" and "Failed to fetch resource templates")

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

11 entries

Improvementsopen

Subprocess Environment Scrubbing Enhancements#

The CLAUDE_CODE_SUBPROCESS_ENV_SCRUB feature (introduced previously) receives significant hardening in this release:

  • Requires bubblewrap (bwrap) on Linux for filesystem sandboxing; provides clear installation instructions if missing
  • Creates stub files for common dotfiles (.gitconfig, .bashrc, .npmrc, etc.) to prevent errors in sandboxed environments
  • Defines comprehensive filesystem access rules: deny-read for container sockets, deny-write for shell configs, git hooks, CI environment files, and package manager configs
  • Adds .git/info/exclude entries for scrub-mode stubs to keep git status clean
  • Forces permission mode to default when env scrubbing is active
  • New allowUnsandboxedCommands sandbox setting for fine-grained control
Evidence

Env scrub hardening (search for "bubblewrap is required for subprocess env scrubbing" and "claude-code scrub-mode stubs")

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

Sleep Command Blocking in Agent Mode#

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

Long-running foreground sleep commands (≥2 seconds) are now blocked when running in agent mode (tengu_amber_sentinel flag). This prevents agents from wasting time on unnecessary delays.

  • Detects sleep N as the first command when N ≥ 2
  • Distinguishes between standalone sleeps and sleep-then-continue patterns
  • Agents must use run_in_background: true for commands that need delays
Evidence

Sleep blocking (search for "standalone sleep" and ` "sleep N as the first command with N ≥ 2 is blocked" `)

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

Dynamic Keyboard Hint Components#

All hardcoded keyboard instruction text throughout the UI has been replaced with a reusable A8 keyboard chord component. This affects dozens of locations:

  • "Esc to cancel" → rendered via A8 chord component
  • "Enter to confirm" → rendered via A8 chord component
  • Navigation hints ("↑↓ to scroll", "← → to adjust") → rendered via A8 chord components
  • Selection hints ("Enter to select", "Tab to switch") → rendered via A8 chord components

This infrastructure enables future support for custom keybindings — the hint text will dynamically reflect any user-configured key remappings.

Evidence

Keyboard hint refactoring (search for chord: and action: in component definitions)

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.

Worktree Filtering in Session Browser#

The session/project browser UI now supports filtering by worktree:

  • "only show current worktree" / "show all worktrees" toggle options
  • Tracks active worktrees and filters the session list accordingly
Evidence

Worktree filtering (search for "only show current worktree" and "show all worktrees")

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

Model-Aware Image Processing Limits#

Image processing now respects per-model limits for dimensions and file size, rather than using global constants:

  • maxWidth, maxHeight, maxBase64Size, and targetRawSize can now vary by model
  • Default limits remain at 2000×2000 pixels, 5MB base64, and ~3.75MB target raw size
  • The imageLimits parameter is threaded through clipboard paste, content processing, and tool result handling
  • Image validation now also checks images inside tool_result content blocks (not just top-level user messages)
Evidence

Image limits (search for "imageLimits" and "targetRawSize")

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.

egrep and fgrep Support in Bash Tool#

The Bash tool's safe-command validation now recognizes egrep and fgrep as valid commands, applying the same safe flags as grep.

Evidence

egrep/fgrep support (search for "egrep" and "fgrep" in command safety checks)

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

Write Tool Directory Validation#

The Write tool now validates file modes before writing, preventing attempts to write to directories. Returns an appropriate error when the target path is a directory.

Evidence

Directory mode check (search for "& 128" bit flag validation)

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

GitHub PR mergeStateStatus#

PR queries now include the mergeStateStatus field, exposing whether a PR is in a clean, has_hooks, or unstable merge state.

Evidence

PR query enhancement (search for "mergeStateStatus")

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

Hook Error Display Improvements#

Non-blocking hook errors now extract and render stderr/stdout output more clearly, making it easier to diagnose hook failures.

Evidence

Hook error display (search for "hook_non_blocking_error")

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.

Context Limit Messaging#

The context limit reached message has been simplified. When DISABLE_COMPACT is set, the message now says "Compaction is disabled." rather than suggesting /compact.

Evidence

Context limit message (search for "Context limit reached" and "Compaction is disabled.")

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

Bedrock Configuration No Longer Requires Restart#

The Bedrock setup wizard message previously said "Bedrock configuration saved to ~/.claude/settings.json. Restart Claude Code to apply." It now simply says "Bedrock configuration saved to ~/.claude/settings.json." — the restart is handled automatically.

Evidence

String diff shows removal of "Restart Claude Code to apply" from Bedrock setup

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

1 entry

Bug Fixesopen

#

  • Fixed potential null reference when trimming text input in internal processing — added optional chaining (text?.trim()) to prevent crashes on undefined text values (search for "text?.trim()")
  • Fixed semantic version prerelease regex pattern by correcting the component order of numeric and non-numeric identifiers (search for "PRERELEASEIDENTIFIER")
  • Improved Bedrock model tier fallback logic by validating environment variable values before applying them as fallback models (search for "[bedrock-fallback]")
3 entries

In Developmentopen

Opus 4.6 Communication Style Tuning [Gradual Rollout]#

What

Differentiated system prompt instructions for Opus 4.6 models that emphasize concise, anti-verbose communication and refined code quality guidance.

Status

Feature-flagged via quiet_salted_ember (server-controlled, only applies to Opus 4.6 models)

Details
  • When enabled, adds a "Communicating with the user" prompt section instructing the model to give brief updates at key moments rather than verbose explanations
  • Includes refined code quality instructions: "Default to writing no comments. Only add one when the WHY is non-obvious"
  • Adds anti-verbosity guidance as a separate prompt category
  • Includes refined instructions about not adding features/refactoring beyond what was asked
  • The cM6() gate function checks both the model family (must include "opus-4-6") and the quiet_salted_ember flag value
Evidence

Opus 4.6 prompt tuning (gated by quiet_salted_ember, search for "Default to writing no comments" and "Communicating with the user")

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.

Sage Compass v2 [Gradual Rollout]#

Feature flag
tengu_sage_compass 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.98: 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.

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

What

Updated version of the Sage Compass feature, migrated from tengu_sage_compass to tengu_sage_compass2.

Status

Feature-flagged via tengu_sage_compass2

Details
  • The feature flag has been renamed/versioned, suggesting an iteration on the existing Sage Compass feature
  • Enabled state is checked via h8("tengu_sage_compass2", {}).enabled ?? !1 (default disabled)
Evidence

Sage Compass v2 (search for "tengu_sage_compass2")

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

Agent Mode Command Validation [Gradual Rollout]#

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

What

Validation layer that blocks certain long-running synchronous bash commands when running in agent mode.

Status

Feature-flagged via tengu_amber_sentinel

Details
  • When enabled, checks commands before execution in foreground mode
  • Blocks standalone sleep commands with duration ≥ 2 seconds
  • Designed to prevent agents from wasting time on unnecessary blocking operations
  • Commands can bypass the check by using run_in_background: true
Evidence

Agent command validation (gated by tengu_amber_sentinel, search for "standalone sleep")

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.98. 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 interactive Google Vertex AI setup wizard accessible from the login screen when selecting "3rd-party platform", guiding you through GCP authentication, project and region configuration, credential verification, and model pinning
  • Added CLAUDE_CODE_PERFORCE_MODE env var: when set, Edit/Write/NotebookEdit fail on read-only files with a p4 edit hint instead of silently overwriting them
  • Added Monitor tool for streaming events from background scripts
  • Added subprocess sandboxing with PID namespace isolation on Linux when CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set, and CLAUDE_CODE_SCRIPT_CAPS env var to limit per-session script invocations
  • Added --exclude-dynamic-system-prompt-sections flag to print mode for improved cross-user prompt caching
  • Added workspace.git_worktree to the status line JSON input, set whenever the current directory is inside a linked git worktree
  • Added W3C TRACEPARENT env var to Bash tool subprocesses when OTEL tracing is enabled, so child-process spans correctly parent to Claude Code's trace tree
  • LSP: Claude Code now identifies itself to language servers via clientInfo in the initialize request
  • Fixed a Bash tool permission bypass where a backslash-escaped flag could be auto-allowed as read-only and lead to arbitrary code execution
  • Fixed compound Bash commands bypassing forced permission prompts for safety checks and explicit ask rules in auto and bypass-permissions modes
  • Fixed read-only commands with env-var prefixes not prompting unless the var is known-safe (LANG, TZ, NO_COLOR, etc.)
  • Fixed redirects to /dev/tcp/... or /dev/udp/... not prompting instead of auto-allowing
  • Fixed stalled streaming responses timing out instead of falling back to non-streaming mode
  • Fixed 429 retries burning all attempts in ~13s when the server returns a small Retry-After — exponential backoff now applies as a minimum
  • Fixed MCP OAuth oauth.authServerMetadataUrl config override not being honored on token refresh after restart, affecting ADFS and similar IdPs
  • Fixed capital letters being dropped to lowercase on xterm and VS Code integrated terminal when the kitty keyboard protocol is active
  • Fixed macOS text replacements deleting the trigger word instead of inserting the substitution
  • Fixed --dangerously-skip-permissions being silently downgraded to accept-edits mode after approving a write to a protected path via Bash
  • Fixed managed-settings allow rules remaining active after an admin removed them, until process restart
  • Fixed permissions.additionalDirectories changes not applying mid-session — removed directories lose access immediately and added ones work without restart
  • Fixed removing a directory from additionalDirectories revoking access to the same directory passed via --add-dir
  • Fixed Bash(cmd:) and Bash(git commit ) wildcard permission rules failing to match commands with extra spaces or tabs
  • Fixed Bash(...) deny rules being downgraded to a prompt for piped commands that mix cd with other segments
  • Fixed false Bash permission prompts for cut -d /, paste -d /, column -s /, awk '{print $1}' file, and filenames containing %
  • Fixed permission rules with names matching JavaScript prototype properties (e.g. toString) causing settings.json to be silently ignored
  • Fixed agent team members not inheriting the leader's permission mode when using --dangerously-skip-permissions
  • Fixed a crash in fullscreen mode when hovering over MCP tool results
  • Fixed copying wrapped URLs in fullscreen mode inserting spaces at line breaks
  • Fixed file-edit diffs disappearing from the UI on --resume when the edited file was larger than 10KB
  • Fixed several /resume picker issues: --resume <name> opening uneditable, filter reload wiping search state, empty list swallowing arrow keys, cross-project staleness, and transient task-status text replacing conversation summaries
  • Fixed /export not honoring absolute paths and ~, and silently rewriting user-supplied extensions to .txt
  • Fixed /effort max being denied for unknown or future model IDs
  • Fixed slash command picker breaking when a plugin's frontmatter name is a YAML boolean keyword
  • Fixed rate-limit upsell text being hidden after message remounts
  • Fixed MCP tools with _meta["anthropic/maxResultSizeChars"] not bypassing the token-based persist layer
  • Fixed voice mode leaking dozens of space characters into the input when re-holding the push-to-talk key while the previous transcript is still processing
  • Fixed DISABLE_AUTOUPDATER not fully suppressing the npm registry version check and symlink modification on npm-based installs
  • Fixed a memory leak where Remote Control permission handler entries were retained for the lifetime of the session
  • Fixed background subagents that fail with an error not reporting partial progress to the parent agent
  • Fixed prompt-type Stop/SubagentStop hooks failing on long sessions, and hook evaluator API errors showing "JSON validation failed" instead of the real message
  • Fixed feedback survey rendering when dismissed
  • Fixed Bash grep -f FILE / rg -f FILE not prompting when reading a pattern file outside the working directory
  • Fixed stale subagent worktree cleanup removing worktrees that contain untracked files
  • Fixed sandbox.network.allowMachLookup not taking effect on macOS
  • Improved /resume filter hint labels and added project/worktree/branch names in the filter indicator
  • Improved footer indicators (Focus, notifications) to stay on the mode-indicator row instead of wrapping at narrow terminal widths
  • Improved /agents with a tabbed layout: a Running tab shows live subagents, and the Library tab adds Run agent and View running instance actions
  • Improved /reload-plugins to pick up plugin-provided skills without requiring a restart
  • Improved Accept Edits mode to auto-approve filesystem commands prefixed with safe env vars or process wrappers
  • Improved Vim mode: j/k in NORMAL mode now navigate history and select the footer pill at the input boundary
  • Improved hook errors in the transcript to include the first line of stderr for self-diagnosis without --debug
  • Improved OTEL tracing: interaction spans now correctly wrap full turns under concurrent SDK calls, and headless turns end spans per-turn
  • Improved transcript entries to carry final token usage instead of streaming placeholders
  • Updated the /claude-api skill to cover Managed Agents alongside Claude API
  • [VSCode] Fixed false-positive "requires git-bash" error on Windows when CLAUDE_CODE_GIT_BASH_PATH is set or Git is installed at a default location
  • Fixed CLAUDE_CODE_MAX_CONTEXT_TOKENS to honor DISABLE_COMPACT when it is set.
  • Dropped /compact hints when DISABLE_COMPACT is set.
System prompt

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