Releases: anthropics/claude-code
Releases · anthropics/claude-code
v2.1.89
What's changed
- Added
"defer"permission decision toPreToolUsehooks — headless sessions can pause at a tool call and resume with-p --resumeto have the hook re-evaluate - Added
CLAUDE_CODE_NO_FLICKER=1environment variable to opt into flicker-free alt-screen rendering with virtualized scrollback - Added
PermissionDeniedhook that fires after auto mode classifier denials — return{retry: true}to tell the model it can retry - Added named subagents to
@mention typeahead suggestions - Added
MCP_CONNECTION_NONBLOCKING=truefor-pmode to skip the MCP connection wait entirely, and bounded--mcp-configserver connections at 5s instead of blocking on the slowest server - Auto mode: denied commands now show a notification and appear in
/permissions→ Recent tab where you can retry withr - Fixed
Edit(//path/**)andRead(//path/**)allow rules to check the resolved symlink target, not just the requested path - Fixed voice push-to-talk not activating for some modifier-combo bindings, and voice mode on Windows failing with "WebSocket upgrade rejected with HTTP 101"
- Fixed Edit/Write tools doubling CRLF on Windows and stripping Markdown hard line breaks (two trailing spaces)
- Fixed
StructuredOutputschema cache bug causing ~50% failure rate when using multiple schemas - Fixed memory leak where large JSON inputs were retained as LRU cache keys in long-running sessions
- Fixed a crash when removing a message from very large session files (over 50MB)
- Fixed LSP server zombie state after crash — server now restarts on next request instead of failing until session restart
- Fixed prompt history entries containing CJK or emoji being silently dropped when they fall on a 4KB boundary in
~/.claude/history.jsonl - Fixed
/statsundercounting tokens by excluding subagent usage, and losing historical data beyond 30 days when the stats cache format changes - Fixed
-p --resumehangs when the deferred tool input exceeds 64KB or no deferred marker exists, and-p --continuenot resuming deferred tools - Fixed
claude-cli://deep links not opening on macOS - Fixed MCP tool errors truncating to only the first content block when the server returns multi-element error content
- Fixed skill reminders and other system context being dropped when sending messages with images via the SDK
- Fixed PreToolUse/PostToolUse hooks to receive
file_pathas an absolute path for Write/Edit/Read tools, matching the documented behavior - Fixed autocompact thrash loop — now detects when context refills to the limit immediately after compacting three times in a row and stops with an actionable error instead of burning API calls
- Fixed prompt cache misses in long sessions caused by tool schema bytes changing mid-session
- Fixed nested CLAUDE.md files being re-injected dozens of times in long sessions that read many files
- Fixed
--resumecrash when transcript contains a tool result from an older CLI version or interrupted write - Fixed misleading "Rate limit reached" message when the API returned an entitlement error — now shows the actual error with actionable hints
- Fixed hooks
ifcondition filtering not matching compound commands (ls && git push) or commands with env-var prefixes (FOO=bar git push) - Fixed collapsed search/read group badges duplicating in terminal scrollback during heavy parallel tool use
- Fixed notification
invalidatesnot clearing the currently-displayed notification immediately - Fixed prompt briefly disappearing after submit when background messages arrived during processing
- Fixed Devanagari and other combining-mark text being truncated in assistant output
- Fixed rendering artifacts on main-screen terminals after layout shifts
- Fixed voice mode failing to request microphone permission on macOS Apple Silicon
- Fixed Shift+Enter submitting instead of inserting a newline on Windows Terminal Preview 1.25
- Fixed periodic UI jitter during streaming in iTerm2 when running inside tmux
- Fixed PowerShell tool incorrectly reporting failures when commands like
git pushwrote progress to stderr on Windows PowerShell 5.1 - Fixed a potential out-of-memory crash when the Edit tool was used on very large files (>1 GiB)
- Improved collapsed tool summary to show "Listed N directories" for
ls/tree/duinstead of "Read N files" - Improved Bash tool to warn when a formatter/linter command modifies files you have previously read, preventing stale-edit errors
- Improved
@-mention typeahead to rank source files above MCP resources with similar names - Improved PowerShell tool prompt with version-appropriate syntax guidance (5.1 vs 7+)
- Changed
Editto work on files viewed viaBashwithsed -norcat, without requiring a separateReadcall first - Changed hook output over 50K characters to be saved to disk with a file path + preview instead of being injected directly into context
- Changed
cleanupPeriodDays: 0in settings.json to be rejected with a validation error — it previously silently disabled transcript persistence - Changed thinking summaries to no longer be generated by default in interactive sessions — set
showThinkingSummaries: truein settings.json to restore - Documented
TaskCreatedhook event and its blocking behavior - Preserved task notifications when backgrounding a running command with Ctrl+B
- PowerShell tool on Windows: external-command arguments containing both a double-quote and whitespace now prompt instead of auto-allowing (PS 5.1 argument-splitting hardening)
/envnow applies to PowerShell tool commands (previously only affected Bash)/usagenow hides redundant "Current week (Sonnet only)" bar for Pro and Enterprise plans- Image paste no longer inserts a trailing space
- Pasting
!commandinto an empty prompt now enters bash mode, matching typed!behavior /buddyis here for April 1st — hatch a small creature that watches you code
v2.1.87
What's changed
- Fixed messages in Cowork Dispatch not getting delivered
v2.1.86
What's changed
- Added
X-Claude-Code-Session-Idheader to API requests so proxies can aggregate requests by session without parsing the body - Added
.jjand.slto VCS directory exclusion lists so Grep and file autocomplete don't descend into Jujutsu or Sapling metadata - Fixed
--resumefailing with "tool_use ids were found without tool_result blocks" on sessions created before v2.1.85 - Fixed Write/Edit/Read failing on files outside the project root (e.g.,
~/.claude/CLAUDE.md) when conditional skills or rules are configured - Fixed unnecessary config disk writes on every skill invocation that could cause performance issues and config corruption on Windows
- Fixed potential out-of-memory crash when using
/feedbackon very long sessions with large transcript files - Fixed
--baremode dropping MCP tools in interactive sessions and silently discarding messages enqueued mid-turn - Fixed the
cshortcut copying only ~20 characters of the OAuth login URL instead of the full URL - Fixed masked input (e.g., OAuth code paste) leaking the start of the token when wrapping across multiple lines on narrow terminals
- Fixed official marketplace plugin scripts failing with "Permission denied" on macOS/Linux since v2.1.83
- Fixed statusline showing another session's model when running multiple Claude Code instances and using
/modelin one of them - Fixed scroll not following new messages after wheel scroll or click-to-select at the bottom of a long conversation
- Fixed
/pluginuninstall dialog: pressingnnow correctly uninstalls the plugin while preserving its data directory - Fixed a regression where pressing Enter after clicking could leave the transcript blank until the response arrived
- Fixed
ultrathinkhint lingering after deleting the keyword - Fixed memory growth in long sessions from markdown/highlight render caches retaining full content strings
- Reduced startup event-loop stalls when many claude.ai MCP connectors are configured (macOS keychain cache extended from 5s to 30s)
- Reduced token overhead when mentioning files with
@— raw string content no longer JSON-escaped - Improved prompt cache hit rate for Bedrock, Vertex, and Foundry users by removing dynamic content from tool descriptions
- Memory filenames in the "Saved N memories" notice now highlight on hover and open on click
- Skill descriptions in the
/skillslisting are now capped at 250 characters to reduce context usage - Changed
/skillsmenu to sort alphabetically for easier scanning - Auto mode now shows "unavailable for your plan" when disabled by plan restrictions (was "temporarily unavailable")
- [VSCode] Fixed extension incorrectly showing "Not responding" during long-running operations
- [VSCode] Fixed extension defaulting Max plan users to Sonnet after the OAuth token refreshes (8 hours after login)
- Read tool now uses compact line-number format and deduplicates unchanged re-reads, reducing token usage
v2.1.85
What's changed
- Added
CLAUDE_CODE_MCP_SERVER_NAMEandCLAUDE_CODE_MCP_SERVER_URLenvironment variables to MCPheadersHelperscripts, allowing one helper to serve multiple servers - Added conditional
iffield for hooks using permission rule syntax (e.g.,Bash(git *)) to filter when they run, reducing process spawning overhead - Added timestamp markers in transcripts when scheduled tasks (
/loop,CronCreate) fire - Added trailing space after
[Image #N]placeholder when pasting images - Deep link queries (
claude-cli://open?q=…) now support up to 5,000 characters, with a "scroll to review" warning for long pre-filled prompts - MCP OAuth now follows RFC 9728 Protected Resource Metadata discovery to find the authorization server
- Plugins blocked by organization policy (
managed-settings.json) can no longer be installed or enabled, and are hidden from marketplace views - PreToolUse hooks can now satisfy
AskUserQuestionby returningupdatedInputalongsidepermissionDecision: "allow", enabling headless integrations that collect answers via their own UI tool_parametersin OpenTelemetry tool_result events are now gated behindOTEL_LOG_TOOL_DETAILS=1- Fixed
/compactfailing with "context exceeded" when the conversation has grown too large for the compact request itself to fit - Fixed
/plugin enableand/plugin disablefailing when a plugin's install location differs from where it's declared in settings - Fixed
--worktreeexiting with an error in non-git repositories before theWorktreeCreatehook could run - Fixed
deniedMcpServerssetting not blocking claude.ai MCP servers - Fixed
switch_displayin the computer-use tool returning "not available in this session" on multi-monitor setups - Fixed crash when
OTEL_LOGS_EXPORTER,OTEL_METRICS_EXPORTER, orOTEL_TRACES_EXPORTERis set tonone - Fixed diff syntax highlighting not working in non-native builds
- Fixed MCP step-up authorization failing when a refresh token exists — servers requesting elevated scopes via
403 insufficient_scopenow correctly trigger the re-authorization flow - Fixed memory leak in remote sessions when a streaming response is interrupted
- Fixed persistent ECONNRESET errors during edge connection churn by using a fresh TCP connection on retry
- Fixed prompts getting stuck in the queue after running certain slash commands, with up-arrow unable to retrieve them
- Fixed Python Agent SDK:
type:'sdk'MCP servers passed via--mcp-configare no longer dropped during startup - Fixed raw key sequences appearing in the prompt when running over SSH or in the VS Code integrated terminal
- Fixed Remote Control session status staying stuck on "Requires Action" after a permission is resolved
- Fixed shift+enter and meta+enter being intercepted by typeahead suggestions instead of inserting newlines
- Fixed stale content bleeding through when scrolling up during streaming
- Fixed terminal left in enhanced keyboard mode after exit in Ghostty, Kitty, WezTerm, and other terminals supporting the Kitty keyboard protocol — Ctrl+C and Ctrl+D now work correctly after quitting
- Improved @-mention file autocomplete performance on large repositories
- Improved PowerShell dangerous command detection
- Improved scroll performance with large transcripts by replacing WASM yoga-layout with a pure TypeScript implementation
- Reduced UI stutter when compaction triggers on large sessions
v2.1.84
What's changed
- Added PowerShell tool for Windows as an opt-in preview. Learn more at https://code.claude.com/docs/en/tools-reference#powershell-tool
- Added
ANTHROPIC_DEFAULT_{OPUS,SONNET,HAIKU}_MODEL_SUPPORTSenv vars to override effort/thinking capability detection for pinned default models for 3p (Bedrock, Vertex, Foundry), and_MODEL_NAME/_DESCRIPTIONto customize the/modelpicker label - Added
CLAUDE_STREAM_IDLE_TIMEOUT_MSenv var to configure the streaming idle watchdog threshold (default 90s) - Added
TaskCreatedhook that fires when a task is created viaTaskCreate - Added
WorktreeCreatehook support fortype: "http"— return the created worktree path viahookSpecificOutput.worktreePathin the response JSON - Added
allowedChannelPluginsmanaged setting for team/enterprise admins to define a channel plugin allowlist - Added
x-client-request-idheader to API requests for debugging timeouts - Added idle-return prompt that nudges users returning after 75+ minutes to
/clear, reducing unnecessary token re-caching on stale sessions - Deep links (
claude-cli://) now open in your preferred terminal instead of whichever terminal happens to be first in the detection list - Rules and skills
paths:frontmatter now accepts a YAML list of globs - MCP tool descriptions and server instructions are now capped at 2KB to prevent OpenAPI-generated servers from bloating context
- MCP servers configured both locally and via claude.ai connectors are now deduplicated — the local config wins
- Background bash tasks that appear stuck on an interactive prompt now surface a notification after ~45 seconds
- Token counts ≥1M now display as "1.5m" instead of "1512.6k"
- Global system-prompt caching now works when
ToolSearchis enabled, including for users with MCP tools configured - Fixed voice push-to-talk: holding the voice key no longer leaks characters into the text input, and transcripts now insert at the correct position
- Fixed up/down arrow keys being unresponsive when a footer item is focused
- Fixed
Ctrl+U(kill-to-line-start) being a no-op at line boundaries in multiline input, so repeatedCtrl+Unow clears across lines - Fixed null-unbinding a default chord binding (e.g.
"ctrl+x ctrl+k": null) still entering chord-wait mode instead of freeing the prefix key - Fixed mouse events inserting literal "mouse" text into transcript search input
- Fixed workflow subagents failing with API 400 when the outer session uses
--json-schemaand the subagent also specifies a schema - Fixed missing background color behind certain emoji in user message bubbles on some terminals
- Fixed the "allow Claude to edit its own settings for this session" permission option not sticking for users with
Edit(.claude)allow rules - Fixed a hang when generating attachment snippets for large edited files
- Fixed MCP tool/resource cache leak on server reconnect
- Fixed a startup performance issue where partial clone repositories (Scalar/GVFS) triggered mass blob downloads
- Fixed native terminal cursor not tracking the text input caret, so IME composition (CJK input) now renders inline and screen readers can follow the input position
- Fixed spurious "Not logged in" errors on macOS caused by transient keychain read failures
- Fixed cold-start race where core tools could be deferred without their bypass active, causing Edit/Write to fail with InputValidationError on typed parameters
- Improved detection for dangerous removals of Windows drive roots (
C:\,C:\Windows, etc.) - Improved interactive startup by ~30ms by running
setup()in parallel with slash command and agent loading - Improved startup for
claude "prompt"with MCP servers — the REPL now renders immediately instead of blocking until all servers connect - Improved Remote Control to show a specific reason when blocked instead of a generic "not yet enabled" message
- Improved p90 prompt cache rate
- Reduced scroll-to-top resets in long sessions by making the message window immune to compaction and grouping changes
- Reduced terminal flickering when animated tool progress scrolls above the viewport
- Changed issue/PR references to only become clickable links when written as
owner/repo#123— bare#123is no longer auto-linked - Slash commands unavailable for the current auth setup (
/voice,/mobile,/chrome,/upgrade, etc.) are now hidden instead of shown - [VSCode] Added rate limit warning banner with usage percentage and reset time
- Stats screenshot (Ctrl+S in /stats) now works in all builds and is 16× faster
v2.1.83
What's changed
- Added
managed-settings.d/drop-in directory alongsidemanaged-settings.json, letting separate teams deploy independent policy fragments that merge alphabetically - Added
CwdChangedandFileChangedhook events for reactive environment management (e.g., direnv) - Added
sandbox.failIfUnavailablesetting to exit with an error when sandbox is enabled but cannot start, instead of running unsandboxed - Added
disableDeepLinkRegistrationsetting to preventclaude-cli://protocol handler registration - Added
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1to strip Anthropic and cloud provider credentials from subprocess environments (Bash tool, hooks, MCP stdio servers) - Added transcript search — press
/in transcript mode (Ctrl+O) to search,n/Nto step through matches - Added
Ctrl+X Ctrl+Eas an alias for opening the external editor (readline-native binding;Ctrl+Gstill works) - Pasted images now insert an
[Image #N]chip at the cursor so you can reference them positionally in your prompt - Agents can now declare
initialPromptin frontmatter to auto-submit a first turn chat:killAgentsandchat:fastModeare now rebindable via~/.claude/keybindings.json- Fixed mouse tracking escape sequences leaking to shell prompt after exit
- Fixed Claude Code hanging on exit on macOS
- Fixed screen flashing blank after being idle for a few seconds
- Fixed a hang when diffing very large files with few common lines — diffs now time out after 5 seconds and fall back gracefully
- Fixed a 1–8 second UI freeze on startup when voice input was enabled, caused by eagerly loading the native audio module
- Fixed a startup regression where Claude Code would wait ~3s for claude.ai MCP config fetch before proceeding
- Fixed
--mcp-configCLI flag bypassingallowedMcpServers/deniedMcpServersmanaged policy enforcement - Fixed claude.ai MCP connectors (Slack, Gmail, etc.) not being available in single-turn
--printmode - Fixed
caffeinateprocess not properly terminating when Claude Code exits, preventing Mac from sleeping - Fixed bash mode not activating when tab-accepting
!-prefixed command suggestions - Fixed stale slash command selection showing wrong highlighted command after navigating suggestions
- Fixed
/configmenu showing both the search cursor and list selection at the same time - Fixed background subagents becoming invisible after context compaction, which could cause duplicate agents to be spawned
- Fixed background agent tasks staying stuck in "running" state when git or API calls hang during cleanup
- Fixed
--channelsshowing "Channels are not currently available" on first launch after upgrade - Fixed uninstalled plugin hooks continuing to fire until the next session
- Fixed queued commands flickering during streaming responses
- Fixed slash commands being sent to the model as text when submitted while a message is processing
- Fixed scrollback jumping when collapsed read/search groups finish after scrolling offscreen
- Fixed scrollback jumping to top when the model starts or stops thinking
- Fixed SDK session history loss on resume caused by hook progress/attachment messages forking the parentUuid chain
- Fixed copy-on-select not firing when you release the mouse outside the terminal window
- Fixed ghost characters appearing in height-constrained lists when items overflow
- Fixed
Ctrl+Binterfering with readline backward-char at an idle prompt — it now only fires when a foreground task can be backgrounded - Fixed tool result files never being cleaned up, ignoring the
cleanupPeriodDayssetting - Fixed space key being swallowed for up to 3 seconds after releasing voice hold-to-talk
- Fixed ALSA library errors corrupting the terminal UI when using voice mode on Linux without audio hardware (Docker, headless, WSL1)
- Fixed voice mode SoX detection on Termux/Android where spawning
whichis kernel-restricted - Fixed Remote Control sessions showing as Idle in the web session list while actively running
- Fixed footer navigation selecting an invisible Remote Control pill in config-driven mode
- Fixed memory leak in remote sessions where tool use IDs accumulate indefinitely
- Improved Bedrock SDK cold-start latency by overlapping profile fetch with other boot work
- Improved
--resumememory usage and startup latency on large sessions - Improved plugin startup — commands, skills, and agents now load from disk cache without re-fetching
- Improved Remote Control session titles: AI-generated titles now appear within seconds of the first message
- Improved
WebFetchto identify asClaude-Userso site operators can recognize and allowlist Claude Code traffic viarobots.txt - Reduced
WebFetchpeak memory usage for large pages - Reduced scrollback resets in long sessions from once per turn to once per ~50 messages
- Faster
claude -pstartup with unauthenticated HTTP/SSE MCP servers (~600ms saved) - Bash ghost-text suggestions now include just-submitted commands immediately
- Increased non-streaming fallback token cap (21k → 64k) and timeout (120s → 300s local) so fallback requests are less likely to be truncated
- Interrupting a prompt before any response now automatically restores your input so you can edit and resubmit
/statusnow works while Claude is responding, instead of being queued until the turn finishes- Plugin MCP servers that duplicate an org-managed connector are now suppressed instead of running a second connection
- Linux: respect
XDG_DATA_HOMEwhen registering theclaude-cli://protocol handler - Changed "stop all background agents" keybinding from
Ctrl+FtoCtrl+X Ctrl+Kto stop shadowing readline forward-char - Deprecated
TaskOutputtool in favor of usingReadon the background task's output file path - [VSCode] Spinner now turns red with "Not responding" when the backend hasn't responded for 60 seconds
- [VSCode] Fixed session history not loading correctly when reopening a session via URL or after restart
v2.1.81
What's changed
- Added
--bareflag for scripted-pcalls — skips hooks, LSP, plugin sync, and skill directory walks; requiresANTHROPIC_API_KEYor anapiKeyHelpervia--settings(OAuth and keychain auth disabled); auto-memory fully disabled - Added
--channelspermission relay — channel servers that declare the permission capability can forward tool approval prompts to your phone - Fixed multiple concurrent Claude Code sessions requiring repeated re-authentication when one session refreshes its OAuth token
- Fixed voice mode silently swallowing retry failures and showing a misleading "check your network" message instead of the actual error
- Fixed voice mode audio not recovering when the server silently drops the WebSocket connection
- Fixed
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASnot suppressing the structured-outputs beta header, causing 400 errors on proxy gateways forwarding to Vertex/Bedrock - Fixed
--channelsbypass for Team/Enterprise orgs with no other managed settings configured - Fixed a crash on Node.js 18
- Fixed unnecessary permission prompts for Bash commands containing dashes in strings
- Fixed plugin hooks blocking prompt submission when the plugin directory is deleted mid-session
- Fixed a race condition where background agent task output could hang indefinitely when the task completed between polling intervals
- Resuming a session that was in a worktree now switches back to that worktree
- Fixed
/btwnot including pasted text when used during an active response - Fixed a race where fast Cmd+Tab followed by paste could beat the clipboard copy under tmux
- Fixed terminal tab title not updating with an auto-generated session description
- Fixed invisible hook attachments inflating the message count in transcript mode
- Fixed Remote Control sessions showing a generic title instead of deriving from the first prompt
- Fixed
/renamenot syncing the title for Remote Control sessions - Fixed Remote Control
/exitnot reliably archiving the session - Improved MCP read/search tool calls to collapse into a single "Queried {server}" line (expand with Ctrl+O)
- Improved
!bash mode discoverability — Claude now suggests it when you need to run an interactive command - Improved plugin freshness — ref-tracked plugins now re-clone on every load to pick up upstream changes
- Improved Remote Control session titles to refresh after your third message
- Updated MCP OAuth to support Client ID Metadata Document (CIMD / SEP-991) for servers without Dynamic Client Registration
- Changed plan mode to hide the "clear context" option by default (restore with
"showClearContextOnPlanAccept": true) - Disabled line-by-line response streaming on Windows (including WSL in Windows Terminal) due to rendering issues
- [VSCode] Fixed Windows PATH inheritance for Bash tool when using Git Bash (regression in v2.1.78)
v2.1.80
What's changed
- Added
rate_limitsfield to statusline scripts for displaying Claude.ai rate limit usage (5-hour and 7-day windows withused_percentageandresets_at) - Added
source: 'settings'plugin marketplace source — declare plugin entries inline in settings.json - Added CLI tool usage detection to plugin tips, in addition to file pattern matching
- Added
effortfrontmatter support for skills and slash commands to override the model effort level when invoked - Added
--channels(research preview) — allow MCP servers to push messages into your session - Fixed
--resumedropping parallel tool results — sessions with parallel tool calls now restore all tool_use/tool_result pairs instead of showing[Tool result missing]placeholders - Fixed voice mode WebSocket failures caused by Cloudflare bot detection on non-browser TLS fingerprints
- Fixed 400 errors when using fine-grained tool streaming through API proxies, Bedrock, or Vertex
- Fixed
/remote-controlappearing for gateway and third-party provider deployments where it cannot function - Fixed
/sandboxtab switching not responding to Tab or arrow keys - Improved responsiveness of
@file autocomplete in large git repositories - Improved
/effortto show what auto currently resolves to, matching the status bar indicator - Improved
/permissions— Tab and arrow keys now switch tabs from within a list - Improved background tasks panel — left arrow now closes from the list view
- Simplified plugin install tips to use a single
/plugin installcommand instead of a two-step flow - Reduced memory usage on startup in large repositories (~80 MB saved on 250k-file repos)
- Fixed managed settings (
enabledPlugins,permissions.defaultMode, policy-set env vars) not being applied at startup whenremote-settings.jsonwas cached from a prior session
v2.1.79
What's changed
- Added
--consoleflag toclaude auth loginfor Anthropic Console (API billing) authentication - Added "Show turn duration" toggle to the
/configmenu - Fixed
claude -phanging when spawned as a subprocess without explicit stdin (e.g. Pythonsubprocess.run) - Fixed Ctrl+C not working in
-p(print) mode - Fixed
/btwreturning the main agent's output instead of answering the side question when triggered during streaming - Fixed voice mode not activating correctly on startup when
voiceEnabled: trueis set - Fixed left/right arrow tab navigation in
/permissions - Fixed
CLAUDE_CODE_DISABLE_TERMINAL_TITLEnot preventing terminal title from being set on startup - Fixed custom status line showing nothing when workspace trust is blocking it
- Fixed enterprise users being unable to retry on rate limit (429) errors
- Fixed
SessionEndhooks not firing when using interactive/resumeto switch sessions - Improved startup memory usage by ~18MB across all scenarios
- Improved non-streaming API fallback with a 2-minute per-attempt timeout, preventing sessions from hanging indefinitely
CLAUDE_CODE_PLUGIN_SEED_DIRnow supports multiple seed directories separated by the platform path delimiter (:on Unix,;on Windows)- [VSCode] Added
/remote-control— bridge your session to claude.ai/code to continue from a browser or phone - [VSCode] Session tabs now get AI-generated titles based on your first message
- [VSCode] Fixed the thinking pill showing "Thinking" instead of "Thought for Ns" after a response completes
- [VSCode] Fixed missing session diff button when opening sessions from the left sidebar
v2.1.78
What's changed
- Added
StopFailurehook event that fires when the turn ends due to an API error (rate limit, auth failure, etc.) - Added
${CLAUDE_PLUGIN_DATA}variable for plugin persistent state that survives plugin updates;/plugin uninstallprompts before deleting it - Added
effort,maxTurns, anddisallowedToolsfrontmatter support for plugin-shipped agents - Terminal notifications (iTerm2/Kitty/Ghostty popups, progress bar) now reach the outer terminal when running inside tmux with
set -g allow-passthrough on - Response text now streams line-by-line as it's generated
- Fixed
git log HEADfailing with "ambiguous argument" inside sandboxed Bash on Linux, and stub files pollutinggit statusin the working directory - Fixed
cc logand--resumesilently truncating conversation history on large sessions (>5 MB) that used subagents - Fixed infinite loop when API errors triggered stop hooks that re-fed blocking errors to the model
- Fixed
deny: ["mcp__servername"]permission rules not removing MCP server tools before sending to the model, allowing it to see and attempt blocked tools - Fixed
sandbox.filesystem.allowWritenot working with absolute paths (previously required//prefix) - Fixed
/sandboxDependencies tab showing Linux prerequisites on macOS instead of macOS-specific info - Security: Fixed silent sandbox disable when
sandbox.enabled: trueis set but dependencies are missing — now shows a visible startup warning - Fixed
.git,.claude, and other protected directories being writable without a prompt inbypassPermissionsmode - Fixed ctrl+u in normal mode scrolling instead of readline kill-line (ctrl+u/ctrl+d half-page scroll moved to transcript mode only)
- Fixed voice mode modifier-combo push-to-talk keybindings (e.g. ctrl+k) requiring a hold instead of activating immediately
- Fixed voice mode not working on WSL2 with WSLg (Windows 11); WSL1/Win10 users now get a clear error
- Fixed
--worktreeflag not loading skills and hooks from the worktree directory - Fixed
CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONSandincludeGitInstructionssetting not suppressing the git status section in the system prompt - Fixed Bash tool not finding Homebrew and other PATH-dependent binaries when VS Code is launched from Dock/Spotlight
- Fixed washed-out Claude orange color in VS Code/Cursor/code-server terminals that don't advertise truecolor support
- Added
ANTHROPIC_CUSTOM_MODEL_OPTIONenv var to add a custom entry to the/modelpicker, with optional_NAMEand_DESCRIPTIONsuffixed vars for display - Fixed
ANTHROPIC_BETASenvironment variable being silently ignored when using Haiku models - Fixed queued prompts being concatenated without a newline separator
- Improved memory usage and startup time when resuming large sessions
- [VSCode] Fixed a brief flash of the login screen when opening the sidebar while already authenticated
- [VSCode] Fixed "API Error: Rate limit reached" when selecting Opus — model dropdown no longer offers 1M context variant to subscribers whose plan tier is unknown