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 textfalse/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:")
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")
Fable 5 Consent Flow Improvements #
New
Several improvements to how usage-credits-gated models (Fable 5) behave when consent hasn't been given:
- When Fable 5 is set as a teammate's default model but consent is missing, the teammate panel now shows: "Fable 5 needs usage-credits consent — /model to set up" instead of a silent failure
- A new
model_consent_fallback system event is emitted when the gated model falls back to another, carrying the choice (consent/switch_default/cancelled), original_model, fallback_model, and whether the saved default was rewritten - The model picker shows a "Reset model to the workspace default" option when relevant
Evidence
Consent fallback message (search for "Fable 5 needs usage-credits consent — /model to set up") and event type (search for "model_consent_fallback")
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:")