← All changelogs v2.1.179 claude · claude-sonnet-4-6
Claude Code · Source-level changelog

Version 2.1.179

This release adds Claude Design MCP integration, a HIPAA compliance indicator, and a "not used recently" section in the model picker. It also brings multiple reliability improvements: better connection-drop messages with partial-response recovery, OAuth retry logic for remote sessions, graceful worktree cwd recovery, and clearer error messages for --json-schema, plugin SHA pins, and ultrareview size limits.

Package @anthropic-ai/claude-code Diff v2.1.178 → v2.1.179Provider claudeModel claude-sonnet-4-6
19
Features & Changes
3
Bug Fixes
2
In Development
0
Env Vars / Flags

New Features

6 items

Claude Design MCP Integration [Gradual Rollout] #

New
What

A built-in first-party MCP server called claude_design is now available, connecting to Anthropic's Design API at https://api.anthropic.com/v1/design/mcp. When enabled, Claude can mock up UI screens directly in your session. A tip reads "Use Claude Design to mock up screens before you build."

Status

Controlled by feature flag tengu_omelette_whisk. Can also be force-enabled via the environment variable CLAUDE_CODE_ENABLE_DESIGN_MCP=true.

Details
  • Server name claude_design is treated as first-party — it auto-attaches login OAuth tokens and renders with a bare name (no URL prefix in the UI)
  • Setting CLAUDE_CODE_ENABLE_DESIGN_MCP=1 bypasses the feature flag for self-hosting or testing
Evidence

Design MCP server name (search for "claude_design") and URL (search for "https://api.anthropic.com/v1/design/mcp")

HIPAA Compliance Indicator #

New
What

When your session is operating under HIPAA compliance constraints, the status bar now displays a persistent indicator: "HIPAA · some features are restricted · /status for details".

Usage
# Appears automatically in the status bar if your organization has HIPAA mode active
# Run /status to see which specific features are restricted
Details
  • The indicator uses tier "warning" styling so it stands out
  • The /status command will show the full list of restricted features
Evidence

HIPAA status bar notification (search for "HIPAA · some features are restricted")

Model Picker "Not Used Recently" Section #

New
What

The /model picker now surfaces models you haven't used in a while in a dedicated "Not used recently" section, and shows "Last used: X days ago" on individual entries. This helps you spot models you may have tried and moved away from.

Usage
/model
# Models not recently used appear in a "Not used recently" section
# Each entry shows "· Last used: 3 days ago" (or "today")
Details
  • Models are grouped in this section if they haven't been selected recently
  • The day-count label appears dimmed next to the model name
  • This section appears below Attention and Favorites in the picker
Evidence

Section header label (search for "Not used recently") and per-entry label (search for "· Last used:")

CLAUDE_CODE_ALTGR_AS_TEXT Environment Variable #

New
What

New env var for Windows users on keyboards with an AltGr key. AltGr is used on many European and international layouts to produce characters like @, , [, ], etc. — but it's also interpreted as Ctrl+Alt in Windows, which can interfere with Claude Code shortcuts.

Usage
# Force AltGr combinations to always be treated as text (recommended for most EU users)
CLAUDE_CODE_ALTGR_AS_TEXT=true claude

# Disable AltGr text mode entirely
CLAUDE_CODE_ALTGR_AS_TEXT=false claude

# Auto-detect (default): enabled if WT_SESSION is set (Windows Terminal)
Details
  • true/1 forces "force" mode — AltGr combos always produce text
  • false/0 forces "off" mode — AltGr combos pass through as Ctrl+Alt key events
  • Omitted: "auto" mode, enabled when WT_SESSION is present (Windows Terminal)
  • Only applies to printable character ranges (codepoints 32–126 and 160–55295)
Evidence

New env var handler (search for "CLAUDE_CODE_ALTGR_AS_TEXT")

CLAUDE_CODE_OTEL_DIAG_STDERR Environment Variable #

New
What

When set, OpenTelemetry diagnostic errors are written directly to stderr in addition to the internal debug log. Useful when debugging custom telemetry or OTEL integrations.

Usage
CLAUDE_CODE_OTEL_DIAG_STDERR=1 claude
# OTEL errors now appear on stderr prefixed with "[3P telemetry] OTEL diag error:"
Details
  • Without this flag, OTEL errors only appear in the internal log (visible via /debug)
  • With the flag, errors are also streamed to process.stderr immediately
  • The flag is stripped before spawning subprocesses so it doesn't leak
