# Changelog ## 2.1.199 - Stacked slash-skill invocations like `/skill-a /skill-b do XYZ` now load all leading skills (up to 5), not just the first - Fixed SSL certificate errors (TLS-inspecting proxies, missing `NODE_EXTRA_CA_CERTS`, expired certs) burning retries before showing actionable guidance — they now fail immediately with the fix hint - Fixed streaming responses being discarded when the API emits a mid-stream overloaded/server error after partial output — the partial is now kept with an incomplete-response notice - Fixed subagents cut off by a rate limit or server error silently failing instead of returning their partial work to the parent - Fixed subagents reporting API errors (e.g. usage limit reached) as successful results — the error is now reported to the parent agent - Fixed the background-agent daemon on Linux killing itself and every running agent every ~50 seconds after an unclean shutdown left a corrupted worker record - Fixed background agents failing to cold-start over SSH on macOS with "Could not switch to audit session" (regression in 2.1.196) - Fixed `claude stop` being silently undone when it raced a background-agent respawn — the respawn now honors the stop - Fixed background job progress indicators stalling for minutes while the job ran long commands - Fixed background sessions on memory-starved machines showing a generic error — they now indicate low memory and suggest freeing resources - Fixed remote sessions briefly flapping between Working and Idle in the agent view when a background agent completes - Fixed idle subagents vanishing from the agent panel while other subagents were still working; surplus idle agents now collapse into an expandable summary row - Fixed typing `/model` or `/fast` while viewing a subagent silently opening the lead's model picker — a notice now explains the command applies to the lead - Fixed `SessionStart`, `Setup`, and `SubagentStart` hooks silently hiding stderr when exiting with code 2 — the error is now shown in the transcript - Fixed `claude --dangerously-skip-permissions daemon ` being treated as a chat prompt instead of running the subcommand - Fixed `SendMessage` silently misrouting when a re-spawned agent reuses a previous agent's name — the tool now detects the mismatch and asks the caller to retarget - Fixed opening or resuming a session with no new messages needlessly growing the transcript file - Fixed backgrounding a session with `←` or `/background` dropping its `/color` from the agent view row - Fixed resetting a corrupted config file from the startup recovery dialog destroying it unrecoverably — it now backs up the file first - Fixed Claude in Chrome repeatedly opening the reconnect page when sessions run from different builds or config directories - Fixed plan mode not prompting for state-changing browser tool calls; read-only `browser_batch` calls are now correctly auto-allowed - Transient server rate-limit errors (429s unrelated to your usage limit) are now retried automatically with backoff for subscribers instead of failing the turn - `CLAUDE_CODE_RETRY_WATCHDOG` now raises the default retry count for non-capacity transient errors to 300 and lifts the cap of 15 on `CLAUDE_CODE_MAX_RETRIES` - `claude agents` session rows now show pull-request links as bare `#N` without the redundant "PR" label ## 2.1.198 - Subagents now run in the background by default, so Claude keeps working while they run and is notified when they finish (previously a gradual rollout) - Claude in Chrome is now generally available - Added background agent notifications in `claude agents` — sessions that need input or finish now fire the `Notification` hook (`agent_needs_input` / `agent_completed`) - Added `/dataviz` skill for chart and dashboard design guidance with a runnable color-palette validator - Gateway: added Claude Platform on AWS (anthropicAws) as an upstream provider; model-not-found responses now advance the failover chain - Background agents launched from `claude agents` now commit, push, and open a draft PR when they finish code work in a worktree, instead of stopping to ask - The built-in Explore agent now inherits the main session's model (capped at opus) instead of running on haiku - Subagents and context compaction now inherit the session's extended thinking configuration, improving output quality on delegated tasks - Fixed brief network drops mid-response aborting the turn — transient errors like ECONNRESET now retry with backoff instead of failing - Fixed excessive background classifier requests when sandboxed processes repeatedly accessed the same network host - Fixed background tasks in web, desktop, and VS Code task panels getting stuck on "Running" after they finish or after resuming a session - Fixed agent teams: a teammate that dies on an API error now reports "failed" to the lead, and messaging a stuck teammate wakes it to retry immediately - Fixed the `/diff` panel not refreshing when you switch branches or commit outside the session - Fixed markdown tables overflowing and wrapping their right border when rendered in fullscreen mode - Fixed Claude Platform on AWS and Mantle sessions dead-ending with "Please run /login" when the STS token expires — `awsAuthRefresh` now runs automatically - Fixed "no route to host" for local-network hosts in macOS background agent sessions by declaring Local Network entitlements - Fixed `/desktop` failing with "Cannot determine working directory" after entering and exiting a worktree - Fixed background agents repeatedly showing "Reconnecting…" every ~52 seconds on macOS while the agents view was open - Fixed pressing `←` inside `claude attach ` exiting to the shell instead of opening the agent view - Fixed `claude --bg` silently creating an unattachable session when combined with `--print`/`-p`; the conflicting flags are now rejected up front - Fixed the workflow progress view dropping the earliest agents from the list while the phase counter stayed correct in SDK and desktop-app sessions - Fixed `.claude/rules/` conditional rules not loading when the target file is reached via a symlinked path - Fixed Cmd+click not opening URLs in fullscreen mode in Warp on macOS - Fixed double-click word selection in fullscreen mode to select the entire URL including the scheme - Fixed plan mode not auto-allowing read-only tool calls when a session starts in plan mode - Fixed `/branch` deriving its default fork name from the compaction summary instead of the first real prompt - Improved focus mode: subagents launched in a turn now appear in its activity summary, and completed background notifications fold into a single count - Improved syntax highlighting accuracy in code blocks, diffs, and file previews by upgrading to highlight.js 11 - Keyboard shortcut hints now show opt/cmd instead of alt/super when connected from a Mac over SSH - Improved API retry UX: the error reason is now shown after the second attempt, and a status page link replaces the spinner tip when the API is overloaded - `/login` now opens the sign-in dialog from the `claude agents` view instead of saying it isn't available - Subagents now treat messages from the agent that launched them as normal task direction; an agent's message is still never treated as the user's approval - Removed the `/agents` wizard; ask Claude to create or manage subagents, or edit `.claude/agents/` directly ## 2.1.197 - Introducing Claude Sonnet 5: now the default model in Claude Code, with a native 1M-token context window and promotional pricing of $2/$10 per Mtok through August 31. Update to version 2.1.197 for access. https://www.anthropic.com/news/claude-sonnet-5 ## 2.1.196 - Added support for organization default models — admins set it in the org console; it shows as "Org default" (or "Role default") in `/model` when you haven't picked one yourself - Added readable default names for sessions at start, making them easier to identify and message - Added clickable file attachments in chat — Cmd/Ctrl-click reveals the file in Finder/Explorer - Security: `claude mcp list`/`get` no longer spawn `.mcp.json` servers that a repo self-approved via a committed `.claude/settings.json`; untrusted workspaces show `⏸ Pending approval` - Fixed waking a background job permanently deleting its conversation and re-running the original prompt when the transcript probe misread a real transcript; the file is now set aside, never deleted - Fixed the rate-limit warning flickering off and rate-limit telemetry being over-counted when multiple parallel requests were in flight at the moment a usage limit was hit - Fixed duplicate recap lines after a background session's turn: a schema-rejected StructuredOutput attempt no longer renders alongside its retry - Fixed PowerShell `git diff`/`git grep`, `egrep`/`fgrep`, and quoted search patterns containing `|` being reported as failures when they exit 1, matching Bash behavior - Fixed multiple `claude agents` side panel issues: keyboard focus getting stuck when opening an agent, background jobs losing their subagent types on every open, and sessions showing incorrect status while actively running - Fixed `claude agents --dangerously-skip-permissions` silently falling back to auto mode instead of showing the bypass disclaimer and applying bypass mode to spawned agents - Fixed mid-turn crash recovery for Remote sessions — sessions interrupted by a server restart now auto-resume on the next worker - Fixed sessions moved with `/cd` reappearing in the old directory's resume list after a non-graceful exit when the old path contained special characters - Fixed `claude plugin validate` skipping local plugins whose source is "." and stopping after the first error class - Fixed Esc Esc at an idle prompt not opening the rewind menu (regression); use Ctrl+C or Ctrl+X Ctrl+K to stop background agents - Fixed MCP OAuth requesting the authorization server's full `scopes_supported` catalog when no scope is specified, causing `invalid_scope` failures on GitLab self-hosted and other enterprise IdPs - Fixed `/context` showing 0 tokens for all tool groups on Bedrock - Fixed `/deep-research` misreporting verifier failures as "all claims refuted" instead of `unverified` - Fixed plugin dependency version pins not being honored when the marketplace was added as a local folder path backed by a git repo - Fixed `claude agents` session status: completed rows no longer flip between "Done" and "Needs your input", stalled agents are now labeled "Needs attention", and results that mention a PR show a clickable link - Fixed voice dictation swallowing spaces and spuriously starting a recording during very fast typing when voice mode is enabled - Improved background session reliability: long-running commands and workflows now survive the session's process being stopped, restarted, or updated — including on Windows, where background shells are handed off instead of being killed - Improved background agents: workers killed by a daemon restart are now automatically resumed from where they left off the next time the agents view opens - Improved `/code-review` workflow: merged five cleanup finders into one, cutting token usage by roughly 25% - Reduced per-frame rendering work in the terminal UI by skipping no-op subtree walks during streaming - The streaming idle watchdog is now on by default for all providers — it aborts and retries when a response stream produces no events for 5 minutes. Set `CLAUDE_ENABLE_STREAM_WATCHDOG=0` to disable. - Remote Control is now disabled when `ANTHROPIC_BASE_URL` points at a non-Anthropic host, matching the existing behavior under `CLAUDE_CODE_USE_BEDROCK`/`_VERTEX`/`_FOUNDRY` - Changed opening the agents view from a foreground session to require a single `←` press instead of two, matching the behavior in background sessions ## 2.1.195 - Added `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` to disable mouse click/drag/hover in fullscreen mode while keeping wheel scroll - Fixed hook matchers with hyphenated identifiers (e.g. `code-reviewer`, `mcp__brave-search`) accidentally substring-matching — they now exact-match. Use `mcp__brave-search__.*` to match all tools from a hyphenated MCP server. - Fixed voice dictation on macOS capturing silence in long-running sessions after the default input device changes - Fixed voice dictation auto-submit never firing for languages written without spaces (Japanese, Chinese, Thai) - Fixed external plugins enabled only by project `.claude/settings.json` not requiring explicit install consent on every loader path - Fixed `/plugin` Enable/Disable not working when a plugin's `plugin.json` `name` differs from its marketplace entry name - Fixed background jobs disappearing from `claude agents` or losing data when written by a newer Claude Code version - Fixed reopening a crashed background task showing a blank screen for up to 5 seconds instead of its restart - Fixed background agent daemons running unreachable when the control socket fails to start, blocking restarts - Improved voice mode on Linux: now distinguishes "no microphone" from "SoX not installed" when SoX is present but no audio capture device exists - Improved `claude agents` completed list to fill available vertical space; on short terminals the header compacts so live sessions stay visible - Improved Remote session startup with a provisioning checklist while the container starts ## 2.1.193 - Added `autoMode.classifyAllShell` setting to route all Bash/PowerShell commands through the auto-mode classifier instead of only arbitrary-code-execution patterns - Added auto-mode denial reasons to the transcript, the denial toast, and `/permissions` recent denials - Added `claude_code.assistant_response` OpenTelemetry log event containing the model's response text. Redacted unless `OTEL_LOG_ASSISTANT_RESPONSES=1`; when that var is unset it follows `OTEL_LOG_USER_PROMPTS`, so deployments that already log prompt content will start receiving response content on upgrade — set `OTEL_LOG_ASSISTANT_RESPONSES=0` to keep prompts-only. - Added live file path autocomplete to bash mode (`!`) - Added a startup notice when MCP servers need authentication, pointing at `/mcp` - Added automatic memory-pressure reaping for idle background shell commands (disable with `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP=1`) - Fixed `/model` and other client-data-gated UI showing stale/empty state immediately after `/login` - Fixed backgrounding (←←) spuriously cancelling with "N background tasks would be abandoned" when all running tasks carry over to the new session - Fixed pinned background agents being re-prompted to "Continue from where you left off" after every auto-update - Fixed backgrounding the main turn spawning a phantom "general-purpose (resumed)" subagent that re-ran the main conversation - Fixed agent panel hiding sibling agents when viewing a subagent - Improved background agents: the launch result no longer instructs Claude to "end your response" — it keeps working on other tasks while the agent runs - Improved MCP `headersHelper` auth: the helper now re-runs and reconnects automatically when a tool call returns 401/403 - Improved plugin auto-rename: marketplace `renames` maps are now followed automatically, updating your settings to the new name - Improved `/add-dir` message when the directory is already a working directory ## 2.1.191 - Added `/rewind` support for resuming a conversation from before `/clear` was run - Fixed scroll position jumping to the bottom while reading earlier output during a streaming response - Fixed background agents resurrecting after being stopped — stopping an agent from the tasks panel is now permanent - Fixed `/voice` showing a generic "not available" message when disabled by an organization's policy — it now explains the restriction - Fixed `/login` URL opening truncated in Windows Terminal when it wraps across lines - Fixed Cmd+click on links in fullscreen mode for Ghostty over ssh/tmux - Fixed `claude agents` sending builtin slash commands like `/usage` to background sessions as prompt text instead of showing a hint - Fixed `claude agents` job rows showing full filesystem paths for pasted images instead of the `[Image #N]` placeholder - Fixed hooks with comma-separated matchers (e.g. `"Bash,PowerShell"`) silently never firing - Fixed `/permissions` Recently-denied tab: approving a denial now persists on close instead of being silently discarded - Fixed the agent panel jumping by one row when scrolling the roster past the overflow cap - Fixed the welcome splash art overflowing the default 80×24 macOS Terminal window - Fixed managed settings: `forceRemoteSettingsRefresh` now takes effect when set via MDM or file policy, and the fetch sends `Cache-Control: no-cache` to prevent proxies from serving stale responses - Improved sandbox network permission dialog: hosts you allow with "Yes" are now remembered for the rest of the session instead of re-prompting on every connection - Improved MCP server reliability: capability discovery (`tools/list`, `prompts/list`, `resources/list`) now retries transient network errors with short backoff - Improved MCP OAuth: discovery and token requests now retry once after transient network errors, and headless environments skip the browser popup and go straight to the paste-the-URL prompt - Improved MCP error messages: HTTP 404 errors now show the URL and point to your MCP config - Improved vim mode prompt-history search (NORMAL `/`) to hint how to reach slash commands - Reduced CPU usage during streaming responses by ~37% by coalescing text updates to 100ms - Reduced long-session memory growth from terminal output cache ## 2.1.190 - Bug fixes and reliability improvements ## 2.1.187 - Added `sandbox.credentials` setting to block sandboxed commands from reading credential files and secret environment variables - Added org-configured model restrictions to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL`, with a "restricted by your organization's settings" message when a restricted model is selected - Added mouse click support to select menus (permission prompts, `/model`, `/config`, etc.) in fullscreen mode - Fixed `--resume` failing with "No conversation found" when the original `-p` run produced no model turns - Fixed `--json-schema` and workflow `agent({schema})` structured output: the model can no longer re-call `StructuredOutput` indefinitely after a successful call, and follow-up turns now reliably return structured output - Fixed remote MCP tool calls that hang with no response for 5 minutes — they now abort with an error instead of blocking indefinitely (override with `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`) - Fixed Claude Code Remote sessions taking ~2.7s longer to start after the agent proxy CA system-trust install was added - Fixed pasted Korean/CJK text turning into mojibake in terminals that deliver paste as per-byte extended-key events - Fixed `/update` over Remote Control hanging when a startup trust dialog would have shown - Fixed background jobs in the agents view getting stuck in "working" indefinitely when the agent ended a turn without producing structured output - Fixed channel connections dropping after navigating to the agents view and back, and after `/bg`, `/tui`, or `/update` - Fixed agent stop notifications not correctly attributing who stopped the agent, and improved wording ("finished"/"stopped" instead of "came to rest") - Fixed subagent depth tracking: resumed subagents now restore their original spawn depth, and forked subagents now count toward the depth cap - Fixed leaked agent worktree registrations: locked `.git/worktrees/` entries from killed agents are now cleaned up automatically - Fixed Cmd+click not opening URLs in fullscreen mode in Ghostty on macOS - Fixed `claude --help` not listing the `--bg`/`--background` flag - Fixed Esc, Ctrl-C, and Ctrl-D not working while `/share` is uploading - Improved `/install-github-app`: GitHub Actions workflow setup is now optional — you can install just the GitHub App and skip the workflow/secret steps - Improved `/btw` with ←/→ arrow navigation to step through earlier answers - Improved `/plugin` to surface plugins you haven't used recently so you can clean them up - [VSCode] Fixed extension becoming unresponsive when resuming a large session ## 2.1.186 - Added `claude mcp login ` and `claude mcp logout ` to authenticate MCP servers from the CLI without opening the interactive `/mcp` menu, with `--no-browser` stdin redirect support for completing over SSH - Added status filtering (press `f`) to the `/workflows` agent detail view - Added a "Skills" section to the `/plugin` Installed tab - Added `teammateMode: "iterm2"` setting with a warning when auto mode cannot find the `it2` CLI - Added "Claude Platform on AWS - refresh credentials" option to `/login` when `awsAuthRefresh` is configured - `!` bash commands now trigger Claude to respond to the output automatically; set `"respondToBashCommands": false` in settings.json to keep the previous context-only behavior - Fixed streaming requests failing with "Content block not found" or JSON parse errors after the machine wakes from sleep - Fixed subagent transcript scroll position bleeding into the main transcript on exit - Fixed background task previews flashing raw tool names before the agent's plan loaded - Fixed Chrome tab-group isolation not applying when the in-product permissions gate is off for concurrent CLI sessions - Fixed background session recaps being duplicated; the agent's own end-of-turn summary now shows as the recap line - Fixed opening a background session from `claude agents` leaving the previous screen painted behind it - Fixed `Agent(type)` deny rules and `Agent(x,y)` allowed-types restrictions not being enforced for named subagent spawns - Fixed Esc and Ctrl+C not responding while background agents are still running after the main turn ends - Fixed misaligned option numbers in permission prompts when the option text overflows - Fixed pressing `x` on a finished subagent in the agent panel not dismissing it - Fixed a misleading "MCP server disconnected" notice for intentionally retired tools when resuming older sessions - Fixed `/plugin` Installed showing a "more above" indicator when already scrolled to the top - Fixed `~~strikethrough~~` showing literal tildes in assistant messages instead of rendering as strikethrough - Fixed `--tools` allowing feature-gated tools to slip through before flags loaded on a cold first launch - Fixed background job status in `claude agents` showing a stale "needs input" message after replying - Fixed a dark-theme flash when opening a background session from `claude agents` on a light terminal - Fixed mouse-selected text staying highlighted after deleting it in `claude agents` - Fixed session cost not showing for usage-based Enterprise and Team subscribers - Fixed agent teams: teammates spawned via tmux/pane backends now inherit the leader's `--effort` level - Fixed Workflow `agent({schema})` subagents looping forever on repeated schema validation failures instead of aborting after 5 attempts - Improved `claude mcp get` and `claude mcp remove` to suggest the closest configured server name on a typo and truncate long server lists - Improved memory: the agent is now reminded to compact its `MEMORY.md` index when nearing the size limit - Improved skill frontmatter: `display-name`, `default-enabled`, `fallback`, and `metadata.*` keys now accept kebab-case, snake_case, and camelCase - Improved malformed `SKILL.md` YAML frontmatter handling: loads the skill body with empty metadata instead of failing silently - Changed `CLAUDE_CODE_MAX_RETRIES` to cap at 15; for unattended sessions, use `CLAUDE_CODE_RETRY_WATCHDOG` instead - Changed background subagents to surface permission prompts in the main session instead of auto-denying; the dialog shows which agent is asking, and Esc denies just that tool - Changed `/review ` to use the same review engine as `/code-review medium` ## 2.1.185 - The stream-stall hint now reads "Waiting for API response · will retry in …" instead of "No response from API · Retrying in …", and triggers after 20s of silence instead of 10s ## 2.1.183 - Improved auto mode safety: destructive git commands (`git reset --hard`, `git checkout -- .`, `git clean -fd`, `git stash drop`) are now blocked when you didn't ask to discard local work, `git commit --amend` is blocked when the commit wasn't made by the agent this session, and `terraform destroy`/`pulumi destroy`/`cdk destroy` are blocked unless you asked for the specific stack - Added a warning when the requested model is deprecated or automatically updated to a newer model, shown on stderr in print mode (`-p`) and now also covering models set in agent frontmatter - Added `attribution.sessionUrl` setting to omit the claude.ai session link from commits and PRs in web and Remote Control sessions - Added `/config --help` to list all available shorthand keys for `/config key=value` - Changed `/config` toggle behavior: Enter and Space both change the selected setting, and Esc now saves and closes instead of reverting - Removed the startup "setup issues" line under the logo — run `/doctor` to see configuration issues or use `--debug` - Fixed `thinking.disabled.display: Extra inputs are not permitted` 400 errors on subagent spawns and session-title generation for affected configurations - Fixed WebSearch returning empty results in subagents - Fixed the terminal cursor being stranded above the prompt after navigating history in vim mode with the native cursor enabled - Fixed fullscreen TUI corruption (statusline mid-screen, duplicated spinner rows, merged text) in Windows Terminal under heavy nested-subagent load - Fixed turns silently completing with no visible output when the model returned only a thinking block; Claude now re-prompts once - Fixed user-level skills appearing multiple times in slash-command autocomplete when multiple plugins are enabled - Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode - Fixed tmux teammate panes failing to launch when the shell has slow rc-file initialization, and keystrokes typed during agent spawn leaking into the new tmux pane instead of the leader prompt - Fixed background tasks started by a teammate being killed when the teammate finishes a turn - Fixed scheduled task and webhook trigger deliveries being treated as keyboard input; they now classify as task notifications and can no longer approve a pending action or set the session title in auto mode - Fixed focus mode showing "Ran N PostToolUse hooks" timing lines under each response ## 2.1.181 - 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 fullscreen mode URL opening to require Cmd+click (macOS) / Ctrl+click, matching native terminal behavior - 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 - Agent teams: removed the `TeamCreate` and `TeamDelete` tools. With `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` set, every session now has one implicit team — spawn teammates directly with the Agent tool's `name` parameter, no setup step needed. The `team_name` parameter on the Agent tool is still accepted but ignored. - 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 `:` 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 ` 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 - Fixed Workflow tool `agent()` subagents missing per-agent attribution headers - [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 - Fixed workflow validation rejecting scripts whose prompt strings or comments merely mention `Date.now()`/`Math.random()` - 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 - `claude agents` rows now show `done/total` before the detail when work is fanned out; peek shows the longest-running item - `/mcp` now collapses claude.ai connectors you've never signed in to behind a "Show unused connectors" row - Parallel tool calls: a failed Bash command no longer cancels other calls in the same batch — each tool returns its own result independently - Fullscreen mode: clipboard now uses `wl-copy`/`xclip`/`xsel` on Linux when available, copies to both the clipboard and PRIMARY selection for middle-click paste, and the "hold {key} for native selection" hint now shows the correct key per terminal - Fixed the `/effort` dialog, workflow animations, and prompt keyword shimmer not honoring the "Reduce motion" setting - Fixed `forceLoginOrgUUID`/`forceLoginMethod` managed-settings policies blocking third-party provider sessions (Bedrock, Vertex, Foundry, Mantle) alongside the org pin (regression in 2.1.146) - Fixed background subagent output corrupting `claude -p` stdout when using `--output-format text` or `json` - Fixed `/usage-credits` starting a re-login for Team and Enterprise admins instead of pointing to the organization's usage settings page - Fixed `/autofix-pr` reporting "cannot run on the default branch" when the session is inside a git worktree or another repository - Fixed `--resume` picker not showing sessions from the current directory when it isn't a git worktree (e.g., jj workspaces) - Fixed Windows hooks that invoke bash explicitly (e.g., `/usr/bin/bash script.sh`) failing with "command not found" or "cannot execute binary file" - Fixed OpenTelemetry log events (`user_prompt`, `api_request`, `tool_result`, `tool_decision`) being silently dropped when emitted before telemetry initialization completed - Fixed `claude mcp` list/get/add printing secrets to the terminal: `${VAR}` references are no longer expanded, and credential headers and URL secrets are redacted - Fixed Workflow agents spawned with `isolation: "worktree"` in background sessions being blocked from editing files inside their own worktree - Fixed background sessions dispatched from `claude agents` booting on a stale model from the daemon's environment instead of the model in `settings.json` - Fixed a potential crash when rendering Write tool results after resuming a session - Fixed completed subagents getting stuck showing as running when an error occurs while finalizing their result - Fixed `EADDRINUSE` errors from tools that bind Unix sockets under `$TMPDIR` when `CLAUDE_CODE_TMPDIR` is set to a deep path - Improved terminal rendering performance by stabilizing the layout engine's JIT compilation profile - Improved rendering performance for large file writes - [VSCode] Added a tip suggesting disabling terminal GPU acceleration (or running `/terminal-setup`) to fix garbled glyphs ## 2.1.160 - Added a prompt before writing to shell startup files (`.zshenv`, `.zlogin`, `.bash_login`) and `~/.config/git/`, which could otherwise lead to unintended command execution - `acceptEdits` mode now prompts before writing build-tool config files that grant code execution (`.npmrc`, `.yarnrc*`, `bunfig.toml`, `.bazelrc`, `.pre-commit-config.yaml`, `.devcontainer/`, etc.) - Edit no longer requires a separate Read after viewing a file with `grep`: single-file `grep`/`egrep`/`fgrep` commands now satisfy the read-before-edit check - Fixed copy-on-select not writing to the Windows clipboard on WSL — now uses PowerShell interop instead of OSC 52, which terminals like MobaXterm don't support - Fixed restoring a completed session from `claude agents` dropping chat history and re-running the original prompt - Fixed background sessions re-attached after overnight retire losing their conversation and re-running the original prompt - Fixed `claude --bg` occasionally failing with "socket missing" when the background daemon was cold-starting on a loaded machine - Fixed an issue on Windows where the directory a background session was started in could not be deleted after `claude rm` until the background daemon exited - Fixed background agents that resumed work being shown under Completed in the agents list - Fixed `claude agents` freezing for several seconds when returning to the session list due to the auto-updater re-checking on every exit - Fixed Esc, arrow keys, and typing becoming unresponsive on Windows when attached to a background session or in the agent view while the host is under heavy CPU load - Fixed background agents emitting terminal sync-output markers to terminals that don't support them (Apple Terminal, tmux), causing render artifacts when entering a running agent - Fixed mouse wheel scrolling prompt history instead of the transcript right after opening a session from the agents list - Fixed CJK IME composition appearing at the bottom-left of the screen instead of at the input caret in the `claude agents` view - Fixed valid `file:///C:/...` links being rewritten to a broken path on Windows terminals with hyperlink support - Fixed voice mode failing to connect when the project directory or branch name contains non-ASCII or special characters - Fixed the auto mode unavailability message on third-party providers (Bedrock/Vertex/Foundry) to point to the `CLAUDE_CODE_ENABLE_AUTO_MODE` opt-in instead of incorrectly blaming the model - Fixed `/effort ultracode` incorrectly blaming the dynamic workflows setting when the model cannot run xhigh; ultracode is no longer offered on models that do not support it - Fixed model-not-found errors suggesting `--model` when running via the SDK or other hosts where the CLI flag doesn't apply - Fixed Claude's past replies disappearing from scrollback when resuming a brief mode session with brief mode turned off - Fixed vim mode `p` pasting on the line below instead of at the cursor when the register was yanked with `v$` - Improved performance of opening recently-inactive background agent sessions in `claude agents` - Improved auto mode classifier latency by reducing reasoning on routine actions, lowering the chance of "could not evaluate this action" blocks - Improved background-session teardown (`claude rm`/`stop`, idle reap) to send SIGTERM to running shell subprocesses before SIGKILL, so cleanup handlers run - Removed `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE`; the environment variable is now a no-op - Removed the JetBrains plugin install suggestion from startup - Renamed the dynamic-workflow trigger keyword from `workflow` to `ultracode`. The word "workflow" no longer triggers a run; asking for one in your own words still works. The trigger keyword is highlighted in violet in the prompt input ## 2.1.159 - Internal infrastructure improvements (no user-facing changes) ## 2.1.158 - 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` ## 2.1.157 - Plugins in `.claude/skills` directories are now automatically loaded, no marketplace required - Added `claude plugin init ` to scaffold a new plugin in `.claude/skills` - Added autocomplete for `/plugin` arguments: subcommands, installed plugin names, and plugins from known marketplaces - `claude agents`: the `agent` field in `settings.json` is now honored for dispatched sessions, with `--agent ` to override it - `EnterWorktree` can now switch between Claude-managed worktrees mid-session - `tool_decision` telemetry events now include `tool_parameters` (bash commands, MCP/skill names) when `OTEL_LOG_TOOL_DETAILS=1` - Worktrees managed by Claude are now left unlocked when the agent finishes, so `git worktree remove`/`prune` can clean them up - Fixed unprocessable images (zero-byte, corrupt) attached via paste, MCP, or dialog crashing the request instead of becoming a text placeholder - Fixed sandbox network permission prompts appearing in auto and bypass-permissions mode when using the desktop app, IDE extensions, or SDK - Fixed `claude agents` completed sessions not retiring when an idle subagent was still parked or had leaked a backgrounded shell - Fixed `claude agents` pressing Esc not cancelling a slow "opening…", leaving the list unresponsive - Fixed background agent worktrees under `.claude/worktrees/` being orphaned after the 30-day job retention sweep - Fixed background sessions re-attached after a sleep/wake not telling the model the correct date - Fixed copy-on-select in `claude agents` not reaching the system clipboard inside tmux with `set-clipboard on` (regression in 2.1.153) - Fixed `--resume` not reporting background subagents that were running when the previous Claude Code process exited - Fixed the `--resume` session picker leaving its contents on the terminal after exiting in fullscreen mode - Fixed `--worktree` and `--worktree --tmux` returning to the canonical repo root instead of the current linked worktree - 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 - Fixed literal markdown markers (backticks, asterisks) appearing in the in-progress message text in fullscreen mode - Fixed the terminal freezing after approving the managed-settings security dialog at startup - Fixed a rare duplicate line appearing in scrollback after the terminal UI redraws - Fixed right-click paste duplicating the clipboard in the VS Code, Cursor, and Windsurf integrated terminals - WSL: fixed image paste (`alt+v` keybinding), screenshot paste on Windows 11, and added support for dragging images from Windows Explorer - Improved performance of long and resumed conversations by eliminating redundant message-rendering recomputations - `/terminal-setup` now disables GPU acceleration in VS Code/Cursor/Windsurf integrated terminals to prevent garbled-text rendering - The Feature of the Week credit-claim status now appears as a notification in the status area instead of a line above the prompt - `claude agents`: slash-command autocomplete in the dispatch input now matches substrings - Removed the "bash commands will be sandboxed" startup banner — sandbox status still shows in `/status` and when a command is blocked - Removed the "/ide for …" startup hint toast - [IDE] Fixed clicking Stop while a background subagent is running not actually stopping it - [VSCode] Fixed the fast mode indicator not appearing on Opus 4.8 - Pressing backspace right after a workflow trigger keyword now dismisses the workflow request (same as alt+w) instead of deleting a character - Added a "Workflow keyword trigger" setting in /config to stop the word "workflow" in a prompt from triggering a dynamic workflow ## 2.1.156 - Fixed an issue when using Opus 4.8 where thinking blocks were modified, leading to API errors. ## 2.1.154 - Opus 4.8 is here! Now defaults to high effort · /effort xhigh for your hardest tasks - 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 - 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 - The lean system prompt is now the default for all models except Haiku, Sonnet, and Opus 4.7 and earlier - 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 - `/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 - Renamed the `/effort` slider labels from "Speed"/"Intelligence" to "Faster"/"Smarter" for clarity - `claude agents`: type `! ` to run a shell command as a background session you can attach to and detach from. Also available as `claude --bg --exec ''` - `claude agents`: `/logout` now signs you out instead of being sent to a background session - `←←` to open the agents view now works on Bedrock, Vertex, Foundry, and with telemetry disabled - Claude in Chrome: pick which connected browser to use via `/chrome` → "Select browser…", or in-chat when a browser action runs with multiple connected - 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 - The `/plugin` Discover tab now pins plugins whose relevance signals match the current directory with a "suggested for this directory" annotation - Streaming tool execution is now always enabled, including when telemetry is disabled or on Bedrock/Vertex/Foundry (previously behind a feature flag) - Stdio MCP server subprocesses now receive `CLAUDE_CODE_SESSION_ID` and `CLAUDECODE=1` in their environment - `claude mcp list`/`get` now show unapproved `.mcp.json` servers as `⏸ Pending approval` instead of auto-approving and connecting when output is piped - `/remote-control` autocomplete now shows "Disconnect Remote Control" when Remote Control is already active - Added Claude Opus 4.8 support and 4.7 → 4.8 migration guidance to the `/claude-api` skill - 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` - Improved the auto-mode classifier's detection of data exfiltration, particularly bulk transfers of repository contents - Fixed `rm -rf $HOME` not being blocked as a dangerous path when `HOME` has a trailing slash - Fixed `$TMPDIR` resolving to different directories in sandboxed vs unsandboxed Bash commands within the same session - Fixed unreadable highlighted-row text in `claude agents` when the Claude Code theme doesn't match the terminal background - Fixed background-agent completion notifications triggering premature "out of context" behavior on some 1M-context models - Fixed background-session classifier losing the user's goal when a scheduled `/command` fires - Fixed pinned background sessions respawning every minute after a Claude Code update, causing repeated agent-start notifications and process churn at idle - Fixed background sessions stuck at "blocked", "running", or "working" not retiring after the idle grace period - Fixed subagents in background sessions bypassing the worktree-isolation guard and writing to the shared checkout - Fixed orphaned `claude --bg-pty-host` processes spinning at 100% CPU after the daemon exits on macOS - Fixed number key shortcuts not working for options shown below the divider in option dialogs - 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 - Fixed a stray leading space on wrapped lines when the previous line ended exactly at the terminal width - Fixed intermittent terminal rendering corruption in VS Code by capping the number of distinct colors the thinking spinner produces - Fixed plan file names including `[Image #N]` / `[Pasted text #N]` placeholders when a plan-mode prompt starts with pasted images or text - 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 - 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 - Fixed API 400 errors on models that don't support the effort parameter when `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` is set - 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 - Removed the stale "& for background" hint from the shortcuts help panel - [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 - Fixed the task panel below the prompt showing a stray unselectable "main" row when only a workflow is running - Fixed /mcp tools list and tool detail rendering when MCP servers have long or multi-line tool names or long descriptions - 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 - Fixed auto mode incorrectly blocking actions with "could not evaluate this action" when the safety classifier ran out of output tokens while reasoning ## 2.1.153 - Added `skipLfs` option to `github`/`git` plugin marketplace sources to skip Git LFS downloads during clone and update - Claude Code now shows a one-time notice when your npm global install can't auto-update; `/doctor` lists the fixes - Status line commands now receive `COLUMNS` and `LINES` environment variables so scripts can size output to the terminal width - `claude agents`: autocomplete in the dispatch input now suggests native slash commands and bundled skills, not just project skills - `claude agents`: PR column now shows `PR #N` for a single PR or `N PRs` for multiple - `claude doctor` now shows the result of your last update attempt - Combined the separate "needs authentication" startup notifications for MCP servers and connectors into a single message - macOS: background agents now appear as "Claude Code" in Privacy & Security and keep their permission grants across upgrades - Fixed stateful MCP servers without the optional GET SSE stream reconnect-looping on `tools/list` (regression in v2.1.147) - Fixed a regression where a custom API gateway could receive the user's Anthropic OAuth credential instead of the gateway's own token - Fixed subagent (Agent tool) frontmatter MCP servers ignoring `--strict-mcp-config`, `--bare`, remote mode, enterprise managed MCP config, and managed-settings MCP server allow/deny policies - `--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 - Fixed the Windows PowerShell installer reporting "Installation complete!" when installation actually failed - Fixed `claude update` installing the latest version instead of the configured release channel's version for npm installations - Fixed excessive memory usage (multiple GB) when resuming a session by transcript file path on machines with many stored sessions - Fixed `claude agents` and `claude --bg` running on a stale daemon started before binary-takeover support, even after upgrading - 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 - Fixed malformed `file://` links in Claude's responses not being clickable in the terminal - Fixed `claude --help` rendering unwrapped output on terminals narrower than 92 columns - Fixed MCP tool progress notifications not rendering in the collapsed tool view - Fixed `Agent` tool with `subagent_type: 'claude'` running in an undocumented temporary worktree, which could silently discard outputs written to gitignored paths - `/bg` while Claude is responding now continues the response in the background session instead of dropping it - Fixed `/btw` keyboard shortcuts becoming unresponsive in background sessions while a task is running - Fixed background sessions writing temp files to `$CLAUDE_JOB_DIR` triggering a "sensitive file" permission prompt - Fixed recovering a background agent whose working directory was deleted showing a truncated stack trace instead of a clear error message - Fixed `EnterWorktree` not being available immediately in background sessions (previously required `ToolSearch` first) - Fixed `cmd+k` in iTerm2/Terminal.app not repainting attached background sessions - 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 - Fixed background-color bleed when attaching to a background agent from 256-color-only terminals after the agent had rendered file diffs - Fixed `/copy` and copy-on-select silently failing to update the system clipboard when attached to a background session inside tmux - Fixed opening `claude agents` with Remote Control enabled leaving zombie session entries on the Code tab after exiting - Fixed `/rename` in background sessions not updating the session banner immediately - Fixed Windows update rollback: if a Windows update fails, Claude Code now restores the original executable by copy and tells you how to recover - [VSCode] Fixed Claude Code processes not shutting down cleanly when VS Code closed on Windows, causing false "unclean exit" reports and orphaned MCP servers - `/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. - If you customized the `modelPicker:setAsDefault` keybinding, rename it to `modelPicker:thisSessionOnly` in keybindings.json (the `d` action was replaced by `s`) ## 2.1.152 - `/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` - Skills and slash commands can now set `disallowed-tools` in frontmatter to remove tools from the model while the skill is active - Added `/reload-skills` command to re-scan skill directories without restarting the session - `SessionStart` hooks can now return `reloadSkills: true` to re-scan skill directories, making skills installed by the hook available in the same session - `SessionStart` hooks can now set the session title via `hookSpecificOutput.sessionTitle` on startup and resume - Added a `MessageDisplay` hook event that lets hooks transform or hide assistant message text as it is displayed - Added `pluginSuggestionMarketplaces` managed setting: admins can allowlist org marketplaces whose plugins may be suggested via context-aware tips - `claude plugin marketplace remove` now accepts `--scope user|project|local` for symmetry with `marketplace add`, `install`, and `uninstall` - 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 - Auto mode no longer requires opt-in consent - Vim mode: `/` in NORMAL mode now opens reverse history search (like Ctrl+R), matching bash/zsh vi-mode - The `/usage` breakdown now includes large session files; files are scanned with a streaming read so memory usage stays flat - 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) - 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 - Simplified the Workflow tool's inline progress display — live agent counts now show only in the persistent workflow status row below the prompt - 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 - Added the session entrypoint as an OpenTelemetry metric attribute (`app.entrypoint`, opt-in via `OTEL_METRICS_INCLUDE_ENTRYPOINT=true`) - Fixed terminal styling degrading in very long sessions by recycling the renderer's style pool - Fixed the sandbox-enabled warning not appearing in condensed startup mode — it now shows in every layout - 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 - Fixed focus mode showing a spurious "N messages hidden" count on turns with no hidden activity - Fixed clicking a link inside an expanded tool result collapsing the section instead of opening the link - 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 - Fixed plugin MCP servers with the same command but different environment variables being incorrectly deduplicated - Fixed `/doctor` reporting "marketplace not found" or "plugin not found" for stale `enabledPlugins` entries referencing removed marketplaces or dropped plugins - Fixed plugins that track a git branch silently no longer receiving updates after the plugin registry was rebuilt - Fixed remote MCP servers failing to connect in Claude Code Remote sessions when the egress proxy is enabled - 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 - Fixed the Agent tool description referencing an agent list that is never delivered when running with `--bare` or with attachments disabled - Fixed a background worker crash in `claude agents` when accepting a stale permission prompt after a subagent was cancelled - 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 - Fixed the PushNotification tool incorrectly reporting "Mobile push not sent (Remote Control inactive)" in SDK-hosted sessions when Remote Control is enabled - 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 ## 2.1.150 - Internal infrastructure improvements (no user-facing changes) ## 2.1.149 - `/usage` now shows a per-category breakdown of what's driving your limits usage — skills, subagents, plugins, and per-MCP-server cost - `/diff` detail view can now be scrolled with the keyboard (arrows, `j`/`k`, `PgUp`/`PgDn`, `Space`, `Home`/`End`) - Markdown output now renders GFM task list checkboxes (`- [ ] todo` / `- [x] done`) instead of plain bullets - Enterprise: added the `allowAllClaudeAiMcps` managed setting to load claude.ai cloud MCP connectors alongside `managed-mcp.json` - 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 - 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) - Fixed PowerShell prefix/wildcard allow rules (e.g. `PowerShell(dotnet.exe build *)`) not pre-approving native executables and scripts - Fixed a permission-analysis gap where the parser trusted stale variable-tracking values for `PWD`/`OLDPWD`/`DIRSTACK` across `cd`/`pushd`/`popd` - Fixed `find` in the Bash tool exhausting the macOS system file/vnode table and crashing the host on large directory trees - Fixed the managed-settings approval dialog leaving the terminal frozen after accepting at startup - Fixed `/ultraplan` and remote session creation failing with "Could not capture uncommitted changes" when the working tree has no real changes - Fixed `otelHeadersHelper` failing silently when the script path contains spaces; helper failures are now reported in `/doctor` and the debug log - Fixed the thinking spinner staying amber across tool calls and onto fresh thinking bursts - Fixed collapsed Bash output reporting the wrong hidden-line count for outputs with many short lines - Fixed slash-command argument-hint clipping trailing typed characters when the hint overflows the input box - Fixed argument-hint and progressive arg suggestions not appearing after Tab-completing a skill whose frontmatter `name:` differs from its directory basename - Fixed the status bar showing the user's baseline `/effort` setting instead of the effort level applied by skill/agent `effort:` frontmatter - Fixed Ctrl+O transcript view freezing at the moment it was opened instead of tailing new messages - Fixed editing a recalled prompt-history entry losing the edit when navigating further up/down with arrow keys - Fixed `/config` exit summary reporting phantom changes to auto-compact and theme when toggling unrelated settings - Fixed `/insights` crashing when cached session-meta files are missing optional fields - Fixed malformed PowerShell and History tool calls with missing input being misclassified as reads in transcript collapsing - Fixed renaming a Remote Control session from claude.ai or the Claude mobile app not updating the local session name for `claude --resume` - Fixed a race where a just-submitted prompt could appear twice in the up-arrow history - Fixed tapping the "Jump to bottom" pill in fullscreen mode not dismissing it immediately - Improved `/feedback` reports to include the conversation that happened before context compaction, making issues from earlier in long sessions easier to triage ## 2.1.148 - Fixed the Bash tool returning exit code 127 on every command for some users (a regression introduced in 2.1.147) ## 2.1.147 - 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 - 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 - 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 - Improved diff rendering performance for large file edits - Prompt history no longer records consecutive duplicate entries — recalling a prompt with arrow-up and submitting it again won't add another copy - Fixed enterprise login restrictions (`forceLoginOrgUUID` and `forceLoginMethod` managed-settings) not being enforced against third-party-provider and API-key sessions - Fixed `&` in `!` command output displaying as `&`, which broke copy-pasting URLs from commands like `gcloud auth login` on headless machines - Fixed unknown slash commands silently doing nothing in headless/SDK mode — they now show an error message - Fixed `/help` rendering a broken tab header and showing only one command per page on small terminals when not in fullscreen mode - Fixed shell snapshot dropping user functions whose names start with a single underscore, which broke aliases referencing them - Fixed plugin agents that declare multiple `Agent(...)` types in `tools:` frontmatter dropping all but the last entry - Fixed hook `if` conditions like `PowerShell(git push*)` never matching — only `PowerShell(*)` worked - Fixed PowerShell tool dropping output for commands that rely on the default formatter - Fixed: on Windows, "Yes, and don't ask again" for a PowerShell script invocation now writes a rule that actually matches on subsequent runs - Fixed PowerShell tool failing on Windows with exit code 1 when `pwsh` is installed via winget or the Microsoft Store - Fixed `/effort` opening with the slider on the wrong level — it now starts at your current effort - Fixed paginating MCP servers dropping resources, templates, and prompts past page 1 - Fixed full-screen strobing in attached background sessions on Windows Terminal while Claude is streaming - Fixed: on Windows, removing a background-job worktree no longer follows NTFS junctions into the main repo - Fixed `/background` refusing sessions whose only typed input was a skill or custom slash command - 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 - Fixed `/theme` "New custom theme" and color editor dialogs not responding to Esc - Fixed an uncaught exception at the end of streaming sessions when running via the Agent SDK - Fixed a rare hang when waiting for scroll to settle on Windows - Fixed stale and doubled rows in the agent view list on Windows when background session results contain wide (CJK) characters - Fixed pasted text being delivered to agents as an unreadable `[Pasted text #N]` placeholder instead of the actual content - Fixed plugin component counts in `claude plugin details` and `/plugin` being doubled when a plugin's manifest listed paths overlapping its default directories - Fixed backgrounded sessions re-prompting for tool permissions you already granted with "don't ask again" - Fixed GNOME Terminal right-click and middle-click paste not inserting text - Fixed `CLAUDE_CODE_SUBAGENT_MODEL` not applying to teammate processes spawned by agent teams - Fixed slash commands followed by a tab or newline being treated as an unknown command - Fixed several spacing and layout glitches in the `/plugin`, `/status`, `/mobile`, `/sandbox`, and `/permissions` menus - Fixed stripped images prompting the model to repeatedly re-read media that was no longer present ## 2.1.145 - Added `claude agents --json` to list live Claude sessions as JSON for scripting (tmux-resurrect, status bars, session pickers) - 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 - Status line JSON input now includes GitHub repo and PR information when detected - `/plugin` Discover and Browse screens now show a plugin's commands, agents, skills, hooks, and MCP/LSP servers before installation - `claude agents` terminal tab title now shows the awaiting-input count so an alt-tabbed window tells you when an agent needs attention - Slash command and @-mention suggestion list now supports mouse hover and click in fullscreen mode - Stop and SubagentStop hook input now includes `background_tasks` and `session_crons` fields - Fixed a permission-prompt bypass where bare variable assignments to non-allowlisted environment variables in Bash commands were auto-approved - 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 - Fixed the spinner and elapsed-time display freezing until a keypress after the terminal was resized or refocused - Fixed the cross-project resume hint failing in default Windows PowerShell 5.1 — Windows now uses `;` as the command separator - Fixed voice push-to-talk not working in the agent view's reply pane - Fixed task lists rendering in random order when several tasks are created at once - Fixed stale "Failed to install Anthropic marketplace" banner showing when the marketplace is already installed - Fixed the PR badge in the footer not updating immediately after `gh pr create` and other PR-state-changing commands run in-session - Fixed Agent Teams teammates with non-ASCII names failing every API call due to invalid header encoding - Fixed `/review` using a deprecated `projectCards` GraphQL query that errored on repos with Classic Projects - Fixed `claude plugin validate` not flagging `skills:` entries that point at a file instead of a directory — the error now suggests the parent directory - Fixed an infinite loop where a skill using `context: fork` could repeatedly re-invoke itself instead of running - 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 ## 2.1.144 - Added `/resume` support for background sessions — sessions started via `claude --bg` or agent view now appear alongside interactive ones, marked with `bg` - Added elapsed duration to background subagent completion notifications (e.g. "Agent completed · 3h 2m 5s") - The `/plugin` browse and discover panes now show when a plugin was last updated - `/model` now changes the model for the current session only; press `d` in the model picker to set a default for new sessions - Renamed "extra usage" to "usage credits" across CLI copy; `/extra-usage` is now `/usage-credits` (old name still works) - 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 - 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 - Fixed progressive terminal display corruption (stale/garbled glyphs) that could appear in very long sessions and only cleared on terminal resize or restart - Reduced terminal rendering glitches in VS Code by reducing spinner animation color count - 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) - 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 - 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 - Fixed `/branch` failing with "No conversation to branch" after entering a worktree or in some background sessions - Fixed pressing Escape in the AskUserQuestion notes field aborting the turn instead of returning to answer selection - Fixed model selection not applying when changed via the IDE model picker or `applyFlagSettings` after startup - Resumed sessions now keep the model they were using instead of picking up another session's `/model` choice - Fixed Bedrock and Vertex users unable to select "Opus (1M context)" from the `/model` picker (regression in v2.1.129) - Fixed remote-session login failing with "Can't access this organization" for users with `forceLoginMethod` and `forceLoginOrgUUID` set - Fixed MCP servers with paginated `tools/list` responses only returning the first page, silently dropping tools - Fixed MCP images with unsupported MIME types (e.g. SVG) breaking the conversation — now saved to disk and referenced in the tool result - Fixed file descriptor exhaustion when a build runs inside a skill directory — non-`.md` files no longer trigger skill reloads - Fixed session title being generated from plugin monitor output instead of the user's first prompt - Fixed Skill tool failing with permission error in headless mode (regression in v2.1.141) - 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 - 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 - 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 - Fixed scrolling in attached background sessions on Windows — PgUp/PgDn, mouse wheel, and Ctrl+O transcript navigation now work - Fixed a crash when closing the terminal while attached to a background session - Fixed on Windows, pressing ← in `claude agents` leaving the list unresponsive to keyboard input - Fixed ghost characters at the left edge when switching panes in Agent View on Windows Terminal with CJK content - `/bg` and `←`-detach now preserve directories added via `/add-dir` - Fixed Edit/Write refusing with "background session hasn't isolated its changes yet" right after detaching a session that was already editing in place - Fixed `claude respawn ` on a stopped background session showing "stopped" instead of running - Fixed `/resume` picker not showing sessions forked from a background session - Fixed opening a session from `claude agents` or running `claude logs ` hanging when the background service is unresponsive — now times out after 10s with a recovery hint - Fixed background Bash tasks spawned by subagents staying "Running" in SDK task panels after the process exits - Fixed completed or stopped background sessions briefly failing to wake being permanently marked as a startup crash - Fixed markdown links in `claude agents` attached sessions rendering as plain text instead of clickable hyperlinks - Fixed custom `spinnerVerbs` applying to the post-turn duration message — past-tense built-ins like "Worked for 5s" are restored there - `claude agents` / `--bg` rejection messages now name the specific gate (non-TTY, env var, or setting) instead of a generic message - `claude --bg --name