"description":"Create distinctive, production-grade frontend interfaces with high design quality. Generates creative, polished code that avoids generic AI aesthetics.",
- Added `/config key=value` syntax to set any setting from the prompt (e.g. `/config thinking=false`) — works in interactive, `-p`, and Remote Control
- Added `sandbox.allowAppleEvents` opt-in setting that lets sandboxed commands send Apple Events on macOS
- Added `CLAUDE_CLIENT_PRESENCE_FILE` environment variable: point it at a marker file to suppress mobile push notifications while you're at the machine
- Upgraded the bundled Bun runtime to 1.4
- Improved streaming of long paragraphs: text now appears line-by-line instead of waiting for the first line break
- Improved auto-retry: API connection drops mid-thinking now automatically retry instead of showing "Connection closed while thinking"
- Improved the subagent panel: idle subagents auto-hide after 30s, the list caps at 5 rows with scroll hints, and keyboard hints now show in the footer
- Improved the MCP OAuth browser page to match Claude Code's visual style and auto-close on success
- Changed the `Improved N memories` line to no longer list individual files outside verbose mode
- Fixed prompt caching not reading on custom `ANTHROPIC_BASE_URL` and on Foundry due to a per-request attestation token changing every turn
- Fixed Write/Edit producing 0-byte or truncated files on network drives and cloud-synced folders
- Fixed `open`, `osascript`, and browser-based auth flows failing with error -600 on macOS by adding the Apple Events entitlement
- Fixed a startup regression (~120ms per launch in fresh environments, introduced in 2.1.169): the first prompt no longer waits for the managed-settings fetch when no MCP servers are configured
- Fixed startup blocking with a blank terminal for up to 15 seconds when the account settings fetch is slow on a degraded network
- Fixed startup crash (`TypeError: Cannot read properties of null`) when `.claude.json` contains corrupted null project entries
- Fixed macOS TUI freezing at session start (Ctrl+C unresponsive) when Spotlight is busy reindexing
- Fixed long-running idle sessions losing their history when another Claude Code process ran the 30-day transcript cleanup
- Fixed foreground subagents spawning unbounded nested chains; they now respect the same 5-level depth limit as background subagents
- Fixed `/recap` and conversation forks using the previous model immediately after a model switch
- Fixed subagent "Thinking" duration showing the parent agent's elapsed time instead of the subagent's own
- Fixed subagents blocked on a nested agent showing a ticking elapsed time instead of "waiting" in the agent panel
- Fixed the API retry indicator ("Retrying in 0s · attempt N/10") staying on screen after the retry succeeded
- Fixed AWS `awsCredentialExport` credentials with a short remaining lifetime causing credential refreshes every minute, and now accepts the JSON shape from `aws configure export-credentials`
- Fixed `claude mcp get`/`list` showing `✓ Connected` when tools/list fails; they now show `! Connected · tools fetch failed` with the error detail
- Fixed `/remote-control` leaving a stale "connecting…" line; it now confirms in the transcript once connected
- Fixed ExitWorktree refusing to remove a clean worktree with "Could not verify worktree state" when bare `git` cannot be resolved on Windows
- Fixed settings changes (such as `/effort` or `/model`) failing with ENOENT when `~/.claude/settings.json` is a relative symlink under a symlinked `~/.claude`
- Fixed IDE selection line numbers in context reminders being off by one (IntelliJ and VS Code)
- Fixed Ctrl+C in fullscreen after a native terminal selection (modifier+drag) overwriting the clipboard with the app's prior selection
- Fixed Ctrl+V showing "No image found in clipboard" instead of pasting when the clipboard contains text
- Fixed agent creation failing with "EEXIST: file already exists" when the agents directory already exists (Windows/OneDrive)
- Fixed AskUserQuestion preview content being cut off at the dialog edge instead of word-wrapping
- Fixed AskUserQuestion multi-select questions silently dropping a typed "Other" free-text answer when submitting
- Fixed `/stats` "Most active day" and daily token chart dates showing one day early in UTC-negative timezones
- Fixed `/copy` and copy-on-select on Linux not detecting a clipboard utility installed after Claude Code started
- Fixed tab-indented code rendering with incorrect indentation in the Write (create-file) preview
- Fixed user prompts queued mid-turn not showing a full-width background highlight in the transcript
- Fixed the activity spinner's pulse dwelling on the wrong glyph size in Ghostty
## 2.1.179
- Fixed mid-stream connection drops: partial responses are now preserved instead of showing a raw error, and the spinner no longer gets stuck at "running tool"
- Fixed mouse-wheel scrolling in WSL2 under Windows Terminal and VS Code (regression in 2.1.172)
- Fixed a sandbox `denyRead`/`allowRead` glob over a large directory tree making the Bash tool description enormous and the session unusable on Linux
- Fixed the feedback survey capturing a single-digit reply as a session rating immediately after a turn completes
- Fixed the welcome screen stacking multiple promotional banners — at most one promo now shows per session
- Fixed Ctrl+O not showing the subagent's transcript when viewing a subagent
- Fixed clicking the prompt input not returning focus from the subagent/footer panel
- Fixed remote session background tasks appearing stuck as "still running" between turns
- Improved plugin loading performance in remote sessions
## 2.1.178
- Added `Tool(param:value)` syntax for permission rules to match a tool's input parameters (with `*` wildcard), e.g. `Agent(model:opus)` to block Opus subagents
- Skills in nested `.claude/skills` directories now load when working on files there; on a name clash, the nested skill appears as `<dir>:<name>` so both stay available
- Nested `.claude/` directories: the agent, workflow, and output-style closest to the working directory now wins when names collide; project-scope workflow saves now target the closest existing `.claude/workflows/`
- Improved auto mode: subagent spawns are now evaluated by the classifier before launch, closing a gap where a subagent could request a blocked action without review
- Improved `/doctor` with consistent flat tree layout across all sections, clearer section status icons, and highlighted command names
- Improved the skill listing truncation warning to show how many skill descriptions are affected
- Changed the workflow prompt keyword to use a purple shimmer highlight and trigger only on explicit phrases like "run a workflow" or "workflow:", not on any mention of the word
- Improved Remote Control error messages: connection failures now show a persistent red "/rc failed" indicator in the footer, and the "not yet enabled" error now explains whether it's a gate, a check failure, stale entitlement, or org policy
-`/bug` now requires a description before submitting, and no longer uses model-refusal text as the GitHub issue title
- Fixed a crash (out-of-memory) when the CLI inherits a stale websocket/OAuth file-descriptor environment variable from a parent process
- Fixed Claude in Chrome silently failing to connect when the OAuth token belongs to a different account than the Claude Code login
- Fixed nested `.claude/skills` skills with directory-qualified names being blocked by permission prompts in non-interactive runs
- Fixed several subagent issues: viewing a subagent's transcript now shows tool results and live progress, messages sent while it finishes its turn are no longer dropped, and backgrounding a running subagent (ctrl+b) no longer restarts it from scratch
- Fixed `claude agents` workers failing with `401 Invalid bearer token` when the daemon was started from a shell with a custom API gateway via `ANTHROPIC_BASE_URL` and `ANTHROPIC_AUTH_TOKEN`
- Fixed compaction not honoring `--fallback-model`: compaction now falls back to the configured fallback model chain on overload or model-availability errors
- Fixed model requests continuing to fail with auth errors after credentials were refreshed outside the session, due to a stale cached request configuration
- Fixed background sessions created with `/bg` or `←←` after a turn finished showing "Working" forever in the agents list
- Fixed Linux sandbox failing to start when `.claude/skills` or `.claude/hooks` is a symlink
- Fixed `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` preventing fresh marketplace installs from cloning
- Fixed MCP server-level specs (`mcp__server`, `mcp__server__*`, `mcp__*`) in subagent `disallowedTools` being silently ignored
- Fixed vim mode undo: `u` now steps through NORMAL/VISUAL-mode commands one at a time instead of merging commands in quick succession into a single undo step
- Fixed statusline links with custom URI schemes (e.g. `vscode://`) not opening when clicked in `claude agents`
- [VSCode] Fixed pressing Esc to dismiss a CJK IME candidate window canceling the running Claude task
## 2.1.176
- Session titles are now generated in the language of your conversation (set the `language` setting to pin a specific language)
- Added `footerLinksRegexes` setting for regex-matched link badges in the footer row, configurable via user or managed settings
- Improved Bedrock credential caching: credentials from `awsCredentialExport` are now cached until their `Expiration` instead of a fixed 1 hour
- Fixed `availableModels` enforcement: alias model picks can no longer be redirected to a blocked model via `ANTHROPIC_DEFAULT_*_MODEL` environment variables, and `/fast` now refuses to toggle when it would switch to a model outside the allowlist
- Fixed auto mode failing on Fable 5 for organizations without Opus 4.8 enabled — the classifier now falls back to the best available Opus model
- Fixed hook `if` conditions for Read/Edit/Write tool paths: documented patterns like `Edit(src/**)`, `Read(~/.ssh/**)`, and `Read(.env)` now match correctly
- Fixed Linux sandbox failing to start when `.claude/settings.json` is a symlink with an absolute target
- Fixed `/copy` and mouse-selection copy not reaching the system clipboard inside tmux over SSH, and tmux paste buffer not loading on versions older than 3.2
- Fixed Remote Control connecting from web/mobile silently switching the session's model
- Fixed Remote Control disconnect notifications showing a bare numeric code instead of a human-readable reason, and connection failures adding a duplicate line to the conversation transcript
- Fixed Remote Control sessions not disconnecting when you sign in to a different account
- Fixed `/cd` and worktree moves leaving the session reporting the previous directory's git branch
- Fixed `claude agents`: pressing back in one window no longer detaches other windows attached to the same session
- Fixed backgrounded sessions showing "Working" forever when `/bg` mid-turn had nothing left to continue
- Fixed background agent search by PR URL: PRs opened during scheduled wakeups or while a job was blocked now appear in `claude agents` search
- Fixed the agents view input showing no text cursor on Windows
- Fixed `claude --bg -cn <name>` not seeding the session name
- Fixed background sessions to neutralize Windows network paths in persisted state before respawn
- Fixed background-session respawn rejecting malformed resume IDs from corrupted state files
- Fixed the Windows background-service daemon not starting when `~/.claude/daemon` has the ReadOnly attribute set
- Fixed cloud sessions failing with "Could not resolve authentication method" when idle for too long before being claimed
- Background sessions now show clearer guidance when a window left open across an auto-update can't submit a reply, and `claude daemon status` explains version-skew behavior
## 2.1.175
- Added `enforceAvailableModels` managed setting — when enabled, the `availableModels` allowlist also constrains the Default model (a Default that would resolve to a disallowed model now falls back to the first allowed model), and user or project settings can no longer widen a managed `availableModels` list
## 2.1.174
- Added `wheelScrollAccelerationEnabled` setting to disable mouse-wheel scroll acceleration in fullscreen mode
- Fixed the `/model` picker hiding the model family that Default resolves to — Opus now appears as its own row on Max/Team Premium/Enterprise plans, Sonnet on Pro/Team plans, and Opus on pay-as-you-go API accounts
- Fixed `/model` picker showing a hardcoded Sonnet version label when `ANTHROPIC_DEFAULT_SONNET_MODEL` pins a different Sonnet
- Fixed the "Fable 5 is now consuming usage credits" banner incorrectly showing for enterprise accounts with usage-based billing
- Fixed Bedrock GovCloud regions (`us-gov-*`) deriving the wrong inference profile prefix (`global` instead of `us-gov`), causing 400 errors on derived model IDs
- Fixed background sessions inheriting another session's `ANTHROPIC_*` provider env (gateway URL, custom headers, `/model` aliases) from the shell that started the background daemon
- Fixed a 1-2 second pause when exiting Claude Code shortly after a shell command was interrupted or killed on macOS and Linux
- Fixed git commit co-author attribution showing an incorrect model name for some models
- Fixed the `/advisor` dialog pre-selecting a saved advisor model that is blocked by the `availableModels` allowlist
- Fixed skill hot-reload re-sending the entire skill listing when a single skill changed; only changed skills are now re-announced
- [VSCode] Added usage attribution to the Account & usage dialog (`/usage`) showing cache misses, long context, subagents, and per-skill/agent/plugin/MCP breakdowns over the last 24h or 7d
- Fixed pre-warmed background workers failing with "Could not resolve authentication method" when claimed after sitting idle
## 2.1.173
- Fixed Fable 5 model names with a `[1m]` suffix not being normalized — Fable 5 includes 1M context by default, so the suffix is now stripped automatically
- Fixed a spurious "sandbox dependencies missing" startup warning on Windows when sandbox was enabled in settings
## 2.1.172
- Sub-agents can now spawn their own sub-agents (up to 5 levels deep)
- Amazon Bedrock now reads the AWS region from `~/.aws` config files when `AWS_REGION` isn't set, matching AWS SDK precedence; `/status` shows where the region came from
- Added a search bar when browsing a marketplace's plugins in `/plugin`
- Added `model` attribute to the `claude_code.lines_of_code.count` OTEL metric
- Fixed sessions using 1M context without usage credits getting permanently stuck — the session now automatically compacts back under the standard context limit
- Fixed a repeating "an image in the conversation could not be processed and was removed" error when the conversation contained multiple images
- Fixed the agents view keeping a session under Working with a busy spinner for up to 30 seconds after the worker replied
- Fixed background agents potentially reading another directory's project settings (`.mcp.json` approvals, trust) when dispatched onto a pre-warmed worker
- Fixed background-session attach failing with EAUTH for sessions started on an older version after the daemon auto-updated
- Fixed a background sub-agent staying stuck as "active" in the agent panel after a nested agent it spawned was stopped
- Fixed `/model` suggestions in the `claude agents` dispatch input rendering with a misleading slash prefix and showing models disabled for your org
- Fixed `availableModels` restrictions not being applied to subagent model overrides, the agent dispatch model picker, and the advisor model
- Fixed `availableModels` allowlists hiding the `/model` picker's Opus and Sonnet 1M rows when entries use version-specific IDs like `claude-opus-4-8`
- Fixed the `/model` picker on Bedrock offering models the provider doesn't serve — selecting one silently switched the session model and lit the selection marker on multiple rows
- Fixed model IDs getting a doubled 1M-context suffix (e.g. `[1M][1m]`) when `ANTHROPIC_DEFAULT_OPUS_MODEL` already includes one
- Fixed `opusplan` model setting not shipping with 1M context in plan mode for entitled users; the `opusplan[1m]` workaround now also correctly switches to Opus in plan mode
- Fixed `WebFetch(domain:*.example.com)` wildcard domain rules never matching subdomains in allow, deny, and ask position, and file permission rules with mid-pattern wildcards (e.g. `Read(secrets-*/config.json)`) being rejected at startup
- Fixed up-arrow prompt history showing the main agent's prompts while a subagent's chat tab is open
- Fixed memory recall not finding mounted team memory stores (`CLAUDE_MEMORY_STORES`) in remote sessions
- Disable mouse tracking on Windows consoles that don't fully support it
- Fixed the `/plugin` marketplace list losing its cursor after backing out of a long plugin list, and Esc from the plugin browser returning to the wrong tab
- Improved performance in long conversations by removing redundant message normalization and avoiding full message-history transforms when streaming tool-use state is unchanged
- Reduced idle CPU usage: `/goal` status chip no longer re-renders the terminal at 5 Hz while idle, and fewer UI re-renders while subagents run in parallel
- Improved Claude in Chrome tool loading: browser tools now load in a single batched call instead of one per tool
- Improved the non-interactive Usage Policy refusal message to suggest starting a new session or changing your model
-`/code-review` now keeps the `ultra` option visible when you're not signed in to claude.ai, with an explanation that the cloud review requires a claude.ai account
- Shortened the Remote Control footer indicator to "/rc active" and hid it on narrow terminals
- Stopped promoting `/loop` in remote sessions, where pending loops don't keep the container alive
- [VSCode] Fixed PowerShell tool calls rendering as raw JSON instead of a proper command display and permission dialog, and stripped ANSI escape codes from displayed shell output
## 2.1.170
- Introducing Claude Fable 5: a Mythos-class model that we’ve made safe for general use. Fable’s capabilities exceed those of any model we’ve ever made generally available. Update to version 2.1.170 for access. https://www.anthropic.com/news/claude-fable-5-mythos-5
- Fixed sessions not saving transcripts (and not appearing in --resume) when launched from the VS Code integrated terminal or any shell that inherited Claude Code environment variables.
## 2.1.169
- Self-hosted runner: added a `post-session` lifecycle hook that runs after the session ends and before the workspace is deleted, so you can snapshot uncommitted work or export logs; also made the child-process SIGTERM→SIGKILL window configurable (default unchanged at 5s)
- Added `--safe-mode` flag (and `CLAUDE_CODE_SAFE_MODE`) to start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting
- Added `/cd` command to move a session to a new working directory without breaking the prompt cache mid-session
- Added a `disableBundledSkills` setting and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` environment variable to hide bundled skills, workflows, and built-in slash commands from the model
- Fixed Up/Down arrows jumping to command history past the wrapped rows of a long input line — they now move through each visual row first, and history recall enters at the near edge
- Fixed enterprise managed MCP policies (`allowedMcpServers`/`deniedMcpServers`) not being enforced on reconnect, IDE-typed configs, `--mcp-config` servers during the first session after install, or before remote settings loaded; also fixed slow cold starts for orgs without remote settings
- Fixed a ~30-50ms UI stall at the start of each turn for macOS users logged in with claude.ai credentials
- Fixed `claude -p` being slow or appearing to hang on Windows while waiting for the slash-command/skill scan (regression in 2.1.161)
- Fixed Remote Control getting stuck on "reconnecting" after resuming a session when an OAuth token refresh happened at the same time
- Fixed Git Credential Manager's "Connect to GitHub" popup appearing on Windows at startup when background git commands ran without cached credentials
- Fixed footer hints (e.g. "esc to interrupt") not showing for users with a custom statusline
- Fixed stale permission and dialog prompts reappearing every time you reattached to a remote session whose worker had died while waiting on them
- Fixed `claude agents --json` omitting blocked and just-dispatched background sessions; added `--all` to include completed sessions, plus new `id` and `state` fields
- Fixed agents view leaving a stale/garbled frame after navigating back from an agent on WSL in Windows Terminal
- Fixed background agents ignoring project-level settings `env` values (e.g. `ANTHROPIC_MODEL`) when dispatched onto a pre-warmed worker
- Fixed MCPB plugin cache being spuriously invalidated on Windows, causing unnecessary re-extraction
- Fixed plugin `.in_use` PID lock files accumulating without bound; stale markers from crashed sessions are now swept once per day
- Fixed untrusted project settings being able to set OTEL client-certificate paths without trust confirmation
-`/workflows` now opens immediately even while a turn is in progress
- Improved `TaskCreate` reliability: malformed inputs are repaired automatically and validation errors for unloaded tools include the schema
- Improved the error message shown when your organization has disabled API key authentication, with guidance based on where the active API key comes from
- Reduced CPU usage while responses stream and during spinner animations
- Restored a default 5-minute idle timeout on Vertex/Foundry so a stalled stream aborts instead of hanging indefinitely; set `API_FORCE_IDLE_TIMEOUT=0` to opt out
- Remote-managed settings with an invalid entry now apply their remaining valid policies and surface the validation error, instead of silently dropping the whole payload
- Background sessions now preserve `--ide`, `--chrome`, `--bare`, `--remote-control`, and other flags across retire→wake, and respawn state validation was hardened
- Background sessions are now told that shared-checkout edits are blocked until they enter a worktree, avoiding a wasted rejected edit before `EnterWorktree`
- The "CLAUDE.md is too long" warning threshold now scales with the model's context window
- Auto-updater on Windows now stops retrying within a session once `claude.exe` is held by another process
- Improved color contrast for skill tags in the slash-command menu
- Promo credit claims for Apple/Google-billed subscribers without a payment method now explain where to add one
- Added a tip suggesting `claude agents` when running multiple concurrent sessions
## 2.1.168
- Bug fixes and reliability improvements
## 2.1.167
- Bug fixes and reliability improvements
## 2.1.166
- Added `fallbackModel` setting to configure up to three fallback models tried in order when the primary model is overloaded or unavailable; `--fallback-model` now also applies to interactive sessions
- Added glob pattern support in deny rule tool-name position (`"*"` denies all tools); allow rules reject non-MCP globs, and unknown tool names in deny rules warn at startup
- Hardened cross-session messaging: messages relayed via `SendMessage` from other Claude sessions no longer carry user authority — receivers refuse relayed permission requests, and auto mode blocks them
-`MAX_THINKING_TOKENS=0`, `--thinking disabled`, and the per-model thinking toggle now disable thinking on models that think by default via the Claude API (3P providers unchanged)
- Claude Code now retries a turn once on the fallback model when the API rejects an unexpected non-retryable error; auth, rate-limit, request-size, and transport errors still surface immediately
-`claude update` now announces the target version before downloading instead of going silent
-`claude agents`: typing a URL into the list now filters to the session whose first prompt contained it
- Fixed a recurring "image could not be processed" error and extra token usage when an unprocessable image was sent in a session
- Fixed remote sessions becoming permanently stuck when a brief backend disruption occurred during worker registration at startup
- Fixed flickering in JetBrains IDE terminals (IntelliJ, PyCharm, WebStorm, etc.) on 2026.1+ by enabling synchronized output
- Fixed Shift+non-ASCII characters (e.g. Shift+ä → Ä) being dropped in terminals using the Kitty keyboard protocol (WezTerm, Ghostty, kitty)
- Fixed PowerShell command validation occasionally hanging far past its time budget on Windows when a killed process's children held its output pipes
- Fixed orphaned `claude --bg-pty-host` processes spinning at 100% CPU after the daemon dies while connected on macOS
- Fixed voice mode requiring `/login` to clear a stale auth check after toggling `/voice`
- Fixed managed settings with an invalid entry silently disabling enforcement of their remaining valid policies
- Fixed managed-settings `allowedMcpServers`/`deniedMcpServers` predicates not matching when they use `${VAR}` references
- Fixed background agent sessions that entered a git worktree crash-looping with "No conversation found" when reopened from `claude agents`
- Fixed duplicated thinking text in the Ctrl+O transcript view while streaming
- Fixed `/doctor` showing a contradictory failed "Not inside a remote session" check when run inside a remote session
- Fixed the cursor sticking at the end of the first line when typing a multiline prompt in the `claude agents` dispatch and reply inputs
- Fixed blank lines appearing between background agent rows in the task list on terminals without Unicode support
## 2.1.165
- Bug fixes and reliability improvements
## 2.1.163
- Added `requiredMinimumVersion` and `requiredMaximumVersion` managed settings — Claude Code refuses to start if its version is outside the allowed range and directs the user to an approved version
- Added `/plugin list` command to list installed plugins, with `--enabled`/`--disabled` filters
- Added a "c to copy" shortcut to `/btw` that copies the raw markdown answer to the clipboard, preserving formatting when pasted elsewhere
- Hooks: Stop and SubagentStop hooks can now return `hookSpecificOutput.additionalContext` to give Claude feedback and keep the turn going without being labeled a hook error
- Skills: added `\$` escape syntax to include a literal `$` before a digit in command bodies
- stdio MCP servers now receive the same `CLAUDE_CODE_SESSION_ID` as hooks/Bash on `--resume`
- Fixed `claude -p` hanging forever after its final result when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes
- Fixed `claude -p` failing with "ANTHROPIC_API_KEY required" on Bedrock/Vertex/Foundry when `CI=true` and no Anthropic API key is set
- Fixed bash commands failing under bazel and EDR-protected Go workflows: `$TMPDIR` was overridden to `/tmp/claude-{uid}` for all commands instead of only sandboxed ones (regression in 2.1.154)
- Fixed Bash commands failing on Windows with "EEXIST: file already exists" on the session-env directory when it has the read-only attribute or is inside OneDrive
- Fixed org-managed permission rules not applying for the entire session when the managed settings fetch completed during startup on a fresh config directory
- Fixed background sessions in `claude agents` losing their running background tasks when reattached after a Claude Code update
- Fixed terminal misalignment and a multi-second hang when exiting the agent view by pressing Esc
- Fixed clicking Stop on a background-task chip in the desktop app not clearing the chip when the underlying process was already gone
- Fixed keyboard input becoming permanently unresponsive after a paste operation whose end marker is dropped by the terminal
- Fixed hook `if: "Bash(...)"` conditions firing on every Bash command containing `$()` or `$VAR`; the pattern now matches against commands inside subshells and backticks too
- Fixed deny rules on home-directory paths (e.g. `Read(~/Desktop/**)`) not blocking Bash commands that reference the path via `$HOME`
- Fixed a stray "(no content)" line left in the transcript after closing panel dialogs like /mcp and /plugins
- Background agent sessions now update to a new Claude Code version in the background, so opening a session after an update no longer waits on a cold restart
- Clearer descriptions for built-in commands and skills in the / menu
- The subscription-switch suggestion now shows in the startup announcement slot instead of a toast
-`claude agents` dispatching from the state-grouped view now starts the session in the directory the agent view was opened from
## 2.1.162
-`claude agents --json` now includes `waitingFor` showing what a waiting session is blocked on (e.g. permission prompt)
-`--tools`: explicitly listing Grep/Glob now provides the dedicated search tools on native builds with embedded search (previously these names were silently ignored)
-`/effort` now confirms when your chosen level will persist as the default for new sessions
- Clicking a slash command in the autocomplete menu now fills it into your prompt instead of running it immediately; press Enter to run
- Remote Control now shows as a persistent footer pill (with a link to the session) instead of a startup message
- Renamed Windsurf to Devin Desktop in the `/ide` menu, `/terminal-setup`, and `/scroll-speed`, following the editor's rebrand
- Fixed a silent startup hang when the config directory is read-only or unwritable — Claude Code now starts with in-memory config and surfaces startup errors instead of showing a blank screen
- Fixed WebFetch permission rules not being applied to built-in preapproved domains; explicit `WebFetch(domain:...)` deny/ask/allow rules now take precedence over the preapproved-host auto-allow
- Fixed Windows permission rules never matching when spelled with backslashes (`~\`, `\\server\share`) or case-variant paths, and Read deny rules not hiding files from Glob/Grep results
- Fixed an interrupt (Esc) sent at the very start of a turn being silently dropped in stream-json/SDK sessions, leaving the turn running with no "Interrupted" feedback
- Fixed API 400 `no low surrogate in string` errors for classifier side-queries and MCP server descriptions containing emoji near a truncation boundary
- Fixed MCP per-server `timeout` config values below 1000 ms being floored to a 1-second watchdog that aborted every tool call; sub-1000 ms values are now ignored (falling back to `MCP_TOOL_TIMEOUT` or default), and `claude mcp get` annotates them accordingly
- Fixed the LSP tool's `workspaceSymbol` operation returning no results; it now accepts a `query` parameter and passes it to the language server
- Fixed `claude agents` cutting live status text (tool args, replies, prompts, exec output) at 60–120 columns on wide terminals; the status detail now uses the full terminal width
- Fixed `claude agents` truncating long session names at 40 columns; the name column now grows with terminal width
- Fixed `claude agents` attach occasionally bouncing straight back to the session list on the first try after a background-service restart
- Fixed `claude agents` Ctrl+V image paste doing nothing in the dispatch input and the session reply box; pasting with no image now shows a hint
- Fixed backgrounding a session with ← silently losing the conversation when the background service cannot start; the session stays in the list as a failed row you can wake with Enter
- Fixed replies from the agents view that fail to send being lost; they are now queued for delivery on the next session start
- Fixed cross-session messaging (`SendMessage`) silently breaking when `CLAUDE_CODE_TMPDIR` or `$TMPDIR` points at a deep directory
- Fixed opening a running background session from `claude agents` stalling for 5 seconds before attaching
- Quieter startup: notices group by severity, and session info and announcements share a single line per launch
- Startup warnings rewritten to be shorter and clearer, each with a concrete fix
- Launch-prompt warnings (deep link/pre-filled prompt) now stay pinned below the input until you act instead of scrolling away
- Failed turns now show a compact warning line instead of a multi-line red error block
- Improved background service startup and `claude update` verification to wait out endpoint-security scanning of new binaries instead of failing after 5 seconds
- Background dispatch spawn failures now report the error class name when no errno is available
- Removed the "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto-updates and the team-onboarding tip now show as quiet notices under the logo
## 2.1.161
-`OTEL_RESOURCE_ATTRIBUTES` values are now included as labels on metric datapoints, so you can slice usage metrics by custom dimensions like team or repo
@@ -70,3 +70,7 @@ See our [data usage policies](https://code.claude.com/docs/en/data-usage).
We have implemented several safeguards to protect your data, including limited retention periods for sensitive information, restricted access to user session data, and clear policies against using feedback for model training.
For full details, please review our [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) and [Privacy Policy](https://www.anthropic.com/legal/privacy).
---
*Why do programmers love pair programming with Claude Code? Because it's the only colleague that reads the entire codebase before commenting on your PR.*
<contenttype="html"><p>• Added /config key=value syntax to set any setting from the prompt (e.g. /config thinking=false) — works in interactive, -p, and Remote Control</p>
<p>• Added sandbox.allowAppleEvents opt-in setting that lets sandboxed commands send Apple Events on macOS</p>
<p>• Added CLAUDE_CLIENT_PRESENCE_FILE environment variable: point it at a marker file to suppress mobile push notifications while you're at the machine</p>
<p>• Upgraded the bundled Bun runtime to 1.4</p>
<p>• Improved streaming of long paragraphs: text now appears line-by-line instead of waiting for the first line break</p>
<p>• Improved auto-retry: API connection drops mid-thinking now automatically retry instead of showing "Connection closed while thinking"</p>
<p>• Improved the subagent panel: idle subagents auto-hide after 30s, the list caps at 5 rows with scroll hints, and keyboard hints now show in the footer</p>
<p>• Improved the MCP OAuth browser page to match Claude Code's visual style and auto-close on success</p>
<p>• Changed the Improved N memories line to no longer list individual files outside verbose mode</p>
<p>• Fixed prompt caching not reading on custom ANTHROPIC_BASE_URL and on Foundry due to a per-request attestation token changing every turn</p>
<p>• Fixed Write/Edit producing 0-byte or truncated files on network drives and cloud-synced folders</p>
<p>• Fixed open, osascript, and browser-based auth flows failing with error -600 on macOS by adding the Apple Events entitlement</p>
<p>• Fixed a startup regression (~120ms per launch in fresh environments, introduced in 2.1.169): the first prompt no longer waits for the managed-settings fetch when no MCP servers are configured</p>
<p>• Fixed startup blocking with a blank terminal for up to 15 seconds when the account settings fetch is slow on a degraded network</p>
<p>• Fixed startup crash (TypeError: Cannot read properties of null) when .claude.json contains corrupted null project entries</p>
<p>• Fixed macOS TUI freezing at session start (Ctrl+C unresponsive) when Spotlight is busy reindexing</p>
<p>• Fixed long-running idle sessions losing their history when another Claude Code process ran the 30-day transcript cleanup</p>
<p>• Fixed foreground subagents spawning unbounded nested chains; they now respect the same 5-level depth limit as background subagents</p>
<p>• Fixed /recap and conversation forks using the previous model immediately after a model switch</p>
<p>• Fixed subagent "Thinking" duration showing the parent agent's elapsed time instead of the subagent's own</p>
<p>• Fixed subagents blocked on a nested agent showing a ticking elapsed time instead of "waiting" in the agent panel</p>
<p>• Fixed the API retry indicator ("Retrying in 0s · attempt N/10") staying on screen after the retry succeeded</p>
<p>• Fixed AWS awsCredentialExport credentials with a short remaining lifetime causing credential refreshes every minute, and now accepts the JSON shape from aws configure export-credentials</p>
<p>• Fixed claude mcp get/list showing ✓ Connected when tools/list fails; they now show ! Connected · tools fetch failed with the error detail</p>
<p>• Fixed /remote-control leaving a stale "connecting…" line; it now confirms in the transcript once connected</p>
<p>• Fixed ExitWorktree refusing to remove a clean worktree with "Could not verify worktree state" when bare git cannot be resolved on Windows</p>
<p>• Fixed settings changes (such as /effort or /model) failing with ENOENT when ~/.claude/settings.json is a relative symlink under a symlinked ~/.claude</p>
<p>• Fixed IDE selection line numbers in context reminders being off by one (IntelliJ and VS Code)</p>
<p>• Fixed Ctrl+C in fullscreen after a native terminal selection (modifier+drag) overwriting the clipboard with the app's prior selection</p>
<p>• Fixed Ctrl+V showing "No image found in clipboard" instead of pasting when the clipboard contains text</p>
<p>• Fixed agent creation failing with "EEXIST: file already exists" when the agents directory already exists (Windows/OneDrive)</p>
<p>• Fixed AskUserQuestion preview content being cut off at the dialog edge instead of word-wrapping</p>
<p>• Fixed AskUserQuestion multi-select questions silently dropping a typed "Other" free-text answer when submitting</p>
<p>• Fixed /stats "Most active day" and daily token chart dates showing one day early in UTC-negative timezones</p>
<p>• Fixed /copy and copy-on-select on Linux not detecting a clipboard utility installed after Claude Code started</p>
<p>• Fixed tab-indented code rendering with incorrect indentation in the Write (create-file) preview</p>
<p>• Fixed user prompts queued mid-turn not showing a full-width background highlight in the transcript</p>
<p>• Fixed the activity spinner's pulse dwelling on the wrong glyph size in Ghostty</p></content>
<contenttype="html"><p>• Fixed mid-stream connection drops: partial responses are now preserved instead of showing a raw error, and the spinner no longer gets stuck at "running tool"</p>
<p>• Fixed mouse-wheel scrolling in WSL2 under Windows Terminal and VS Code (regression in 2.1.172)</p>
<p>• Fixed a sandbox denyRead/allowRead glob over a large directory tree making the Bash tool description enormous and the session unusable on Linux</p>
<p>• Fixed the feedback survey capturing a single-digit reply as a session rating immediately after a turn completes</p>
<p>• Fixed the welcome screen stacking multiple promotional banners — at most one promo now shows per session</p>
<p>• Fixed Ctrl+O not showing the subagent's transcript when viewing a subagent</p>
<p>• Fixed clicking the prompt input not returning focus from the subagent/footer panel</p>
<p>• Fixed remote session background tasks appearing stuck as "still running" between turns</p>
<p>• Improved plugin loading performance in remote sessions</p></content>
<contenttype="html"><p>• Added Tool(param:value) syntax for permission rules to match a tool's input parameters (with * wildcard), e.g. Agent(model:opus) to block Opus subagents</p>
<p>• Skills in nested .claude/skills directories now load when working on files there; on a name clash, the nested skill appears as &lt;dir&gt;:&lt;name&gt; so both stay available</p>
<p>• Nested .claude/ directories: the agent, workflow, and output-style closest to the working directory now wins when names collide; project-scope workflow saves now target the closest existing .claude/workflows/</p>
<p>• Improved auto mode: subagent spawns are now evaluated by the classifier before launch, closing a gap where a subagent could request a blocked action without review</p>
<p>• Improved /doctor with consistent flat tree layout across all sections, clearer section status icons, and highlighted command names</p>
<p>• Improved the skill listing truncation warning to show how many skill descriptions are affected</p>
<p>• Changed the workflow prompt keyword to use a purple shimmer highlight and trigger only on explicit phrases like "run a workflow" or "workflow:", not on any mention of the word</p>
<p>• Improved Remote Control error messages: connection failures now show a persistent red "/rc failed" indicator in the footer, and the "not yet enabled" error now explains whether it's a gate, a check failure, stale entitlement, or org policy</p>
<p>• /bug now requires a description before submitting, and no longer uses model-refusal text as the GitHub issue title</p>
<p>• Fixed a crash (out-of-memory) when the CLI inherits a stale websocket/OAuth file-descriptor environment variable from a parent process</p>
<p>• Fixed Claude in Chrome silently failing to connect when the OAuth token belongs to a different account than the Claude Code login</p>
<p>• Fixed nested .claude/skills skills with directory-qualified names being blocked by permission prompts in non-interactive runs</p>
<p>• Fixed several subagent issues: viewing a subagent's transcript now shows tool results and live progress, messages sent while it finishes its turn are no longer dropped, and backgrounding a running subagent (ctrl+b) no longer restarts it from scratch</p>
<p>• Fixed claude agents workers failing with 401 Invalid bearer token when the daemon was started from a shell with a custom API gateway via ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN</p>
<p>• Fixed compaction not honoring --fallback-model: compaction now falls back to the configured fallback model chain on overload or model-availability errors</p>
<p>• Fixed model requests continuing to fail with auth errors after credentials were refreshed outside the session, due to a stale cached request configuration</p>
<p>• Fixed background sessions created with /bg or ←← after a turn finished showing "Working" forever in the agents list</p>
<p>• Fixed Linux sandbox failing to start when .claude/skills or .claude/hooks is a symlink</p>
<p>• Fixed CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 preventing fresh marketplace installs from cloning</p>
<p>• Fixed MCP server-level specs (mcp__server, mcp__server__*, mcp__*) in subagent disallowedTools being silently ignored</p>
<p>• Fixed vim mode undo: u now steps through NORMAL/VISUAL-mode commands one at a time instead of merging commands in quick succession into a single undo step</p>
<p>• Fixed statusline links with custom URI schemes (e.g. vscode://) not opening when clicked in claude agents</p>
<p>• [VSCode] Fixed pressing Esc to dismiss a CJK IME candidate window canceling the running Claude task</p></content>
<contenttype="html"><p>• Session titles are now generated in the language of your conversation (set the language setting to pin a specific language)</p>
<p>• Added footerLinksRegexes setting for regex-matched link badges in the footer row, configurable via user or managed settings</p>
<p>• Improved Bedrock credential caching: credentials from awsCredentialExport are now cached until their Expiration instead of a fixed 1 hour</p>
<p>• Fixed availableModels enforcement: alias model picks can no longer be redirected to a blocked model via ANTHROPIC_DEFAULT_*_MODEL environment variables, and /fast now refuses to toggle when it would switch to a model outside the allowlist</p>
<p>• Fixed auto mode failing on Fable 5 for organizations without Opus 4.8 enabled — the classifier now falls back to the best available Opus model</p>
<p>• Fixed hook if conditions for Read/Edit/Write tool paths: documented patterns like Edit(src/), Read(~/.ssh/), and Read(.env) now match correctly</p>
<p>• Fixed Linux sandbox failing to start when .claude/settings.json is a symlink with an absolute target</p>
<p>• Fixed /copy and mouse-selection copy not reaching the system clipboard inside tmux over SSH, and tmux paste buffer not loading on versions older than 3.2</p>
<p>• Fixed Remote Control connecting from web/mobile silently switching the session's model</p>
<p>• Fixed Remote Control disconnect notifications showing a bare numeric code instead of a human-readable reason, and connection failures adding a duplicate line to the conversation transcript</p>
<p>• Fixed Remote Control sessions not disconnecting when you sign in to a different account</p>
<p>• Fixed /cd and worktree moves leaving the session reporting the previous directory's git branch</p>
<p>• Fixed claude agents: pressing back in one window no longer detaches other windows attached to the same session</p>
<p>• Fixed backgrounded sessions showing "Working" forever when /bg mid-turn had nothing left to continue</p>
<p>• Fixed background agent search by PR URL: PRs opened during scheduled wakeups or while a job was blocked now appear in claude agents search</p>
<p>• Fixed the agents view input showing no text cursor on Windows</p>
<p>• Fixed claude --bg -cn &lt;name&gt; not seeding the session name</p>
<p>• Fixed background sessions to neutralize Windows network paths in persisted state before respawn</p>
<p>• Fixed background-session respawn rejecting malformed resume IDs from corrupted state files</p>
<p>• Fixed the Windows background-service daemon not starting when ~/.claude/daemon has the ReadOnly attribute set</p>
<p>• Fixed cloud sessions failing with "Could not resolve authentication method" when idle for too long before being claimed</p>
<p>• Background sessions now show clearer guidance when a window left open across an auto-update can't submit a reply, and claude daemon status explains version-skew behavior</p></content>
<contenttype="html"><p>• Added enforceAvailableModels managed setting — when enabled, the availableModels allowlist also constrains the Default model (a Default that would resolve to a disallowed model now falls back to the first allowed model), and user or project settings can no longer widen a managed availableModels list</p></content>
<contenttype="html"><p>• Added wheelScrollAccelerationEnabled setting to disable mouse-wheel scroll acceleration in fullscreen mode</p>
<p>• Fixed the /model picker hiding the model family that Default resolves to — Opus now appears as its own row on Max/Team Premium/Enterprise plans, Sonnet on Pro/Team plans, and Opus on pay-as-you-go API accounts</p>
<p>• Fixed /model picker showing a hardcoded Sonnet version label when ANTHROPIC_DEFAULT_SONNET_MODEL pins a different Sonnet</p>
<p>• Fixed the "Fable 5 is now consuming usage credits" banner incorrectly showing for enterprise accounts with usage-based billing</p>
<p>• Fixed Bedrock GovCloud regions (us-gov-*) deriving the wrong inference profile prefix (global instead of us-gov), causing 400 errors on derived model IDs</p>
<p>• Fixed background sessions inheriting another session's ANTHROPIC_* provider env (gateway URL, custom headers, /model aliases) from the shell that started the background daemon</p>
<p>• Fixed a 1-2 second pause when exiting Claude Code shortly after a shell command was interrupted or killed on macOS and Linux</p>
<p>• Fixed git commit co-author attribution showing an incorrect model name for some models</p>
<p>• Fixed the /advisor dialog pre-selecting a saved advisor model that is blocked by the availableModels allowlist</p>
<p>• Fixed skill hot-reload re-sending the entire skill listing when a single skill changed; only changed skills are now re-announced</p>
<p>• [VSCode] Added usage attribution to the Account &amp; usage dialog (/usage) showing cache misses, long context, subagents, and per-skill/agent/plugin/MCP breakdowns over the last 24h or 7d</p>
<p>• Fixed pre-warmed background workers failing with "Could not resolve authentication method" when claimed after sitting idle</p></content>
<contenttype="html"><p>• Fixed Fable 5 model names with a [1m] suffix not being normalized — Fable 5 includes 1M context by default, so the suffix is now stripped automatically</p>
<p>• Fixed a spurious "sandbox dependencies missing" startup warning on Windows when sandbox was enabled in settings</p></content>
<contenttype="html"><p>• Sub-agents can now spawn their own sub-agents (up to 5 levels deep)</p>
<p>• Amazon Bedrock now reads the AWS region from ~/.aws config files when AWS_REGION isn't set, matching AWS SDK precedence; /status shows where the region came from</p>
<p>• Added a search bar when browsing a marketplace's plugins in /plugin</p>
<p>• Added model attribute to the claude_code.lines_of_code.count OTEL metric</p>
<p>• Fixed sessions using 1M context without usage credits getting permanently stuck — the session now automatically compacts back under the standard context limit</p>
<p>• Fixed a repeating "an image in the conversation could not be processed and was removed" error when the conversation contained multiple images</p>
<p>• Fixed the agents view keeping a session under Working with a busy spinner for up to 30 seconds after the worker replied</p>
<p>• Fixed background agents potentially reading another directory's project settings (.mcp.json approvals, trust) when dispatched onto a pre-warmed worker</p>
<p>• Fixed background-session attach failing with EAUTH for sessions started on an older version after the daemon auto-updated</p>
<p>• Fixed a background sub-agent staying stuck as "active" in the agent panel after a nested agent it spawned was stopped</p>
<p>• Fixed /model suggestions in the claude agents dispatch input rendering with a misleading slash prefix and showing models disabled for your org</p>
<p>• Fixed availableModels restrictions not being applied to subagent model overrides, the agent dispatch model picker, and the advisor model</p>
<p>• Fixed availableModels allowlists hiding the /model picker's Opus and Sonnet 1M rows when entries use version-specific IDs like claude-opus-4-8</p>
<p>• Fixed the /model picker on Bedrock offering models the provider doesn't serve — selecting one silently switched the session model and lit the selection marker on multiple rows</p>
<p>• Fixed model IDs getting a doubled 1M-context suffix (e.g. [1M][1m]) when ANTHROPIC_DEFAULT_OPUS_MODEL already includes one</p>
<p>• Fixed opusplan model setting not shipping with 1M context in plan mode for entitled users; the opusplan[1m] workaround now also correctly switches to Opus in plan mode</p>
<p>• Fixed WebFetch(domain:*.example.com) wildcard domain rules never matching subdomains in allow, deny, and ask position, and file permission rules with mid-pattern wildcards (e.g. Read(secrets-*/config.json)) being rejected at startup</p>
<p>• Fixed up-arrow prompt history showing the main agent's prompts while a subagent's chat tab is open</p>
<p>• Fixed memory recall not finding mounted team memory stores (CLAUDE_MEMORY_STORES) in remote sessions</p>
<p>• Disable mouse tracking on Windows consoles that don't fully support it</p>
<p>• Fixed the /plugin marketplace list losing its cursor after backing out of a long plugin list, and Esc from the plugin browser returning to the wrong tab</p>
<p>• Improved performance in long conversations by removing redundant message normalization and avoiding full message-history transforms when streaming tool-use state is unchanged</p>
<p>• Reduced idle CPU usage: /goal status chip no longer re-renders the terminal at 5 Hz while idle, and fewer UI re-renders while subagents run in parallel</p>
<p>• Improved Claude in Chrome tool loading: browser tools now load in a single batched call instead of one per tool</p>
<p>• Improved the non-interactive Usage Policy refusal message to suggest starting a new session or changing your model</p>
<p>• /code-review now keeps the ultra option visible when you're not signed in to claude.ai, with an explanation that the cloud review requires a claude.ai account</p>
<p>• Shortened the Remote Control footer indicator to "/rc active" and hid it on narrow terminals</p>
<p>• Stopped promoting /loop in remote sessions, where pending loops don't keep the container alive</p>
<p>• [VSCode] Fixed PowerShell tool calls rendering as raw JSON instead of a proper command display and permission dialog, and stripped ANSI escape codes from displayed shell output</p></content>
<contenttype="html"><p>• Introducing Claude Fable 5: a Mythos-class model that we’ve made safe for general use. Fable’s capabilities exceed those of any model we’ve ever made generally available. Update to version 2.1.170 for access. https://www.anthropic.com/news/claude-fable-5-mythos-5</p>
<p>• Fixed sessions not saving transcripts (and not appearing in --resume) when launched from the VS Code integrated terminal or any shell that inherited Claude Code environment variables.</p></content>
<contenttype="html"><p>• Self-hosted runner: added a post-session lifecycle hook that runs after the session ends and before the workspace is deleted, so you can snapshot uncommitted work or export logs; also made the child-process SIGTERM→SIGKILL window configurable (default unchanged at 5s)</p>
<p>• Added --safe-mode flag (and CLAUDE_CODE_SAFE_MODE) to start Claude Code with all customizations (CLAUDE.md, plugins, skills, hooks, MCP servers) disabled for troubleshooting</p>
<p>• Added /cd command to move a session to a new working directory without breaking the prompt cache mid-session</p>
<p>• Added a disableBundledSkills setting and CLAUDE_CODE_DISABLE_BUNDLED_SKILLS environment variable to hide bundled skills, workflows, and built-in slash commands from the model</p>
<p>• Fixed Up/Down arrows jumping to command history past the wrapped rows of a long input line — they now move through each visual row first, and history recall enters at the near edge</p>
<p>• Fixed enterprise managed MCP policies (allowedMcpServers/deniedMcpServers) not being enforced on reconnect, IDE-typed configs, --mcp-config servers during the first session after install, or before remote settings loaded; also fixed slow cold starts for orgs without remote settings</p>
<p>• Fixed a ~30-50ms UI stall at the start of each turn for macOS users logged in with claude.ai credentials</p>
<p>• Fixed claude -p being slow or appearing to hang on Windows while waiting for the slash-command/skill scan (regression in 2.1.161)</p>
<p>• Fixed Remote Control getting stuck on "reconnecting" after resuming a session when an OAuth token refresh happened at the same time</p>
<p>• Fixed Git Credential Manager's "Connect to GitHub" popup appearing on Windows at startup when background git commands ran without cached credentials</p>
<p>• Fixed footer hints (e.g. "esc to interrupt") not showing for users with a custom statusline</p>
<p>• Fixed stale permission and dialog prompts reappearing every time you reattached to a remote session whose worker had died while waiting on them</p>
<p>• Fixed claude agents --json omitting blocked and just-dispatched background sessions; added --all to include completed sessions, plus new id and state fields</p>
<p>• Fixed agents view leaving a stale/garbled frame after navigating back from an agent on WSL in Windows Terminal</p>
<p>• Fixed background agents ignoring project-level settings env values (e.g. ANTHROPIC_MODEL) when dispatched onto a pre-warmed worker</p>
<p>• Fixed MCPB plugin cache being spuriously invalidated on Windows, causing unnecessary re-extraction</p>
<p>• Fixed plugin .in_use PID lock files accumulating without bound; stale markers from crashed sessions are now swept once per day</p>
<p>• Fixed untrusted project settings being able to set OTEL client-certificate paths without trust confirmation</p>
<p>• /workflows now opens immediately even while a turn is in progress</p>
<p>• Improved TaskCreate reliability: malformed inputs are repaired automatically and validation errors for unloaded tools include the schema</p>
<p>• Improved the error message shown when your organization has disabled API key authentication, with guidance based on where the active API key comes from</p>
<p>• Reduced CPU usage while responses stream and during spinner animations</p>
<p>• Restored a default 5-minute idle timeout on Vertex/Foundry so a stalled stream aborts instead of hanging indefinitely; set API_FORCE_IDLE_TIMEOUT=0 to opt out</p>
<p>• Remote-managed settings with an invalid entry now apply their remaining valid policies and surface the validation error, instead of silently dropping the whole payload</p>
<p>• Background sessions now preserve --ide, --chrome, --bare, --remote-control, and other flags across retire→wake, and respawn state validation was hardened</p>
<p>• Background sessions are now told that shared-checkout edits are blocked until they enter a worktree, avoiding a wasted rejected edit before EnterWorktree</p>
<p>• The "CLAUDE.md is too long" warning threshold now scales with the model's context window</p>
<p>• Auto-updater on Windows now stops retrying within a session once claude.exe is held by another process</p>
<p>• Improved color contrast for skill tags in the slash-command menu</p>
<p>• Promo credit claims for Apple/Google-billed subscribers without a payment method now explain where to add one</p>
<p>• Added a tip suggesting claude agents when running multiple concurrent sessions</p></content>
<contenttype="html"><p>• Added fallbackModel setting to configure up to three fallback models tried in order when the primary model is overloaded or unavailable; --fallback-model now also applies to interactive sessions</p>
<p>• Added glob pattern support in deny rule tool-name position ("*" denies all tools); allow rules reject non-MCP globs, and unknown tool names in deny rules warn at startup</p>
<p>• Hardened cross-session messaging: messages relayed via SendMessage from other Claude sessions no longer carry user authority — receivers refuse relayed permission requests, and auto mode blocks them</p>
<p>• MAX_THINKING_TOKENS=0, --thinking disabled, and the per-model thinking toggle now disable thinking on models that think by default via the Claude API (3P providers unchanged)</p>
<p>• Claude Code now retries a turn once on the fallback model when the API rejects an unexpected non-retryable error; auth, rate-limit, request-size, and transport errors still surface immediately</p>
<p>• claude update now announces the target version before downloading instead of going silent</p>
<p>• claude agents: typing a URL into the list now filters to the session whose first prompt contained it</p>
<p>• Fixed a recurring "image could not be processed" error and extra token usage when an unprocessable image was sent in a session</p>
<p>• Fixed remote sessions becoming permanently stuck when a brief backend disruption occurred during worker registration at startup</p>
<p>• Fixed flickering in JetBrains IDE terminals (IntelliJ, PyCharm, WebStorm, etc.) on 2026.1+ by enabling synchronized output</p>
<p>• Fixed Shift+non-ASCII characters (e.g. Shift+ä → Ä) being dropped in terminals using the Kitty keyboard protocol (WezTerm, Ghostty, kitty)</p>
<p>• Fixed PowerShell command validation occasionally hanging far past its time budget on Windows when a killed process's children held its output pipes</p>
<p>• Fixed orphaned claude --bg-pty-host processes spinning at 100% CPU after the daemon dies while connected on macOS</p>
<p>• Fixed voice mode requiring /login to clear a stale auth check after toggling /voice</p>
<p>• Fixed managed settings with an invalid entry silently disabling enforcement of their remaining valid policies</p>
<p>• Fixed managed-settings allowedMcpServers/deniedMcpServers predicates not matching when they use ${VAR} references</p>
<p>• Fixed background agent sessions that entered a git worktree crash-looping with "No conversation found" when reopened from claude agents</p>
<p>• Fixed duplicated thinking text in the Ctrl+O transcript view while streaming</p>
<p>• Fixed /doctor showing a contradictory failed "Not inside a remote session" check when run inside a remote session</p>
<p>• Fixed the cursor sticking at the end of the first line when typing a multiline prompt in the claude agents dispatch and reply inputs</p>
<p>• Fixed blank lines appearing between background agent rows in the task list on terminals without Unicode support</p></content>
<contenttype="html"><p>• Added requiredMinimumVersion and requiredMaximumVersion managed settings — Claude Code refuses to start if its version is outside the allowed range and directs the user to an approved version</p>
<p>• Added /plugin list command to list installed plugins, with --enabled/--disabled filters</p>
<p>• Added a "c to copy" shortcut to /btw that copies the raw markdown answer to the clipboard, preserving formatting when pasted elsewhere</p>
<p>• Hooks: Stop and SubagentStop hooks can now return hookSpecificOutput.additionalContext to give Claude feedback and keep the turn going without being labeled a hook error</p>
<p>• Skills: added \$ escape syntax to include a literal $ before a digit in command bodies</p>
<p>• stdio MCP servers now receive the same CLAUDE_CODE_SESSION_ID as hooks/Bash on --resume</p>
<p>• Fixed claude -p hanging forever after its final result when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes</p>
<p>• Fixed claude -p failing with "ANTHROPIC_API_KEY required" on Bedrock/Vertex/Foundry when CI=true and no Anthropic API key is set</p>
<p>• Fixed bash commands failing under bazel and EDR-protected Go workflows: $TMPDIR was overridden to /tmp/claude-{uid} for all commands instead of only sandboxed ones (regression in 2.1.154)</p>
<p>• Fixed Bash commands failing on Windows with "EEXIST: file already exists" on the session-env directory when it has the read-only attribute or is inside OneDrive</p>
<p>• Fixed org-managed permission rules not applying for the entire session when the managed settings fetch completed during startup on a fresh config directory</p>
<p>• Fixed background sessions in claude agents losing their running background tasks when reattached after a Claude Code update</p>
<p>• Fixed terminal misalignment and a multi-second hang when exiting the agent view by pressing Esc</p>
<p>• Fixed clicking Stop on a background-task chip in the desktop app not clearing the chip when the underlying process was already gone</p>
<p>• Fixed keyboard input becoming permanently unresponsive after a paste operation whose end marker is dropped by the terminal</p>
<p>• Fixed hook if: "Bash(...)" conditions firing on every Bash command containing $() or $VAR; the pattern now matches against commands inside subshells and backticks too</p>
<p>• Fixed deny rules on home-directory paths (e.g. Read(~/Desktop/**)) not blocking Bash commands that reference the path via $HOME</p>
<p>• Fixed a stray "(no content)" line left in the transcript after closing panel dialogs like /mcp and /plugins</p>
<p>• Background agent sessions now update to a new Claude Code version in the background, so opening a session after an update no longer waits on a cold restart</p>
<p>• Clearer descriptions for built-in commands and skills in the / menu</p>
<p>• The subscription-switch suggestion now shows in the startup announcement slot instead of a toast</p>
<p>• claude agents dispatching from the state-grouped view now starts the session in the directory the agent view was opened from</p></content>
<contenttype="html"><p>• claude agents --json now includes waitingFor showing what a waiting session is blocked on (e.g. permission prompt)</p>
<p>• --tools: explicitly listing Grep/Glob now provides the dedicated search tools on native builds with embedded search (previously these names were silently ignored)</p>
<p>• /effort now confirms when your chosen level will persist as the default for new sessions</p>
<p>• Clicking a slash command in the autocomplete menu now fills it into your prompt instead of running it immediately; press Enter to run</p>
<p>• Remote Control now shows as a persistent footer pill (with a link to the session) instead of a startup message</p>
<p>• Renamed Windsurf to Devin Desktop in the /ide menu, /terminal-setup, and /scroll-speed, following the editor's rebrand</p>
<p>• Fixed a silent startup hang when the config directory is read-only or unwritable — Claude Code now starts with in-memory config and surfaces startup errors instead of showing a blank screen</p>
<p>• Fixed WebFetch permission rules not being applied to built-in preapproved domains; explicit WebFetch(domain:...) deny/ask/allow rules now take precedence over the preapproved-host auto-allow</p>
<p>• Fixed Windows permission rules never matching when spelled with backslashes (~\, \\server\share) or case-variant paths, and Read deny rules not hiding files from Glob/Grep results</p>
<p>• Fixed an interrupt (Esc) sent at the very start of a turn being silently dropped in stream-json/SDK sessions, leaving the turn running with no "Interrupted" feedback</p>
<p>• Fixed API 400 no low surrogate in string errors for classifier side-queries and MCP server descriptions containing emoji near a truncation boundary</p>
<p>• Fixed MCP per-server timeout config values below 1000 ms being floored to a 1-second watchdog that aborted every tool call; sub-1000 ms values are now ignored (falling back to MCP_TOOL_TIMEOUT or default), and claude mcp get annotates them accordingly</p>
<p>• Fixed the LSP tool's workspaceSymbol operation returning no results; it now accepts a query parameter and passes it to the language server</p>
<p>• Fixed claude agents cutting live status text (tool args, replies, prompts, exec output) at 60–120 columns on wide terminals; the status detail now uses the full terminal width</p>
<p>• Fixed claude agents truncating long session names at 40 columns; the name column now grows with terminal width</p>
<p>• Fixed claude agents attach occasionally bouncing straight back to the session list on the first try after a background-service restart</p>
<p>• Fixed claude agents Ctrl+V image paste doing nothing in the dispatch input and the session reply box; pasting with no image now shows a hint</p>
<p>• Fixed backgrounding a session with ← silently losing the conversation when the background service cannot start; the session stays in the list as a failed row you can wake with Enter</p>
<p>• Fixed replies from the agents view that fail to send being lost; they are now queued for delivery on the next session start</p>
<p>• Fixed cross-session messaging (SendMessage) silently breaking when CLAUDE_CODE_TMPDIR or $TMPDIR points at a deep directory</p>
<p>• Fixed opening a running background session from claude agents stalling for 5 seconds before attaching</p>
<p>• Quieter startup: notices group by severity, and session info and announcements share a single line per launch</p>
<p>• Startup warnings rewritten to be shorter and clearer, each with a concrete fix</p>
<p>• Launch-prompt warnings (deep link/pre-filled prompt) now stay pinned below the input until you act instead of scrolling away</p>
<p>• Failed turns now show a compact warning line instead of a multi-line red error block</p>
<p>• Improved background service startup and claude update verification to wait out endpoint-security scanning of new binaries instead of failing after 5 seconds</p>
<p>• Background dispatch spawn failures now report the error class name when no errno is available</p>
<p>• Removed the "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto-updates and the team-onboarding tip now show as quiet notices under the logo</p></content>
<contenttype="html"><p>• Auto mode is now available on Bedrock, Vertex, and Foundry for Opus 4.7 and Opus 4.8. Opt in by setting CLAUDE_CODE_ENABLE_AUTO_MODE=1</p></content>
<contenttype="html"><p>• Plugins in .claude/skills directories are now automatically loaded, no marketplace required</p>
<p>• Added claude plugin init &lt;name&gt; to scaffold a new plugin in .claude/skills</p>
<p>• Added autocomplete for /plugin arguments: subcommands, installed plugin names, and plugins from known marketplaces</p>
<p>• claude agents: the agent field in settings.json is now honored for dispatched sessions, with --agent &lt;name&gt; to override it</p>
<p>• EnterWorktree can now switch between Claude-managed worktrees mid-session</p>
<p>• tool_decision telemetry events now include tool_parameters (bash commands, MCP/skill names) when OTEL_LOG_TOOL_DETAILS=1</p>
<p>• Worktrees managed by Claude are now left unlocked when the agent finishes, so git worktree remove/prune can clean them up</p>
<p>• Fixed unprocessable images (zero-byte, corrupt) attached via paste, MCP, or dialog crashing the request instead of becoming a text placeholder</p>
<p>• Fixed sandbox network permission prompts appearing in auto and bypass-permissions mode when using the desktop app, IDE extensions, or SDK</p>
<p>• Fixed claude agents completed sessions not retiring when an idle subagent was still parked or had leaked a backgrounded shell</p>
<p>• Fixed claude agents pressing Esc not cancelling a slow "opening…", leaving the list unresponsive</p>
<p>• Fixed background agent worktrees under .claude/worktrees/ being orphaned after the 30-day job retention sweep</p>
<p>• Fixed background sessions re-attached after a sleep/wake not telling the model the correct date</p>
<p>• Fixed copy-on-select in claude agents not reaching the system clipboard inside tmux with set-clipboard on (regression in 2.1.153)</p>
<p>• Fixed --resume not reporting background subagents that were running when the previous Claude Code process exited</p>
<p>• Fixed the --resume session picker leaving its contents on the terminal after exiting in fullscreen mode</p>
<p>• Fixed --worktree and --worktree --tmux returning to the canonical repo root instead of the current linked worktree</p>
<p>• Fixed the /model picker showing an incorrect "Newer version available" hint when the selected model is already the newest in its family; the pinned-model row now shows the model's description instead of its raw ID</p>
<p>• Fixed literal markdown markers (backticks, asterisks) appearing in the in-progress message text in fullscreen mode</p>
<p>• Fixed the terminal freezing after approving the managed-settings security dialog at startup</p>
<p>• Fixed a rare duplicate line appearing in scrollback after the terminal UI redraws</p>
<p>• Fixed right-click paste duplicating the clipboard in the VS Code, Cursor, and Windsurf integrated terminals</p>
<p>• WSL: fixed image paste (alt+v keybinding), screenshot paste on Windows 11, and added support for dragging images from Windows Explorer</p>
<p>• Improved performance of long and resumed conversations by eliminating redundant message-rendering recomputations</p>
<p>• /terminal-setup now disables GPU acceleration in VS Code/Cursor/Windsurf integrated terminals to prevent garbled-text rendering</p>
<p>• The Feature of the Week credit-claim status now appears as a notification in the status area instead of a line above the prompt</p>
<p>• claude agents: slash-command autocomplete in the dispatch input now matches substrings</p>
<p>• Removed the "bash commands will be sandboxed" startup banner — sandbox status still shows in /status and when a command is blocked</p>
<p>• Removed the "/ide for …" startup hint toast</p>
<p>• [IDE] Fixed clicking Stop while a background subagent is running not actually stopping it</p>
<p>• [VSCode] Fixed the fast mode indicator not appearing on Opus 4.8</p>
<p>• Pressing backspace right after a workflow trigger keyword now dismisses the workflow request (same as alt+w) instead of deleting a character</p>
<p>• Added a "Workflow keyword trigger" setting in /config to stop the word "workflow" in a prompt from triggering a dynamic workflow</p></content>
<contenttype="html"><p>• Opus 4.8 is here! Now defaults to high effort · /effort xhigh for your hardest tasks</p>
<p>• Introducing dynamic workflows: ask Claude to create a workflow and it orchestrates work across tens to hundreds of agents in the background, so you can take on larger, more complex tasks. Run /workflows to view your runs</p>
<p>• Fast mode on Opus 4.8 is now available at a fraction of its previous cost: 2x the standard rate for 2.5x the speed</p>
<p>• The lean system prompt is now the default for all models except Haiku, Sonnet, and Opus 4.7 and earlier</p>
<p>• Claude now reserves the multiple-choice question prompt for decisions it genuinely cannot make itself, instead of asking when it already has enough context to proceed</p>
<p>• /simplify now runs a cleanup-only review (reuse, simplification, efficiency, altitude) and applies the fixes, instead of running the full /code-review --fix bug-hunting review</p>
<p>• Renamed the /effort slider labels from "Speed"/"Intelligence" to "Faster"/"Smarter" for clarity</p>
<p>• claude agents: type ! &lt;command&gt; to run a shell command as a background session you can attach to and detach from. Also available as claude --bg --exec '&lt;command&gt;'</p>
<p>• claude agents: /logout now signs you out instead of being sent to a background session</p>
<p>• ←← to open the agents view now works on Bedrock, Vertex, Foundry, and with telemetry disabled</p>
<p>• Claude in Chrome: pick which connected browser to use via /chrome → "Select browser…", or in-chat when a browser action runs with multiple connected</p>
<p>• Plugins can now declare defaultEnabled: false in plugin.json or a marketplace entry; enable them with /plugin or claude plugin enable. Dependencies of enabled plugins are still enabled automatically</p>
<p>• The /plugin Discover tab now pins plugins whose relevance signals match the current directory with a "suggested for this directory" annotation</p>
<p>• Streaming tool execution is now always enabled, including when telemetry is disabled or on Bedrock/Vertex/Foundry (previously behind a feature flag)</p>
<p>• Stdio MCP server subprocesses now receive CLAUDE_CODE_SESSION_ID and CLAUDECODE=1 in their environment</p>
<p>• claude mcp list/get now show unapproved .mcp.json servers as ⏸ Pending approval instead of auto-approving and connecting when output is piped</p>
<p>• /remote-control autocomplete now shows "Disconnect Remote Control" when Remote Control is already active</p>
<p>• Added Claude Opus 4.8 support and 4.7 → 4.8 migration guidance to the /claude-api skill</p>
<p>• Deprecated CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE (will be removed on 06/01). To use fast mode on Opus 4.6, switch with /model claude-opus-4-6[1m] and then /fast on</p>
<p>• Improved the auto-mode classifier's detection of data exfiltration, particularly bulk transfers of repository contents</p>
<p>• Fixed rm -rf $HOME not being blocked as a dangerous path when HOME has a trailing slash</p>
<p>• Fixed $TMPDIR resolving to different directories in sandboxed vs unsandboxed Bash commands within the same session</p>
<p>• Fixed unreadable highlighted-row text in claude agents when the Claude Code theme doesn't match the terminal background</p>
<p>• Fixed background-agent completion notifications triggering premature "out of context" behavior on some 1M-context models</p>
<p>• Fixed background-session classifier losing the user's goal when a scheduled /command fires</p>
<p>• Fixed pinned background sessions respawning every minute after a Claude Code update, causing repeated agent-start notifications and process churn at idle</p>
<p>• Fixed background sessions stuck at "blocked", "running", or "working" not retiring after the idle grace period</p>
<p>• Fixed subagents in background sessions bypassing the worktree-isolation guard and writing to the shared checkout</p>
<p>• Fixed orphaned claude --bg-pty-host processes spinning at 100% CPU after the daemon exits on macOS</p>
<p>• Fixed number key shortcuts not working for options shown below the divider in option dialogs</p>
<p>• Fixed worktree.baseRef: "head" resolving to the main checkout's HEAD instead of the current worktree's HEAD when spawning subagents or calling EnterWorktree from inside a linked worktree</p>
<p>• Fixed a stray leading space on wrapped lines when the previous line ended exactly at the terminal width</p>
<p>• Fixed intermittent terminal rendering corruption in VS Code by capping the number of distinct colors the thinking spinner produces</p>
<p>• Fixed plan file names including [Image #N] / [Pasted text #N] placeholders when a plan-mode prompt starts with pasted images or text</p>
<p>• Fixed a phantom expand/click affordance on colored tool output: short ANSI-colored lines that fit on screen no longer show a "ctrl+o to expand" hint</p>
<p>• Fixed a single invalid allowedMcpServers/deniedMcpServers entry in managed settings discarding all managed-settings policy; the bad entry is now dropped with a claude doctor warning</p>
<p>• Fixed API 400 errors on models that don't support the effort parameter when CLAUDE_CODE_ALWAYS_ENABLE_EFFORT is set</p>
<p>• Windows: Fixed update failures caused by claude.exe being in use showing a generic error instead of telling you to close other sessions and retry</p>
<p>• Removed the stale "&amp; for background" hint from the shortcuts help panel</p>
<p>• [VSCode] Auto mode no longer requires the bypass-permissions setting to appear in the mode picker, and a dismissable notice on the new-session screen explains auto mode the first time it's active</p>
<p>• Fixed the task panel below the prompt showing a stray unselectable "main" row when only a workflow is running</p>
<p>• Fixed /mcp tools list and tool detail rendering when MCP servers have long or multi-line tool names or long descriptions</p>
<p>• Fixed the /model picker not showing fast mode pricing on the Default option for API (pay-as-you-go) users when fast mode is on</p>
<p>• Fixed auto mode incorrectly blocking actions with "could not evaluate this action" when the safety classifier ran out of output tokens while reasoning</p></content>
<contenttype="html"><p>• Added skipLfs option to github/git plugin marketplace sources to skip Git LFS downloads during clone and update</p>
<p>• Claude Code now shows a one-time notice when your npm global install can't auto-update; /doctor lists the fixes</p>
<p>• Status line commands now receive COLUMNS and LINES environment variables so scripts can size output to the terminal width</p>
<p>• claude agents: autocomplete in the dispatch input now suggests native slash commands and bundled skills, not just project skills</p>
<p>• claude agents: PR column now shows PR #N for a single PR or N PRs for multiple</p>
<p>• claude doctor now shows the result of your last update attempt</p>
<p>• Combined the separate "needs authentication" startup notifications for MCP servers and connectors into a single message</p>
<p>• macOS: background agents now appear as "Claude Code" in Privacy &amp; Security and keep their permission grants across upgrades</p>
<p>• Fixed stateful MCP servers without the optional GET SSE stream reconnect-looping on tools/list (regression in v2.1.147)</p>
<p>• Fixed a regression where a custom API gateway could receive the user's Anthropic OAuth credential instead of the gateway's own token</p>
<p>• --strict-mcp-config no longer strips inline mcpServers from explicitly-passed agent definitions (--agents / SDK agents), and blocked subagent MCP servers now surface a visible warning</p>
<p>• Fixed the Windows PowerShell installer reporting "Installation complete!" when installation actually failed</p>
<p>• Fixed claude update installing the latest version instead of the configured release channel's version for npm installations</p>
<p>• Fixed excessive memory usage (multiple GB) when resuming a session by transcript file path on machines with many stored sessions</p>
<p>• Fixed claude agents and claude --bg running on a stale daemon started before binary-takeover support, even after upgrading</p>
<p>• Fixed a hang where the CLI could fail to exit when stdin was closed without EOF in stream-json mode, leaving a stale session marker behind</p>
<p>• Fixed malformed file:// links in Claude's responses not being clickable in the terminal</p>
<p>• Fixed claude --help rendering unwrapped output on terminals narrower than 92 columns</p>
<p>• Fixed MCP tool progress notifications not rendering in the collapsed tool view</p>
<p>• Fixed Agent tool with subagent_type: 'claude' running in an undocumented temporary worktree, which could silently discard outputs written to gitignored paths</p>
<p>• /bg while Claude is responding now continues the response in the background session instead of dropping it</p>
<p>• Fixed /btw keyboard shortcuts becoming unresponsive in background sessions while a task is running</p>
<p>• Fixed background sessions writing temp files to $CLAUDE_JOB_DIR triggering a "sensitive file" permission prompt</p>
<p>• Fixed recovering a background agent whose working directory was deleted showing a truncated stack trace instead of a clear error message</p>
<p>• Fixed EnterWorktree not being available immediately in background sessions (previously required ToolSearch first)</p>
<p>• Fixed cmd+k in iTerm2/Terminal.app not repainting attached background sessions</p>
<p>• Fixed the IME candidate window appearing at the bottom of the screen instead of next to the input caret in attached background sessions on Windows</p>
<p>• Fixed background-color bleed when attaching to a background agent from 256-color-only terminals after the agent had rendered file diffs</p>
<p>• Fixed /copy and copy-on-select silently failing to update the system clipboard when attached to a background session inside tmux</p>
<p>• Fixed opening claude agents with Remote Control enabled leaving zombie session entries on the Code tab after exiting</p>
<p>• Fixed /rename in background sessions not updating the session banner immediately</p>
<p>• Fixed Windows update rollback: if a Windows update fails, Claude Code now restores the original executable by copy and tells you how to recover</p>
<p>• [VSCode] Fixed Claude Code processes not shutting down cleanly when VS Code closed on Windows, causing false "unclean exit" reports and orphaned MCP servers</p>
<p>• /model now saves your selection as the default for new sessions (matching the IDE). Press s in the picker to switch models for the current session only.</p>
<p>• If you customized the modelPicker:setAsDefault keybinding, rename it to modelPicker:thisSessionOnly in keybindings.json (the d action was replaced by s)</p></content>
<contenttype="html"><p>• /code-review --fix now applies review findings to your working tree after the review, surfacing reuse, simplification, and efficiency suggestions; /simplify now invokes /code-review --fix</p>
<p>• Skills and slash commands can now set disallowed-tools in frontmatter to remove tools from the model while the skill is active</p>
<p>• Added /reload-skills command to re-scan skill directories without restarting the session</p>
<p>• SessionStart hooks can now return reloadSkills: true to re-scan skill directories, making skills installed by the hook available in the same session</p>
<p>• SessionStart hooks can now set the session title via hookSpecificOutput.sessionTitle on startup and resume</p>
<p>• Added a MessageDisplay hook event that lets hooks transform or hide assistant message text as it is displayed</p>
<p>• Added pluginSuggestionMarketplaces managed setting: admins can allowlist org marketplaces whose plugins may be suggested via context-aware tips</p>
<p>• claude plugin marketplace remove now accepts --scope user|project|local for symmetry with marketplace add, install, and uninstall</p>
<p>• Claude Code now switches to your configured --fallback-model for the rest of the session when the primary model is not found, instead of failing every request</p>
<p>• Auto mode no longer requires opt-in consent</p>
<p>• Vim mode: / in NORMAL mode now opens reverse history search (like Ctrl+R), matching bash/zsh vi-mode</p>
<p>• The /usage breakdown now includes large session files; files are scanned with a streaming read so memory usage stays flat</p>
<p>• Thinking summaries in the collapsed group now stay readable for at least 3 seconds, render as markdown, and cap at 10 lines (Ctrl+O shows the full thinking)</p>
<p>• In fullscreen mode, the "Thinking for Ns" indicator now counts up live while the model is thinking, and keeps its value if you interrupt mid-thought</p>
<p>• Simplified the Workflow tool's inline progress display — live agent counts now show only in the persistent workflow status row below the prompt</p>
<p>• The post-response timer now shows "Waiting for N background agents/workflows to finish" when backgrounded agents or workflows are still running, and reports the cumulative time once their results are processed</p>
<p>• Added the session entrypoint as an OpenTelemetry metric attribute (app.entrypoint, opt-in via OTEL_METRICS_INCLUDE_ENTRYPOINT=true)</p>
<p>• Fixed terminal styling degrading in very long sessions by recycling the renderer's style pool</p>
<p>• Fixed the sandbox-enabled warning not appearing in condensed startup mode — it now shows in every layout</p>
<p>• Fixed the loading spinner showing "still thinking"/"almost done thinking" while a tool is running, and reset the thinking status to "thinking" after each tool</p>
<p>• Fixed focus mode showing a spurious "N messages hidden" count on turns with no hidden activity</p>
<p>• Fixed clicking a link inside an expanded tool result collapsing the section instead of opening the link</p>
<p>• Fixed markdown table cell borders inheriting the color of inline code, wrapped continuation lines losing their style, and empty header cells showing a label in the narrow-terminal stacked layout</p>
<p>• Fixed plugin MCP servers with the same command but different environment variables being incorrectly deduplicated</p>
<p>• Fixed /doctor reporting "marketplace not found" or "plugin not found" for stale enabledPlugins entries referencing removed marketplaces or dropped plugins</p>
<p>• Fixed plugins that track a git branch silently no longer receiving updates after the plugin registry was rebuilt</p>
<p>• Fixed remote MCP servers failing to connect in Claude Code Remote sessions when the egress proxy is enabled</p>
<p>• Fixed the effort-change confirmation dialog appearing when the conversation has no messages or when switching between effort levels that resolve to the same underlying value</p>
<p>• Fixed the Agent tool description referencing an agent list that is never delivered when running with --bare or with attachments disabled</p>
<p>• Fixed a background worker crash in claude agents when accepting a stale permission prompt after a subagent was cancelled</p>
<p>• Fixed cache_creation_input_tokens reporting as 0 in transcript and result usage when the API reports cache writes only via the nested cache_creation breakdown</p>
<p>• Fixed the PushNotification tool incorrectly reporting "Mobile push not sent (Remote Control inactive)" in SDK-hosted sessions when Remote Control is enabled</p>
<p>• Fixed sessions getting stuck after a model or login switch left stale thinking-block signatures in history; now stripped proactively with a retry safety-net</p></content>
<contenttype="html"><p>• /usage now shows a per-category breakdown of what's driving your limits usage — skills, subagents, plugins, and per-MCP-server cost</p>
<p>• /diff detail view can now be scrolled with the keyboard (arrows, j/k, PgUp/PgDn, Space, Home/End)</p>
<p>• Markdown output now renders GFM task list checkboxes (- [ ] todo / - [x] done) instead of plain bullets</p>
<p>• Enterprise: added the allowAllClaudeAiMcps managed setting to load claude.ai cloud MCP connectors alongside managed-mcp.json</p>
<p>• Fixed a PowerShell permission bypass: built-in cd functions (cd.., cd\, cd~, X:) changed the working directory undetected, letting a later command read outside the workspace</p>
<p>• Fixed the sandbox write allowlist in git worktrees covering the entire main repository root instead of only the shared .git directory (with hooks/ and config denied)</p>
<p>• Fixed PowerShell prefix/wildcard allow rules (e.g. PowerShell(dotnet.exe build *)) not pre-approving native executables and scripts</p>
<p>• Fixed a permission-analysis gap where the parser trusted stale variable-tracking values for PWD/OLDPWD/DIRSTACK across cd/pushd/popd</p>
<p>• Fixed find in the Bash tool exhausting the macOS system file/vnode table and crashing the host on large directory trees</p>
<p>• Fixed the managed-settings approval dialog leaving the terminal frozen after accepting at startup</p>
<p>• Fixed /ultraplan and remote session creation failing with "Could not capture uncommitted changes" when the working tree has no real changes</p>
<p>• Fixed otelHeadersHelper failing silently when the script path contains spaces; helper failures are now reported in /doctor and the debug log</p>
<p>• Fixed the thinking spinner staying amber across tool calls and onto fresh thinking bursts</p>
<p>• Fixed collapsed Bash output reporting the wrong hidden-line count for outputs with many short lines</p>
<p>• Fixed slash-command argument-hint clipping trailing typed characters when the hint overflows the input box</p>
<p>• Fixed argument-hint and progressive arg suggestions not appearing after Tab-completing a skill whose frontmatter name: differs from its directory basename</p>
<p>• Fixed the status bar showing the user's baseline /effort setting instead of the effort level applied by skill/agent effort: frontmatter</p>
<p>• Fixed Ctrl+O transcript view freezing at the moment it was opened instead of tailing new messages</p>
<p>• Fixed editing a recalled prompt-history entry losing the edit when navigating further up/down with arrow keys</p>
<p>• Fixed /config exit summary reporting phantom changes to auto-compact and theme when toggling unrelated settings</p>
<p>• Fixed /insights crashing when cached session-meta files are missing optional fields</p>
<p>• Fixed malformed PowerShell and History tool calls with missing input being misclassified as reads in transcript collapsing</p>
<p>• Fixed renaming a Remote Control session from claude.ai or the Claude mobile app not updating the local session name for claude --resume</p>
<p>• Fixed a race where a just-submitted prompt could appear twice in the up-arrow history</p>
<p>• Fixed tapping the "Jump to bottom" pill in fullscreen mode not dismissing it immediately</p>
<p>• Improved /feedback reports to include the conversation that happened before context compaction, making issues from earlier in long sessions easier to triage</p></content>
<contenttype="html"><p>• Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147)</p></content>
<contenttype="html"><p>• Pinned background sessions (Ctrl+T in claude agents) now stay alive when idle, are restarted in place to apply Claude Code updates, and are shed under memory pressure only after non-pinned sessions</p>
<p>• Renamed /simplify to /code-review. It now reports correctness bugs at a chosen effort level (e.g., /code-review high); pass --comment to post findings as inline GitHub PR comments. The old cleanup-and-fix behavior has been removed</p>
<p>• Improved auto-updater: retries transient network failures, reports specific error categories and OS error codes on failure, and shows the current version when an update fails</p>
<p>• Improved diff rendering performance for large file edits</p>
<p>• Prompt history no longer records consecutive duplicate entries — recalling a prompt with arrow-up and submitting it again won't add another copy</p>
<p>• Fixed enterprise login restrictions (forceLoginOrgUUID and forceLoginMethod managed-settings) not being enforced against third-party-provider and API-key sessions</p>
<p>• Fixed &amp; in ! command output displaying as &amp;amp;, which broke copy-pasting URLs from commands like gcloud auth login on headless machines</p>
<p>• Fixed unknown slash commands silently doing nothing in headless/SDK mode — they now show an error message</p>
<p>• Fixed /help rendering a broken tab header and showing only one command per page on small terminals when not in fullscreen mode</p>
<p>• Fixed shell snapshot dropping user functions whose names start with a single underscore, which broke aliases referencing them</p>
<p>• Fixed plugin agents that declare multiple Agent(...) types in tools: frontmatter dropping all but the last entry</p>
<p>• Fixed hook if conditions like PowerShell(git push*) never matching — only PowerShell(*) worked</p>
<p>• Fixed PowerShell tool dropping output for commands that rely on the default formatter</p>
<p>• Fixed: on Windows, "Yes, and don't ask again" for a PowerShell script invocation now writes a rule that actually matches on subsequent runs</p>
<p>• Fixed PowerShell tool failing on Windows with exit code 1 when pwsh is installed via winget or the Microsoft Store</p>
<p>• Fixed /effort opening with the slider on the wrong level — it now starts at your current effort</p>
<p>• Fixed paginating MCP servers dropping resources, templates, and prompts past page 1</p>
<p>• Fixed full-screen strobing in attached background sessions on Windows Terminal while Claude is streaming</p>
<p>• Fixed: on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo</p>
<p>• Fixed /background refusing sessions whose only typed input was a skill or custom slash command</p>
<p>• Fixed auto mode suppressing AskUserQuestion when the user or a skill explicitly relies on it; the auto-mode classifier now sees the user's answers as intent signal</p>
<p>• Fixed /theme "New custom theme" and color editor dialogs not responding to Esc</p>
<p>• Fixed an uncaught exception at the end of streaming sessions when running via the Agent SDK</p>
<p>• Fixed a rare hang when waiting for scroll to settle on Windows</p>
<p>• Fixed stale and doubled rows in the agent view list on Windows when background session results contain wide (CJK) characters</p>
<p>• Fixed pasted text being delivered to agents as an unreadable [Pasted text #N] placeholder instead of the actual content</p>
<p>• Fixed plugin component counts in claude plugin details and /plugin being doubled when a plugin's manifest listed paths overlapping its default directories</p>
<p>• Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again"</p>
<p>• Fixed GNOME Terminal right-click and middle-click paste not inserting text</p>
<p>• Fixed CLAUDE_CODE_SUBAGENT_MODEL not applying to teammate processes spawned by agent teams</p>
<p>• Fixed slash commands followed by a tab or newline being treated as an unknown command</p>
<p>• Fixed several spacing and layout glitches in the /plugin, /status, /mobile, /sandbox, and /permissions menus</p>
<p>• Fixed stripped images prompting the model to repeatedly re-read media that was no longer present</p></content>
<contenttype="html"><p>• Added claude agents --json to list live Claude sessions as JSON for scripting (tmux-resurrect, status bars, session pickers)</p>
<p>• Added agent_id and parent_agent_id attributes to claude_code.tool OTEL spans, and fixed trace parenting so background subagent spans nest under the dispatching Agent tool span</p>
<p>• Status line JSON input now includes GitHub repo and PR information when detected</p>
<p>• /plugin Discover and Browse screens now show a plugin's commands, agents, skills, hooks, and MCP/LSP servers before installation</p>
<p>• claude agents terminal tab title now shows the awaiting-input count so an alt-tabbed window tells you when an agent needs attention</p>
<p>• Slash command and @-mention suggestion list now supports mouse hover and click in fullscreen mode</p>
<p>• Stop and SubagentStop hook input now includes background_tasks and session_crons fields</p>
<p>• Fixed a permission-prompt bypass where bare variable assignments to non-allowlisted environment variables in Bash commands were auto-approved</p>
<p>• Fixed MCP prompt slash commands showing raw server validation errors when a required argument is omitted — the error now names the missing argument and shows expected usage</p>
<p>• Fixed the spinner and elapsed-time display freezing until a keypress after the terminal was resized or refocused</p>
<p>• Fixed the cross-project resume hint failing in default Windows PowerShell 5.1 — Windows now uses ; as the command separator</p>
<p>• Fixed voice push-to-talk not working in the agent view's reply pane</p>
<p>• Fixed task lists rendering in random order when several tasks are created at once</p>
<p>• Fixed stale "Failed to install Anthropic marketplace" banner showing when the marketplace is already installed</p>
<p>• Fixed the PR badge in the footer not updating immediately after gh pr create and other PR-state-changing commands run in-session</p>
<p>• Fixed Agent Teams teammates with non-ASCII names failing every API call due to invalid header encoding</p>
<p>• Fixed /review using a deprecated projectCards GraphQL query that errored on repos with Classic Projects</p>
<p>• Fixed claude plugin validate not flagging skills: entries that point at a file instead of a directory — the error now suggests the parent directory</p>
<p>• Fixed an infinite loop where a skill using context: fork could repeatedly re-invoke itself instead of running</p>
<p>• Improved the Read tool to return a truncated first page with a "PARTIAL view" notice instead of a hard error when a whole-file read exceeds the token limit</p></content>
<contenttype="html"><p>• Added /resume support for background sessions — sessions started via claude --bg or agent view now appear alongside interactive ones, marked with bg</p>
<p>• The /plugin browse and discover panes now show when a plugin was last updated</p>
<p>• /model now changes the model for the current session only; press d in the model picker to set a default for new sessions</p>
<p>• Renamed "extra usage" to "usage credits" across CLI copy; /extra-usage is now /usage-credits (old name still works)</p>
<p>• Fixed startup hanging up to 75s when api.anthropic.com is unreachable (captive portal, firewall, VPN issues) — side-channel API calls now time out after 15s</p>
<p>• Fixed garbled terminal output after a missed window-resize event (e.g. dragging a VS Code split-pane divider) — now self-heals on the next frame instead of requiring Ctrl+L</p>
<p>• Fixed progressive terminal display corruption (stale/garbled glyphs) that could appear in very long sessions and only cleared on terminal resize or restart</p>
<p>• Reduced terminal rendering glitches in VS Code by reducing spinner animation color count</p>
<p>• Fixed macOS background sessions crashing with "exit 1 before init" when the project lives under a Full Disk Access-protected folder (regression in 2.1.143)</p>
<p>• Fixed an unrecoverable conversation when reading a file whose image extension doesn't match its contents (e.g. HTML saved as .png) — now falls back to text</p>
<p>• Fewer spurious tool errors during search: head/tail file views now satisfy the read-before-edit check, and a "no matches" result (exit code 1) from egrep, fgrep, git grep, or git diff is no longer reported as a command failure</p>
<p>• Fixed /branch failing with "No conversation to branch" after entering a worktree or in some background sessions</p>
<p>• Fixed pressing Escape in the AskUserQuestion notes field aborting the turn instead of returning to answer selection</p>
<p>• Fixed model selection not applying when changed via the IDE model picker or applyFlagSettings after startup</p>
<p>• Resumed sessions now keep the model they were using instead of picking up another session's /model choice</p>
<p>• Fixed Bedrock and Vertex users unable to select "Opus (1M context)" from the /model picker (regression in v2.1.129)</p>
<p>• Fixed remote-session login failing with "Can't access this organization" for users with forceLoginMethod and forceLoginOrgUUID set</p>
<p>• Fixed MCP servers with paginated tools/list responses only returning the first page, silently dropping tools</p>
<p>• Fixed MCP images with unsupported MIME types (e.g. SVG) breaking the conversation — now saved to disk and referenced in the tool result</p>
<p>• Fixed file descriptor exhaustion when a build runs inside a skill directory — non-.md files no longer trigger skill reloads</p>
<p>• Fixed session title being generated from plugin monitor output instead of the user's first prompt</p>
<p>• Fixed Skill tool failing with permission error in headless mode (regression in v2.1.141)</p>
<p>• Fixed plugins enabled in your own settings showing "not cached" errors after first load on a fresh machine; plugins enabled only by a project's .claude/settings.json now show an actionable claude plugin install hint</p>
<p>• Fixed claude mcp list silently reporting no servers when .mcp.json can't be parsed (e.g. using VS Code's "servers" key instead of "mcpServers") — now shows configuration errors</p>
<p>• Fixed background side-queries on custom ANTHROPIC_BASE_URL setups and Bedrock Mantle not using Haiku — now falls back correctly when a first-party API key is configured or no Haiku model is set</p>
<p>• Fixed scrolling in attached background sessions on Windows — PgUp/PgDn, mouse wheel, and Ctrl+O transcript navigation now work</p>
<p>• Fixed a crash when closing the terminal while attached to a background session</p>
<p>• Fixed on Windows, pressing ← in claude agents leaving the list unresponsive to keyboard input</p>
<p>• Fixed ghost characters at the left edge when switching panes in Agent View on Windows Terminal with CJK content</p>
<p>• /bg and ←-detach now preserve directories added via /add-dir</p>
<p>• Fixed Edit/Write refusing with "background session hasn't isolated its changes yet" right after detaching a session that was already editing in place</p>
<p>• Fixed claude respawn &lt;id&gt; on a stopped background session showing "stopped" instead of running</p>
<p>• Fixed /resume picker not showing sessions forked from a background session</p>
<p>• Fixed opening a session from claude agents or running claude logs &lt;id&gt; hanging when the background service is unresponsive — now times out after 10s with a recovery hint</p>
<p>• Fixed background Bash tasks spawned by subagents staying "Running" in SDK task panels after the process exits</p>
<p>• Fixed completed or stopped background sessions briefly failing to wake being permanently marked as a startup crash</p>
<p>• Fixed markdown links in claude agents attached sessions rendering as plain text instead of clickable hyperlinks</p>
<p>• Fixed custom spinnerVerbs applying to the post-turn duration message — past-tense built-ins like "Worked for 5s" are restored there</p>
<p>• claude agents / --bg rejection messages now name the specific gate (non-TTY, env var, or setting) instead of a generic message</p>
<p>• claude --bg --name &lt;label&gt; now echoes the name in the post-spawn confirmation</p>
<p>• claude agents: renaming a background session with Ctrl+R now updates the attached session's banner immediately</p>
<p>• Background session worktree isolation guard now applies for non-git VCS users with WorktreeCreate hooks configured</p>
<p>• Plugin marketplace add/update now respects CLAUDE_CODE_PLUGIN_PREFER_HTTPS</p>
<p>• /plugin now returns to the Installed list after enabling, disabling, or uninstalling a plugin</p>
<p>• /doctor now shows an exec-form example when a command hook is missing the command field</p>
<p>• Skill-listing truncation is no longer shown as a startup notification — run /doctor for the full breakdown</p>
<p>• Improved recovery from rare pre-response stream stalls — now retries streaming once instead of falling back to a slower non-streaming request</p>
<p>• Improved SDK/headless MCP startup: pre-wait now overlaps startup instead of blocking before the first turn (up to 2s faster with slow MCP servers)</p>
<p>• The post-survey follow-up hint now appears after every non-dismiss survey response with context-aware copy, making it easier to share more detail via /feedback.</p></content>
<contenttype="html"><p>• Added plugin dependency enforcement: claude plugin disable now refuses when another enabled plugin depends on the target (with a copy-pasteable disable-chain hint), and claude plugin enable force-enables transitive dependencies</p>
<p>• Added projected context cost (per-turn and per-invocation token estimates) to the /plugin marketplace browse pane</p>
<p>• Added worktree.bgIsolation: "none" setting to let background sessions edit the working copy directly without EnterWorktree, for repos where worktrees are impractical</p>
<p>• PowerShell tool now passes -ExecutionPolicy Bypass. Opt out with CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1</p>
<p>• Background sessions now preserve the model and effort level you set after waking from idle</p>
<p>• Shift+Tab in attached agent sessions now includes auto mode in the cycle</p>
<p>• Fixed a corrupt .credentials.json with a non-array scopes value hanging the CLI on startup or silently aborting OAuth token refresh</p>
<p>• Fixed right-click paste in claude agents on Windows Terminal and WSL</p>
<p>• Fixed stop hooks that block repeatedly looping forever — the turn now ends with a warning after 8 consecutive blocks (override via CLAUDE_CODE_STOP_HOOK_BLOCK_CAP)</p>
<p>• Fixed Esc/Ctrl+C not cancelling a pending /loop wakeup while Claude is idle between iterations</p>
<p>• Fixed /goal evaluator firing while background shells or delegated subagents are still running</p>
<p>• Fixed NO_COLOR/FORCE_COLOR in settings.json env stripping Claude Code's own UI colors — they now apply to subprocesses only</p>
<p>• Fixed agent view spawning repeated PowerShell processes on Windows when listing sessions</p>
<p>• Fixed /bg without a prompt sending "continue" to the forked session — the fork now waits for input</p>
<p>• Fixed --agent &lt;name&gt; not finding plugin-contributed agents without the plugin: prefix</p>
<p>• Fixed deleting a session from agent view not removing its transcript file</p>
<p>• Fixed stale-fragment rendering when scrolling in attached background sessions on Windows Terminal</p>
<p>• Fixed background agents false-positive worker-stall detection storm after host sleep or macOS App Nap</p>
<p>• Fixed 5xx error messages pointing at status.claude.com instead of naming the configured gateway or cloud provider</p>
<p>• The PowerShell tool is now enabled by default on Windows for Bedrock, Vertex, and Foundry users. Opt out with CLAUDE_CODE_USE_POWERSHELL_TOOL=0.</p>
<p>• claude agents now accepts --add-dir, --settings, --mcp-config, and --plugin-dir and applies them to the dashboard and to background sessions dispatched from it</p>
<p>• claude agents accepts --permission-mode, --model, --effort, and --dangerously-skip-permissions to set defaults for sessions dispatched from the view</p>
<p>• claude --bg --dangerously-skip-permissions now persists across retire→wake</p>
<p>• Fixed background sessions silently capturing IDE file references into the warm spare's input, which caused the reference to be prepended to the next prompt dispatched from claude agents</p>
<p>• Worktree cleanup no longer falls back to rm -rf when git worktree remove fails, preventing loss of gitignored or in-progress files</p>
<p>• Fixed background-job sessions on macOS getting "Operation not permitted" errors when reading files under ~/Documents, ~/Desktop, or ~/Downloads, even with Full Disk Access granted.</p>
<p>• /bg now preserves --mcp-config, --settings, --add-dir, --plugin-dir, and --strict-mcp-config, so backgrounded sessions keep their MCP servers and settings across respawn.</p>
<p>• Background sessions launched from claude agents now honor permissions.defaultMode from settings.json (was previously overridden to auto mode)</p>
<p>• Fixed: on Windows, pressing ← in claude agents while a response was streaming could leave the agents list unresponsive to all input</p>
<p>• /bg and ←-detach now preserve --fallback-model, so backgrounded workers degrade to the fallback model on overload instead of hard-failing.</p>
<p>• /bg and ←-detach now preserve --allow-dangerously-skip-permissions, so the forked worker keeps bypass-permissions available in its Shift+Tab cycle.</p>
<p>• Fixed: background daemon spawn now falls back to the running binary when the ~/.local/bin/claude launcher is missing or non-executable</p>
<p>• Fixed claude agents --allow-dangerously-skip-permissions defaulting dispatched sessions to bypass mode instead of making it available in the permission cycle</p></content>
<contenttype="html"><p>• Added new claude agents flags: --add-dir, --settings, --mcp-config, --plugin-dir, --permission-mode, --model, --effort, and --dangerously-skip-permissions to configure dispatched background sessions</p>
<p>• Fast mode now uses Opus 4.7 by default (previously Opus 4.6). Set CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE=1 to pin fast mode to Opus 4.6</p>
<p>• Plugins with a root-level SKILL.md and no skills/ subdirectory are now surfaced as a skill</p>
<p>• The /plugin details pane and claude plugin details now show LSP servers a plugin provides</p>
<p>• /web-setup warns before replacing an existing GitHub App connection</p>
<p>• Fixed MCP_TOOL_TIMEOUT not raising the per-request fetch timeout for remote HTTP and SSE MCP servers, which capped tool calls at 60 seconds regardless of the configured value</p>
<p>• Fixed background sessions not recognizing pre-existing git worktrees, blocking Edit while EnterWorktree refused to create a duplicate</p>
<p>• Fixed background sessions disappearing and daemon reconnect failing after macOS sleep/wake — the daemon now detects clock jumps instead of treating them as elapsed idle time</p>
<p>• Fixed daemon not exiting cleanly after the binary is upgraded (e.g. brew upgrade), causing dispatched agents to crash-loop on the deleted path</p>
<p>• Fixed background agents crash-looping when the Claude-in-Chrome extension is connected without a shared tab</p>
<p>• Fixed clicking links in an attached claude agents session — the background worker's headless browser shim no longer applies while attached</p>
<p>• Fixed claude agents "v to open in editor" using the daemon's default editor instead of your shell's $EDITOR/$VISUAL</p>
<p>• Fixed claude agents deadlocking on Windows with network-drive working directories; Ctrl+C now works during startup</p>
<p>• Fixed background-color bleed when attaching to a claude agents session from Apple Terminal or other 256-color-only terminals</p>
<p>• Fixed claude --bg --dangerously-skip-permissions not persisting across retire/wake</p>
<p>• Fixed session titles being derived from the URL when the first message is a link</p>
<p>• Fixed redundant set_model requests from remote clients injecting duplicate /model breadcrumbs into the transcript</p>
<p>• Fixed plugins using skills: ["./"] showing a false "path escapes plugin directory" error</p>
<p>• Fixed plugin cache cleanup deleting the active plugin version directory when no installation metadata is present</p>
<p>• Fixed /plugin browse pane showing "0 installs" for newly published plugins</p>
<p>• Fixed plugin advisories not naming every plugin.json key that shadows a default folder</p>
<p>• Improved reactive compaction: the first summarize attempt now seeds from the original request's overflow size, avoiding a wasted near-full-context retry</p>
<p>• Improved hook configuration error: configuring a prompt- or agent-type hook for SessionStart/Setup/SubagentStart now shows a clear "use a command-type hook instead" error</p>
<p>• Removed stale /model claude-sonnet-4-20250514 suggestion from Usage Policy refusal messages</p></content>
<contenttype="html"><p>• Added terminalSequence field to hook JSON output so hooks can emit desktop notifications, window titles, and bells without a controlling terminal</p>
<p>• Added CLAUDE_CODE_PLUGIN_PREFER_HTTPS to clone GitHub plugin sources over HTTPS instead of SSH, for environments without a GitHub SSH key</p>
<p>• Added ANTHROPIC_WORKSPACE_ID environment variable for workload identity federation — scopes the minted token to a specific workspace when the federation rule covers more than one</p>
<p>• Added claude agents --cwd &lt;path&gt; to scope the session list to a directory</p>
<p>• /feedback can now include recent sessions (last 24 hours or 7 days) for issues spanning more than the current session</p>
<p>• Rewind menu: added "Summarize up to here" to compress earlier context while keeping recent turns intact</p>
<p>• Auto mode permission dialog now explains when a permissions.ask rule caused the prompt</p>
<p>• Restored the "view diff in your IDE" option on file-edit permission prompts when an IDE is connected</p>
<p>• Background agents launched via /bg or ←← now preserve the current permission mode instead of reverting to default</p>
<p>• claude agents: agents that finish work but leave a background shell running now move to Completed instead of staying under Working</p>
<p>• Improved spinner feedback during long thinking periods — the spinner now warms to amber after 10 seconds to signal Claude is still working</p>
<p>• Improved plugin menu navigation: →/Tab switch tabs, ↑ moves to the tab strip, and tab headers and search box are clickable in fullscreen mode</p>
<p>• Fixed background side-queries sending an unavailable Haiku model ID on Bedrock/Vertex/Foundry/gateway when no ANTHROPIC_SMALL_FAST_MODEL override is set — now falls back to the main-loop model</p>
<p>• Fixed claude daemon status and /doctor on Windows throwing when the daemon pipe key file is locked or unreadable — now shows the underlying error instead of an opaque failure</p>
<p>• Fixed claude agents showing the agent-type list instead of the dashboard when launched through a wrapper that adds flags</p>
<p>• Fixed claude agents opening a crashed session firing redundant dispatches when the working directory was deleted</p>
<p>• Fixed background jobs on a custom ANTHROPIC_BASE_URL gateway not getting auto-named — the namer now uses the main model when no Haiku model is configured</p>
<p>• Fixed /model in one session silently changing the autocompact threshold in other concurrent sessions</p>
<p>• Fixed switching permission mode while a tool-permission prompt is open not auto-dismissing the prompt when the new setting permits the tool</p>
<p>• Fixed pressing Enter while a permission/dialog prompt is open also submitting text in the input box</p>
<p>• Fixed hooks receiving a non-existent transcript_path after EnterWorktree switches the working directory</p>
<p>• Fixed markdown tables with cell wrapping falling back to the vertical key-value layout instead of rendering as a bordered grid (regression in 2.1.136)</p>
<p>• Fixed cancelled prompts being removed from Up-arrow history when auto-restored into the input box, avoiding duplicate entries</p>
<p>• Fixed prompts cancelled with Ctrl+C/Esc before any response being dropped from Up-arrow history</p>
<p>• Fixed Ctrl+C not interrupting a running turn while in vim INSERT/VISUAL mode</p>
<p>• Fixed alternative chat:submit keybindings (e.g. meta+enter, ctrl+enter) not working when enter is rebound to chat:newline</p>
<p>• Fixed prompt suggestions being silently disabled when an output style was configured</p>
<p>• Fixed spinnerVerbs setting not being honored in turn-completion messages</p>
<p>• Fixed AskUserQuestion popup hiding the last line of preceding chat content</p>
<p>• Fixed Web Search status showing "Did 0 searches" when searches returned errors</p>
<p>• Fixed multi-line statusline output dropping or corrupting rows when any line exceeds terminal width</p>
<p>• Fixed light-ansi theme using invisible white for diff context lines on light backgrounds — now uses black</p>
<p>• Fixed error overlay dumping minified bundle source that hid the original error message</p>
<p>• Fixed pressing Enter after typing a feedback survey rating digit submitting it as a chat message instead of the rating</p>
<p>• Fixed pressing x on a selected subagent in the agent panel typing into the prompt instead of stopping the agent</p>
<p>• Fixed session title being derived from plugin monitor notifications before the user's first prompt</p>
<p>• Fixed "Allowed by PermissionRequest hook" repeating once per tool call under a collapsed read/search group</p>
<p>• Fixed /tui silently dropping running background shells and subagents — now refuses and asks to wait for them to finish</p>
<p>• Fixed welcome banner showing "API Usage Billing" on Bedrock, Vertex, Foundry, and other third-party providers — now shows the provider name</p>
<p>• Fixed /mcp server list not keeping the focused server visible in short terminals in fullscreen mode</p>
<p>• Fixed redaction in /feedback bundles producing invalid JSON for quoted values like session IDs</p>
<p>• Fixed desktop and third-party provider sessions incorrectly inheriting apiKeyHelper/ANTHROPIC_AUTH_TOKEN from host managed-settings</p>
<p>• Fixed early analytics events being silently dropped when fired before logger initialization</p>
<p>• Fixed claude plugin install failing for plugins whose marketplace ref no longer exists upstream when a sha is also pinned</p>
<p>• Fixed plugin details pane showing 0 MCP servers for plugins that declare them via .mcp.json</p>
<p>• Fixed plugin MCP servers with unset config variables showing a generic connection failure instead of a "config issue" message with a fix-it hint; malformed .mcp.json entries no longer drop other MCP servers</p>
<p>• Fixed MCP server configs using POSIX shell parameter expansions (e.g. ${var%pattern}) being incorrectly flagged as missing environment variables</p>
<p>• Fixed MCP HTTP/SSE servers returning 403 on connect showing as "failed" instead of "needs auth"</p>
<p>• Fixed remote MCP servers disconnecting unnecessarily when the optional server-events stream failed to reconnect — tool calls continue over POST</p>
<p>• Fixed Remote Control MCP connectors all failing with 401 when the worker session token rotated mid-session</p>
<p>• Fixed Remote Control automatically re-enrolling a trusted device when the server rejects a stale token, instead of looping through /login</p>
<p>• Fixed a race where early OTel spans could be silently dropped in SDK/headless mode with beta tracing enabled</p>
<p>• Fixed custom voice:pushToTalk keybindings and "space": null unbinds being silently ignored</p>
<p>• Fixed Windows Alt+V image paste reporting "no image found" when the clipboard contains a screenshot</p>
<p>• Fixed SDK "Claude Code native binary not found" on Linux when both glibc and musl platform packages are installed</p>
<p>• Bedrock: awsCredentialExport now always runs when configured instead of being skipped when ambient AWS credentials resolve, fixing auth for cross-account access</p>
<p>• [VSCode] Fixed in-chat mic showing no feedback when the microphone produced only silence — now shows "No audio detected"</p>
<p>• [VSCode] Voice mode: the WSL error now suggests installing sox libsox-fmt-pulse for WSLg users</p>
<p>• claude agents: launching a session no longer fails when the pre-warmed background worker is unhealthy — now falls back to a fresh launch</p>
<p>• claude agents no longer shows empty placeholder sessions left over from backgrounding a fresh REPL, and shows onboarding text when entered via ← with no other agents</p>
<p>• Empty idle background sessions left over from ← are now automatically retired by the daemon after 5 minutes</p></content>
<contenttype="html"><p>• Improved Agent tool subagent_type matching to accept case- and separator-insensitive values (e.g. "Code Reviewer" resolves to code-reviewer)</p>
<p>• Updated agent color palette</p>
<p>• Fixed /goal silently hanging when disableAllHooks or allowManagedHooksOnly is set — now shows a clear message instead of an indicator that never resolves</p>
<p>• Fixed a regression in settings hot-reload where symlinked settings files caused misattributed change events and spurious ConfigChange hooks</p>
<p>• Fixed claude --bg failing with "connection dropped mid-request" when the background service was about to idle-exit</p>
<p>• Fixed background service startup failing on machines with enterprise endpoint security by allowing more time</p>
<p>• Fixed remote managed settings not retrying on 401 — now retries once with a force-refreshed token</p>
<p>• Fixed managed extraKnownMarketplaces auto-update policy not being persisted to known_marketplaces.json</p>
<p>• Fixed /loop scheduling redundant wakeups to poll for background tasks that already notify on completion</p>
<p>• Fixed a recurring event-loop stall on Windows when a missing executable (e.g. gh) triggered synchronous where.exe re-spawns on every check</p>
<p>• Fixed Read tool calls failing validation when offset is passed as a whitespace-padded or +-prefixed string</p>
<p>• Fixed native terminal cursor not staying at the input caret when the terminal loses focus</p>
<p>• Plugins now warn when a default component folder (e.g. commands/) is silently ignored because plugin.json sets the matching key. Shown in /doctor, claude plugin list, and /plugin.</p></content>
<contenttype="html"><p>• Added agent view (Research Preview): a single list of every Claude Code session — running, blocked on you, or done. Run claude agents to get started. See https://code.claude.com/docs/en/agent-view</p>
<p>• Added /goal command: set a completion condition and Claude keeps working across turns until it's met. Works in interactive, -p, and Remote Control. Shows live elapsed/turns/tokens as an overlay panel</p>
<p>• Added /scroll-speed command to tune mouse wheel scroll speed with a live preview</p>
<p>• Added claude plugin details &lt;name&gt; to show a plugin's component inventory and projected per-session token cost</p>
<p>• Added transcript view navigation: ? for keyboard shortcuts, {/} to jump between user prompts, v to toggle shortcut panel</p>
<p>• Added hook args: string[] field (exec form) that spawns the command directly without a shell, so path placeholders never need quoting</p>
<p>• Added hook continueOnBlock config option for PostToolUse — set to true to feed the hook's rejection reason back to Claude and continue the turn</p>
<p>• MCP stdio servers now receive CLAUDE_PROJECT_DIR in their environment, matching hooks. Plugin configs can reference ${CLAUDE_PROJECT_DIR} in commands</p>
<p>• Compaction prompt now asks the model to preserve sensitive user instructions</p>
<p>• /mcp Reconnect now picks up .mcp.json edits without a restart, and shows the HTTP status and URL when reconnecting fails</p>
<p>• /context all per-skill token estimates now account for the model's tokenizer and show rounded values</p>
<p>• claude plugin install &lt;name&gt;@&lt;marketplace&gt; now auto-refreshes the marketplace and retries before reporting a plugin as not found</p>
<p>• /plugin installed-plugin details now show hook event names and MCP server names cleanly</p>
<p>• /context now shows the providing plugin's name for plugin-sourced skills</p>
<p>• Remote MCP server reconnect retry on transient failures is now enabled for all users</p>
<p>• API requests from subagents now carry x-claude-code-agent-id / x-claude-code-parent-agent-id headers, and claude_code.llm_request OTEL spans include agent_id / parent_agent_id attributes</p>
<p>• Remote Control, /schedule, claude.ai MCP connectors, and notification preferences are now disabled when ANTHROPIC_API_KEY / apiKeyHelper / ANTHROPIC_AUTH_TOKEN is set, even if a Claude.ai login also exists. Unset the API key to use these features</p>
<p>• Fixed a deadlock where expired credentials and the forceRemoteSettingsRefresh policy setting blocked claude auth login/logout/status with no way to recover</p>
<p>• Fixed autoAllowBashIfSandboxed not auto-approving commands with shell expansions like $VAR and $(cmd)</p>
<p>• Fixed a bug where a hook writing to the terminal could corrupt an on-screen interactive prompt; hooks now run without terminal access</p>
<p>• Fixed unbounded memory growth when an HTTP/SSE MCP server streams non-protocol data — response bodies now capped at 16 MB per SSE frame</p>
<p>• Fixed Skill(name *) permission rules — the wildcard form now works as a prefix match, matching Bash(ls *) behavior</p>
<p>• Fixed settings hot-reload not detecting edits to symlinked ~/.claude/settings.json</p>
<p>• Fixed plugin details failing to load when the marketplace key differs from the manifest name</p>
<p>• Fixed /model picker "Default" row not reflecting ANTHROPIC_DEFAULT_OPUS_MODEL/ANTHROPIC_DEFAULT_SONNET_MODEL overrides</p>
<p>• Fixed spurious "stream idle timeout" 5 minutes after a response completed, caused by the watchdog timer not being cleared on stream cancellation</p>
<p>• Fixed silent exit 1 when 10+ MCP servers are configured and the cache directory is unwritable — the error message now includes the underlying cause</p>
<p>• Fixed a typing cursor blinking on tab names, list pointers, and select rows in dialogs</p>
<p>• Fixed transcript view letter shortcuts not working after mouse click</p>
<p>• Fixed Bash-mode up-arrow history repeating the first entry and clobbering the in-progress draft</p>
<p>• Fixed pasting or dropping multiple images only inserting the last one</p>
<p>• Fixed hyperlinks using unreadable dark navy on dark themes — they now adapt to the active theme</p>
<p>• Fixed model picker showing a redundant "Current model" row for third-party users whose model is set to the opus alias</p>
<p>• Fixed legacy Opus picker entry on PAYG 3P providers resolving to the same model as the default entry</p>
<p>• Fixed mouse wheel scrolling speed in Cursor and VS Code 1.92–1.104; the trackpad now scrolls at a steady rate and the mouse wheel keeps ~3 lines per notch</p>
<p>• Fixed scroll behavior in Windows Terminal and VS Code when attached to background sessions</p>
<p>• Fixed MCP resources from disconnected servers lingering in @server: autocomplete</p>
<p>• Fixed two-file diff snippets over-reporting the number of truncated lines by one</p>
<p>• Fixed Grep results not relativizing Windows drive-letter paths and count mode reporting wrong totals for single-file paths</p>
<p>• Fixed border-embedded text overflowing on CJK/emoji due to visual cell width miscalculation</p>
<p>• Fixed fuzzy-match highlighting splitting emoji and astral-plane characters mid-pair</p>
<p>• Fixed ProgressBar rendering a full block for an almost-full fractional cell</p>
<p>• Fixed task polling and fs.watch being resurrected when the last subscriber leaves while a fetch is in flight</p>
<p>• Fixed plugin dependency resolution leaving a stale count when the manifest name differs from the source identifier</p>
<p>• Fixed Insights Time-of-Day chart skewing when a session has an unparseable timestamp</p>
<p>• Fixed keybindings using only the cmd/super/win modifier being flagged as unparseable</p>
<p>• Fixed claude_code.active_time.total OpenTelemetry metric not being emitted in --print mode</p>
<p>• Fixed claude plugin update not preserving cross-plugin symlinks inside a marketplace</p>
<p>• [VSCode] Press Cmd/Ctrl+Shift+T to reopen the most recently closed session tab, configurable via claudeCode.enableReopenClosedSessionShortcut</p></content>
description: Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
license: Complete terms in LICENSE.txt
---
# Frontend Design
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
Approach this as the design lead at a small studio known for giving every client a visual identity that could not be mistaken for anyone else's. This client has already rejected proposals that felt templated, and is paying for a distinctive point of view: make deliberate, opinionated choices about palette, typography, and layout that are specific to this brief, and take one real aesthetic risk you can justify.
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
## Ground it in the subject
## Design Thinking
If the brief does not pin down what the product or subject is, pin it yourself before designing: name one concrete subject, its audience, and the page's single job, and state your choice. If there's any information in your memory about the human's preferences, context about what they're building, or designs you've made before – use that as a hint. The subject's own world, its materials, instruments, artifacts, and vernacular, is where distinctive choices come from. Build with the brief's real content and subject matter throughout.
Before coding, understand the context and commit to a BOLD aesthetic direction:
- **Purpose**: What problem does this interface solve? Who uses it?
- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
## Design principles
**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
For web designs, the hero is a thesis. Open with the most characteristic thing in the subject's world, in whatever form makes sense for it: a headline, an image, an animation, a live demo, an interactive moment. Be deliberate with your choice: a big number with a small label, supporting stats, and a gradient accent is the template answer, only use if that's truly the best option.
Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
- Production-grade and functional
- Visually striking and memorable
- Cohesive with a clear aesthetic point-of-view
- Meticulously refined in every detail
Typography carries the personality of the page. Pair the display and body faces deliberately, not the same families you would reach for on any other project, and set a clear type scale with intentional weights, widths, and spacing. Make the type treatment itself a memorable part of the design, not a neutral delivery vehicle for the content.
## Frontend Aesthetics Guidelines
Structure is information. Structural devices, numbering, eyebrows, dividers, labels, should encode something true about the content, not decorate it. Many generic designs use numbered markers (01 / 02 / 03), but that's only appropriate if the content actually is a sequence - like a real process or a typed timeline where order carries information the reader needs. Question if choices like numbered markers actually make sense before incorporating them.
Focus on:
- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
- **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
- **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
- **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
- **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
Leverage motion deliberately. Think about where and if animation can serve the subject: a page-load sequence, a scroll-triggered reveal, hover micro-interactions, ambient atmosphere. An orchestrated moment usually lands harder than scattered effects; choose what the direction calls for. However, sometimes less is more, and extra animation contributes to the feeling that the design is AI-generated.
NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
Match complexity to the vision. Maximalist directions need elaborate execution; minimal directions need precision in spacing, type, and detail. Elegance is executing the chosen vision well.
Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
Consider written content carefully. Often a design brief may not contain real content, and it's up to you to come up with copy. Copy can make a design feel as templated as the design itself. See the below section on writing for more guidance.
**IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
## Process: brainstorm, explore, plan, critique, build, critique again
For calibration: AI-generated design right now clusters around three looks: (1) a warm cream background (near #F4F1EA) with a high-contrast serif display and a terracotta accent; (2) a near-black background with a single bright acid-green or vermilion accent; (3) a broadsheet-style layout with hairline rules, zero border-radius, and dense newspaper-like columns. All three are legitimate for some briefs, but they are defaults rather than choices, and they appear regardless of subject. Where the brief pins down a visual direction, follow it exactly — the brief's own words always win, including when it asks for one of these looks. Where it leaves an axis free, don't spend that freedom on one of these defaults. Just like a human designer who's hired, there's often a careful balance between doing what you're good at and taking each project as a chance to experiment and learn.
Work in two passes. First, brainstorm a short design plan based on the human's design brief: create a compact token system with color, type, layout, and signature. Color: describe the palette as 4–6 named hex values. Type: the typefaces for 2+ roles (a characterful display face that's used with restraint, a complementary body face, and a utility face for captions or data if needed). Layout: a layout concept, using one-sentence prose descriptions and ASCII wireframes to ideate and compare. Signature: the single unique element this page will be remembered by that embodies the brief in an appropriate way.
Then review that plan against the brief before building: if any part of it reads like the generic default you would produce for any similar page (work through a similar prompt to see if you arrive somewhere similar) rather than a choice made for this specific brief — revise that part, say what you changed and why. Only after you've confirmed the relative uniqueness of your design plan should you start to write the code, following the revised plan exactly and deriving every color and type decision from it.
When writing the code, be careful of structuring your CSS selector specificities. It's easy to generate CSS classes that cancel each other out (especially with a type-based selector like .section and a element-based selector like .cta). This can happen often with paddings/margins between sections.
Try to do a lot of this planning and iteration in your thinking, and only show ideas to the user when you have higher confidence it'll delight them.
## Restraint and self-critique
Spend your boldness in one place. Let the signature element be the one memorable thing, keep everything around it quiet and disciplined, and cut any decoration that does not serve the brief. Not taking a risk can be a risk itself! Build to a quality floor without announcing it: responsive down to mobile, visible keyboard focus, reduced motion respected. Critique your own work as you build, taking screenshots if your environment supports it – a picture is worth 1000 tokens. Consider Chanel's advice: before leaving the house, take a look in the mirror and remove one accessory. Human creators have memory and always try to do something new, so if you have a space to quickly jot down notes about what you've tried, it can help you in future passes.
## More on writing in design
Words appear in a design for one reason: to make it easier to understand, and therefore easier to use. They are design material, not decoration. Bring the same intentionality to copy that you would bring to spacing and color. Before writing anything, ask what the design needs to say, and how it can best be said to help the person navigate the experience.
Write from the end user's side of the screen. Name things by what people control and recognize, never by how the system is built. A person manages notifications, not webhook config. Describe what something does in plain terms rather than selling it. Being specific is always better than being clever.
Use active voice as default. A control should say exactly what happens when it's used: "Save changes," not "Submit." An action keeps the same name through the whole flow, so the button that says "Publish" produces a toast that says "Published." The vocabulary of an interface is the signposting for someone navigating the product. Cohesion and consistency are how people learn their way around.
Treat failure and emptiness as moments for direction, not mood. Explain what went wrong and how to fix it, in the interface's voice rather than a person's. Errors don't apologize, and they are never vague about what happened. An empty screen is an invitation to act.
Keep the register conversational and tuned: plain verbs, sentence case, no filler, with tone matched to the brand and the audience. Let each element do exactly one job. A label labels, an example demonstrates, and nothing quietly does double duty.
Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.