Evidence

New stderr path (search for "CLAUDE_CODE_OTEL_DIAG_STDERR")

CLAUDE_CODE_SUPPRESS_SESSION_ATTRIBUTION Environment Variable #

New
What

In remote sessions, Claude now adds a Claude-Session: attribution line to git commit messages and PR bodies. This new env var lets you suppress that attribution.

Usage
# Suppress session attribution in commits and PRs (remote mode only)
CLAUDE_CODE_SUPPRESS_SESSION_ATTRIBUTION=1 claude
Details
  • When attribution is active (remote session, no suppression), commit messages get a Claude-Session: <session-id> trailer
  • PR bodies get the session ID appended as a paragraph
  • Only applies in remote mode — no effect in interactive sessions
Evidence

Attribution suppression check (search for "CLAUDE_CODE_SUPPRESS_SESSION_ATTRIBUTION") and header format (search for "Claude-Session:")

Improvements

13 items

Better Error Messages for --json-schema #

New

Two new validation messages are now shown when --json-schema is passed invalid input:

  • If the value is not parseable JSON: Error: --json-schema is not valid JSON: <parse error detail>
  • If the JSON is valid but not an object (e.g., an array or string): Error: --json-schema must be a JSON object

Previously these failures silently continued with an undefined schema object.

Evidence

Validation error strings (search for "Error: --json-schema is not valid JSON:" and "Error: --json-schema must be a JSON object")

Plugin SHA Pin Verification: Clearer Errors #

New

When installing a plugin that specifies a SHA pin and verification fails, the error message is now specific about what went wrong:

SHA pin verification failed: expected HEAD to be <expected-sha>, got <actual-sha>.
The pinned commit may have been removed upstream, or a ref with the same name exists.
Refusing to install.

If the underlying git rev-parse call itself fails, the got field shows (rev-parse failed) so the root cause is always clear.

Evidence

SHA verification error (search for "SHA pin verification failed: expected HEAD to be")

Ultrareview Now Checks PR Size Before Starting #

New

The /ultrareview command now fetches additions, deletions, and changedFiles from GitHub before attempting the review. If the PR is too large, you get an early, clear error:

PR #42 is too large for ultrareview (85 files, 3,200 lines).
Split it into smaller PRs, or run `claude` on a narrower local diff.

The local-diff too-large message was also improved — it no longer suggests pushing a PR:

Before: "Push a PR and use claude <PR#>, or pass a closer base branch…" After: "Pass a closer base branch (claude <branch>) to narrow the scope, or split the change."

Evidence

Size-check error (search for "is too large for ultrareview (") and field fetch (search for "additions,deletions,changedFiles")

Git Log Isolated from Local Hooks and fsmonitor #

New

When scanning recently-added files, Claude now passes four safety flags to git:

-c core.fsmonitor=
-c core.hooksPath=/dev/null
-c core.pager=
-c log.showSignature=false

This prevents fsmonitor daemons from slowing the call, local git hooks from running, pagers from blocking output, and commit-signature verification from failing on machines without GPG. The call was occasionally slow or broken on repos with heavy hook setups.

Evidence

New git flags (search for "core.fsmonitor=" and "log.showSignature=false")

NUL Redirect Replacement Is Now Safer #

New

Claude translates Windows-style NUL redirections (e.g., 2>NUL) into /dev/null for cross-platform compatibility. This substitution is now skipped if the command contains <, $, or a backtick — characters that indicate shell expansion or redirection contexts where a static replacement would produce incorrect results.

Evidence

Safety guard (search for "H.includes(\"<\") || H.includes(\"$\") || H.includes(\"\\")"`)

ExitWorktree: Graceful cwd Recovery #

New

When exiting a git worktree, if the original working directory no longer exists (e.g., it was deleted while Claude was running in the worktree), Claude now tries fallback locations in order: the original worktree path, the home directory, and the process root. A clear message is shown:

The original directory /path/to/old-dir no longer exists, so the session is now in /home/user.
Consider restarting Claude from an existing directory.

If the fallback landed back in the worktree itself, the suggestion to restart is omitted.

Evidence

Recovery message (search for "The original directory") and log entry (search for "ExitWorktree: original directory")

Better Messages When API Connection Drops #

New

