"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
<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>• 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>
<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>
@@ -228,266 +424,4 @@
<updated>2026-05-30T02:42:09Z</updated>
<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>
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.
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.
license: Complete terms in LICENSE.txt
---
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.
# Frontend Design
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
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.
## Design Thinking
## Ground it in the subject
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?
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.
**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
## Design principles
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
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.
## Frontend Aesthetics Guidelines
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.
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.
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.
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.
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.
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.
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.
**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.
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.
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.
## 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.
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.