Three new user-facing messages now appear when a streaming connection is lost:

  • Mid-response (after some content was already delivered): Connection closed mid-response. The response above may be incomplete.
  • During thinking (before any content): Connection closed while thinking, before producing a response. Try again.
  • Network-level errors (ECONNRESET, EPIPE, etc.): Connection to the API was lost (<error_code>). This is usually temporary — try again.

Previously these all surfaced as generic error messages.

Evidence

Stream-drop messages (search for "Connection closed mid-response" and "Connection closed while thinking") and network-error handler (search for "Connection to the API was lost (")

OAuth Retry with Exponential Backoff in Remote Sessions #

New

When a remote session receives a 401 response and OAuth token refresh fails, the client now retries the refresh up to oauth_retry_max_attempts times with exponential backoff. During each attempt, the status shows:

OAuth refresh failed — waiting for a fresh login (1/3)

If all attempts fail: OAuth token refresh failed — re-authenticate, then re-enable Remote Control.

Evidence

Retry message (search for "OAuth refresh failed — waiting for a fresh login (") and failure message (search for "OAuth token refresh failed — re-authenticate")

Artifact Share Status Display #

New

The artifact WebFetch tool now probes the sharing status of an artifact before reading it. The mode is now shown in descriptive human-readable form instead of raw enum values:

  • "owner" → "a private page on claude.ai"
  • "org" → "a page shared with your organization"
  • "users" → "a page shared with specific users"
  • Live-shared → "on claude.ai (viewers see updates immediately)"
  • Unknown mode → "others (unrecognized share mode — treating as shared)"
Evidence

Share mode labels (search for "a private page on claude.ai" and "your organization")

Spinner State Is Now Per-Agent #

New

Internally, the status bar spinner state (responding/thinking/tool-input, compacting status, turn effort) is now tracked per agent ID in a keyed store instead of a single global singleton. This is a prerequisite for correct multi-agent displays where parallel agents each need their own status line. Spinner state for removed agents is cleaned up automatically.

Evidence

Per-agent state store (search for "defaultVerb" in spinner state initialization) and per-agent accessor (search for "n64(H.agentId)")

Tool List Truncation Notice #

New

When a tool result or file listing is too long for the context window and must be truncated, the cutoff now shows:

... and 42 more (truncated for prompt size)

Previously the list was silently cut with no indication of how much was omitted.

Evidence

Truncation notice (search for "more (truncated for prompt size)")

machineID Is Now Resilient to Storage Failures #

New

If saving the machine ID to disk fails (e.g., permissions issue), Claude now falls back to an in-memory ID for the current session rather than leaving the field empty. A warning is logged: getOrCreateMachineID: could not persist machineID: <error>.

Evidence

Fallback error log (search for "getOrCreateMachineID: could not persist machineID:")

Bug Fixes

3 items
  • Worktree cleanup (process.chdir) now catches and logs errors instead of crashing if the original directory is gone during teardown (search for "Could not chdir to original directory while cleaning up worktree:")
  • Worktree keep (process.chdir) similarly catches errors gracefully (search for "Could not chdir to original directory while keeping worktree:")
  • git core.hooksPath resolution now canonicalizes relative paths before writing them back, preventing the wrong path being stored when core.hooksPath is specified as a relative reference

In Development

2 items

Features with infrastructure added but not yet enabled for users.

Screen Reader / Accessibility Support [In Development] #

Dev
What

Infrastructure for a screen reader accessibility mode has been added under the feature flag tengu_ax_screen_reader.

Status

Feature-flagged — not yet enabled for any users. No user-visible behavior yet.

Evidence

Feature flag constant (search for "tengu_ax_screen_reader")

Precompute Compaction Setting [Gradual Rollout] #

Dev
What

A new experimental setting precomputeCompactionEnabled allows Claude to precompute the compaction summary in the background before it's actually needed, making context-window compaction faster when it triggers.

Status

Setting infrastructure exists and is wired to the settings UI, but the setting toggle is only shown when the server flag tengu_sepia_moth is enabled. The actual precompute behavior also requires this flag. The setting description reads: "@internal Precompute the compaction summary in the background before it is needed. Only applies when auto-compact is on."

Details
  • Appears in the Experimental section of /settings when enabled
  • Default value is true when the flag is active
  • Emits a tengu_precompute_compaction_setting_changed telemetry event on change
Evidence

Setting description (search for "Precompute the compaction summary in the background") and setting key (search for "precomputeCompactionEnabled")