Releases: anthropics/claude-code
Releases · anthropics/claude-code
Release list
v2.1.251
What's changed
- Added
PreModelSwitchandPostModelSwitchhook events (block, confirm, or annotate a model switch);SessionStartresume hooks now receive session staleness and the estimated re-cache cost - Added live streaming of a foreground subagent's tool calls and results to Remote Control clients (background subagents, the default, still show status only)
- Added a Spend limit bar to
/usageand arate_limits.spend_limitstatus line field for developers behind a Claude apps gateway with spend limits - Added a per-session prompt-cache line to
/cost(hit ratio, misses, tokens re-cached, warm/cold) and a matchingprompt_cacheobject for status line scripts - Added
attach,logs,stop,respawn, andrmtoclaude --help; the--resumemessage for a running background session now names the exactclaude attach <id>command - Fixed file tools (Read, Write, Edit) following a symlink swapped inside the working directory after the permission check, which could read or write outside the approved location
- Fixed plugin commands declared in a marketplace entry being able to point outside the plugin directory; such paths are now rejected with a path-traversal error
- Fixed project settings being able to enable detailed beta tracing or raw API body logging, and a lower-scope beta tracing endpoint bypassing an OTLP collector pinned by managed settings or a host app
- Fixed the Workflow tool reading (and quoting in errors) a
scriptPathoutside what the session may read before the permission check ran - Fixed Grep and Glob not applying
Read(...)deny rules to files reached through a symlinked search path - Fixed conversations getting stuck on "text content blocks must be non-empty" errors after a turn where the model produced only thinking
- Fixed the first launch on a fresh install starting in default mode instead of auto mode for accounts whose startup default is auto mode
- Fixed Opus 5 requests failing with "effort … is not supported when thinking is disabled" when effort was xhigh/max and thinking was turned off; effort is now sent as
highin that case - Fixed replying to a message Claude Desktop delivered from another session:
SendMessageto that session id now delivers through Claude Desktop instead of failing with "not reachable" - Fixed TUI lag with many parallel subagents: per-second progress ticks now replace their predecessor instead of piling up in the transcript
- Fixed agent teams: a teammate's final answer not reaching the team lead — it now arrives in the idle notification instead of a content-free "available" notice
- Fixed background subagents being unable to reply to a message from an unnamed sibling or parent agent (
fromwas the agent type, which is not an address) - Fixed managed-settings
disableAutoModearriving mid-session not moving an already-running auto-mode session back to default mode - Fixed a "switch to Opus 1M for 5x more context" tip that appeared even when the current Opus model already has a 1M context window
- Fixed Claude apps gateway sessions treating a stored Anthropic profile (e.g. a Console sign-in) as active: listing it in
/statusand retrying gateway 401s with it, though requests never use it - Fixed cloud sessions telling Claude the model had changed when the host was only setting the session's initial model
- Fixed Remote Control reporting a failure when an organization's policy disables it; it now shows a single quiet notice instead
- Fixed
/mcp reconnecton Remote Control showing a generic withheld-detail error instead of the real remedy when a server was disabled in another session - Fixed
--input-format stream-json: client-injected assistant tool calls sent without a message id were merged into the first one and their results lost, including when resuming older sessions - Fixed session transcripts being silently overwritten when a directory change relocated a session onto an existing same-ID transcript
- Fixed background sessions and their subagents being unable to edit files inside a git worktree they created with
git worktree add - Fixed background sessions occasionally starting without any plugin skills (and staying that way) when another Claude Code process was refreshing the plugin marketplace at the same moment
- Fixed selecting text in an opened background session inside tmux over SSH: it now copies to the tmux buffer like a foreground session instead of falling back to OSC 52
- Fixed SDK and cloud sessions hanging indefinitely when an SDK MCP server's handshake acknowledgment was lost; the wait now times out after 70 seconds and marks only that server failed
- Fixed self-hosted runner leaving a stuck session's Bash tool processes running after the session was force-stopped
- Fixed
/usage-creditsfor Team and Enterprise members whose admin set the org's usage-credit limit to $0: it now offers to ask the admin instead of saying a cap was reached - Fixed
--worktree --tmuxwith a merge-request number on a gitlab.com origin trying a doomed GitHub-style fetch first instead of fetching the GitLab ref directly - Fixed Ctrl+G failing with "Emacs quit unexpectedly" in background sessions for editors that open
/dev/tty, such asemacs -nwandmicro - Fixed an
additionalDirectoriesentry containing a null byte crashing startup, or breaking/add-dirand later settings updates when it came from an SDK host, IDE, or hook; it is now skipped - Fixed the MCP server menu's copy shortcut: it now says how the sign-in URL was copied instead of always claiming success
- Fixed italic text (such as the session recap line) rendering as highlighted blocks in GNU screen and in tmux sessions using a
screenterminal type - Fixed
claude mcp add --headerandclaude mcp add-jsonhelp text naming the wrong transports - Fixed
claude ultrareviewand/ultrareviewwaiting the full 30 minutes when the cloud session fails to start; they now stop early and report the reason - Fixed Bash permission checks auto-approving commands that assign an arithmetic expression to an integer shell variable (e.g.
OPTIND=1/0,RANDOM=2+2); these now prompt for approval - Fixed backgrounded sessions (
←,/background,--bg) losing a Vertex/Bedrock gateway (ANTHROPIC_*_BASE_URL+CLAUDE_CODE_SKIP_*_AUTH) exported in the shell, so every request failed - Fixed
claude --bg --model fableon Max plans stopping to ask for usage credits while the interactive session on the same account still had Fable allowance - Fixed the one-time "make auto mode your default" offer appearing in unattended sessions (e.g. agent-team teammate panes), where a stray keypress could accept it unread
- Fixed the managed-settings approval prompt re-appearing after signing in again to the same Claude apps gateway when the settings are unchanged
- Fixed disabled
/bugand/sharereporting that/feedbackwas disabled; tips,/help, and refusal messages no longer suggest/feedbackwhen an org policy or env var turns it off - Fixed cloud session creation advising GitHub setup after a transient GitHub connection failure — the message now says to retry instead
- Improved CPU usage during turns in interactive sessions by cutting redundant UI re-renders
- Improved install size: the native binary is about 5 MB smaller
- Improved cloud sessions: when the session's network proxy drops a connection during a Bash command, the tool result now names the host and reason instead of only "connection reset"
- Improved
/scheduleto explain that MCP servers configured in Claude Code can't be attached to cloud routines, instead of a bare "No MCP connectors" message - Improved framing of messages from your own subagents: Claude is told the sender is a worker inside this session, not an unrelated Claude session
- Improved the prompt placeholder to read "Message @name…" while viewing a background subagent or fork transcript opened from the subagent panel or
/tasks - Improved sanitization of MCP server names in error messages, menus, and command results
- Improved Amazon Bedrock session start under
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST(e.g. Claude Desktop): a session given a Bedrock model ID or ARN no longer waits for inference-profile discovery - Improved the managed settings approval dialog to list only the settings that changed since you last approved them
- Improved retry when the model's tool call is malformed: the broken output is now dropped from the retry context, including on Bedrock, Vertex, and Foundry
- Changed
/radioto be available on Bedrock, Vertex AI, Foundry, and Claude Platform on AWS, and when telemetry is disabled - Changed Claude in Chrome so browser actions always go through Claude Code's permission checks, including in sessions with telemetry disabled, which previously used the Chrome extension's own prompts
- Changed
CLAUDE_CODE_SUBAGENT_MODELto set the default subagent model rather than override everything: an agent definition'smodel:and an explicit per-spawn model now take precedence over it - Changed the default commit trailer to
Co-Authored-By: Claude Codewhen the active model isn't a recognized Claude model (e.g. third-party models behind a customANTHROPIC_BASE_URL) - Changed the default model for seat-based Enterprise subscriptions to Opus 5, matching other premium plans
- Changed
/effortto save your default effort level per model, so each model keeps its own setting when you switch - Changed analytics to no longer turn off before sign-in solely because managed settings force gateway login (or cannot be read); they stay off once signed in to the gateway or via
DISABLE_TELEMETRY - Changed the footer PR badge on Bedrock, Vertex, and Foundry, and when telemetry is off, to call the GitHub API directly (via
gh auth token,GH_TOKEN, orGITHUB_TOKEN) instead ofgh pr view - Changed how Bash command output files are created and read back when commands run in the sandbox, so a sandboxed command cannot redirect or replace them
- C...
v2.1.250
What's changed
- Bug fixes and reliability improvements
v2.1.248
What's changed
- Added
--restricted(orCLAUDE_CODE_RESTRICTED=1): removes the built-in tools that run commands or code andWebFetch(unless named in--tools), keeps file tools inside the working directory, refusesbypassPermissions, and ignores user, project and local settings files - Added
experimental.cacheTtl("5m"or"1h") to agent frontmatter: a per-agent prompt cache TTL used when no subagent TTL setting is configured - Added
claude self-hosted-runner --client-label <label>(orSELF_HOSTED_RUNNER_CLIENT_LABEL) to override the label the runner registers with (default: hostname) - Added server-managed settings diagnostics: a startup warning when the settings fail to load, and a
/doctorand/statusline explaining a load failure or why they weren't fetched (Bedrock/Vertex/third-party provider, customANTHROPIC_BASE_URL) - Added a warning in
/web-setupwhen the GitHub CLI token lacks theworkflowscope, since pushes to very large repositories can be rejected without it - Added
/usage-creditsfor Enterprise organizations billed through AWS Marketplace, self-serve Enterprise, and Enterprise trials, so members can request a higher usage limit from their admin - Added cross-session messaging (
SendMessage/ListAgents) between sessions on the same machine on Bedrock, Vertex, and Foundry, and when telemetry is disabled - Fixed a prompt-cache miss (and lost extended-thinking context) roughly once an hour in long sessions, caused by tool definitions being re-rendered after an OAuth token refresh
- Fixed the
ScheduleWakeuptool definition changing between a session and its--resumewhen the account had entered usage overage, causing a full prompt-cache miss on the resumed session's first turn - Fixed Claude Desktop and Cowork sessions disappearing after 30 days: the transcript cleanup now keeps desktop-written sessions while they are in the app (unless org policy manages retention); the new
desktopSessionCleanupPeriodDayssetting caps the exemption - Fixed being sent to the login screen when another Claude Code process held the token refresh lock while the session token had expired; the request now fails with a retryable error instead
- Windows: Fixed the
claude agentslist not responding to the keyboard after detaching from a session, or when launched in a terminal tab left in win32-input-mode - Fixed the recommended Console sign-in in
/loginfailing with an OAuth error before showing a sign-in URL on machines where it can't be used (for example whenANTHROPIC_API_KEYor an API key helper is set); it now falls back to the API-key sign-in - Fixed model names in
/modeland fast-mode switch notices to render as code, so suffixes like[1m]display literally instead of as a link - Fixed
claude agentsskipping the workspace trust prompt when theCIenvironment variable is set - Fixed
claude agentscrashing on launch when the PR-status cache held a malformed entry - Fixed agent view resurrecting a weeks-old background session after the machine was off: such a session now shows as stopped at its real end, and opening it asks before resuming its saved conversation
- Fixed agent view sometimes opening an older conversation, and dropping the typed prompt, when starting a new session
- Fixed
claude agents: opening a stopped session that you already resumed in another terminal no longer starts a second process on that conversation; the row now says it is open in a terminal - Fixed
claude agentsandclaude rmrefusing to delete a session ("has commits that are not pushed anywhere") when its worktree branch was already merged into your checked-out default branch (e.g. localmain) but not yet pushed - Fixed background sessions waiting silently when a
PermissionRequestorPreToolUsehook prints an invalid answer: theclaude agentsrow now names the hook and the schema error - Fixed hooks silently treating a stdout
{…}object that isn't valid JSON as plain text; it's now reported as a hook error with the parse message - Fixed
/mcplisting a project.mcp.jsonentry that declares the claude.ai connector type under the trusted "claude.ai" heading; it now appears under its real scope - Fixed MCP servers whose
headersHelpersupplies theAuthorizationheader falling into OAuth discovery on a 401 instead of re-running the helper and retrying the call as documented - Fixed
/loginto a Claude apps gateway hanging when the managed-settings security approval dialog was required - Fixed gateway model discovery (
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY) never running whenapiKeyHelperis the only credential - Fixed
claude logsleaving mouse tracking, bracketed paste and the alternate screen switched on in the terminal it was run from - Fixed the trust dialog's list of repo permission rules showing a garbled character when a long rule was cut off in the middle of an emoji
- Fixed the permission mode indicator staying hidden behind the "Press Ctrl-C again to exit" hint when you press shift+tab right after ctrl+c
- Fixed
/ultrareviewand locally seeded cloud sessions uploading uncommitted edits toprod.env-style and*.tfvarsfiles, or to editor swap, temp, and backup copies of credential files (e.g.key.pem.tmp,id_rsa.swo); they now stay on your machine - Fixed Remote Control sessions occasionally never showing a permission prompt or the latest messages on the connected device after the CLI silently reconnected
- Fixed cloud sessions occasionally failing at startup when the container's session credentials were not yet readable
- Fixed
claude remote-controlrejecting its own flags (e.g.--spawn,--name) when a global flag or a wrapper-injected option precedes the subcommand - Fixed startup warnings (e.g. "N MCP servers need authentication") rendering one column right of the rest of the transcript
- Fixed a backgrounded worktree session losing its checkout: the background session now holds the worktree's lock while it runs, so cleanup and
git worktree removeleave it alone - Fixed @-mentions of other sessions not matching names typed with non-Latin characters (for example Korean entered through an IME)
- Fixed an invalid
crossSessionInboundvalue being silently ignored: it now warns and holds cross-session messages (user settings) or refuses them (managed settings) until fixed - Fixed rate-limit, usage, and fast-mode messages telling you to run
/usage-creditswhen that command isn't available for your organization (e.g. hidden withDISABLE_EXTRA_USAGE_COMMAND) - [VSCode] Fixed a chat tab getting stuck on "No conversation found" when its session was never saved; it now starts a new conversation instead
- Improved the Workflow tool's prompt footprint: its description is now about 1k tokens instead of 5.7k, with the script-writing reference moved into a bundled
workflow-authoringskill - Improved the prompt-footer PR badge to check GitHub less often while the pull request is unchanged; a push or a
gh prcommand still refreshes it right away - Improved managed settings: client-side timeout, MCP startup-mode, and stream-watchdog env vars no longer trigger the settings-approval prompt
- Improved
/ultrareview <PR#>to check before launch that the GitHub account connected to your Claude account can access the repository, and to explain how to fix it, instead of failing after the cloud session starts - Improved cross-session messaging: falls back to a private per-user
/tmpdirectory when the default one can't be used, and the notice and/statusname the directory to fix - Changed shift+enter in the agent view dispatch input to insert a newline (matching the prompt); ctrl+enter now dispatches and attaches
- Changed
/loop: self-paced dynamic mode and the no-prompt autonomous default are now always available, including on Bedrock/Vertex/Foundry - Changed Anthropic telemetry export failures to log at debug level as
[Anthropic telemetry]instead of[3P telemetry] OTEL diag error, so they are not mistaken for your OTel collector failing - Changed cross-session messaging in Linux user namespaces: root-equivalent trust for unmapped owners is limited to canonical system directories
- Changed
SendMessagefrom a subagent to another session: the result now notes that any reply is delivered to the parent session's conversation, not to the subagent
v2.1.247
What's changed
- Added the
SendFeedbacktool: when something goes wrong in a session, Claude can draft a feedback report for you to review and send from/feedback(turn off with thefeedbackDraftssetting) - Added
{id, text, cooldownSessions, priority}entries,tipsFile, andlabeltospinnerTipsOverride, so organizations can rotate their own tips alongside the built-in ones - Added a tip on Bash permission prompts pointing to auto mode, with a one-keystroke "Yes, and switch to auto mode" option
- Added
/claude-api cost-optimizeto profile an existing project's Claude API spend and work through cost levers (caching, token hygiene, batch, effort, model choice) one measured change at a time - Updated the
/claude-apiskill with Admin API coverage (organization members, invites, workspaces, API keys, rate limit reports, workload identity federation, CMEK) - Fixed fast arrow-key + Enter sequences acting on the row above the one you navigated to in history search,
/config,/mcp,/skills, background tasks, and/model - Fixed sub-agents dying on a first-call model 404: they now use the session's fallback model chain, and the error returned to the parent includes the error type, status, request id, and model
- Fixed a hook or background agent that printed megabytes of error output being able to overflow the conversation and wedge the session on "Prompt is too long"
- Fixed Ctrl keyboard shortcuts not firing under non-Latin (e.g. Cyrillic) keyboard layouts in kitty-protocol terminals
- Fixed text like
<35;150;7Mbeing inserted into the prompt when a mouse report arrived split across reads right after the escape prefix - Fixed the Bash sandbox's after-command cleanup deleting a dotfile-managed
~/.claude/settings.jsonsymlink (nix/home-manager, stow) when it is repointed outside the sandbox's writable area - Fixed
/terminal-setupoverwriting your entire Zedkeymap.jsoninstead of merging in its keybinding - Fixed
/renamesilently confirming when the session registry could not be updated; it now says other sessions may still show the old name - Fixed
/compactand "Summarize from here" in sessions started with--agentsummarizing under the default system prompt instead of the conversation's own - Fixed a background session showing "opening…" forever in
claude agentsafter its terminal host process died; the row now fails within seconds with the reason, and Enter restarts it - Fixed unbounded memory growth when a hook's or background task's output file could not be written; the file now notes where output was lost
- Fixed
/install-github-appover SSH: the copy shortcut now says how the sign-in URL was copied instead of always claiming success, and the URL appears immediately when no browser can open - Fixed shell commands carried over from the foreground logging an internal error or showing a misleading
[exited with code -1]line when they finish in background sessions - Fixed a version-less marketplace plugin's live cache directory being deleted and recreated on a second-scope install, which could disrupt a running session using it
- Fixed Remote Control sessions started with
/remote-controlnot reporting the working-tree diff to connected clients - Fixed self-hosted runner sessions reporting
runningbefore Claude Code had started, which could trigger a premature "Claude is waiting for your input" notification from the Claude desktop app - Fixed first-run setup exiting with "Unable to connect to Anthropic services" when managed settings configure Claude apps gateway sign-in and Anthropic endpoints are unreachable
- Fixed cloud sessions (Claude Code on the web, desktop and mobile apps) sometimes showing the previous permission mode when you switch modes right after sending a message
- Fixed cloud sessions going silent when the session's container restarts between turns while a background agent, shell, or monitor is still running — the resumed session now reports the lost work
- Improved plugin marketplace hardening: names containing control or invisible characters are rejected, and marketplace-supplied text in
/pluginandclaude pluginoutput is escape-safe - Improved Bedrock, Vertex, and Foundry sessions (and any with telemetry disabled): Claude is now told when a configured MCP server failed to connect, instead of concluding its tools don't exist
- Changed Sonnet 5's default auto-compact window to its full 1M context, so sessions on the 1M window now auto-compact at about 967K tokens instead of about 934K
- Changed cross-session peer messages to collapse by default to a one-line
Message from @<sender>: <first line>preview; Ctrl+O expands the full body - Changed terminal hyperlinks in rendered markdown: link targets that point at a network or automounter path, contain a control character, or lead with an invisible character now render as plain text
- Changed the prompt-footer PR badge to skip its GitHub re-check on terminal refocus when the last check is under a minute old
- Changed analytics to stay off from startup, not only after login, when managed settings force gateway login or a custom OAuth deployment is configured
- Changed Claude apps gateway sign-in requests to identify Claude Code (a
surface=claude_codedevice-authorization parameter and aclaude-code/<version>User-Agent) - Changed organization sign-in enforcement to exit at start when the administrator's managed settings cannot be read, even if host-supplied or per-user Windows registry settings exist
v2.1.246
What's changed
- Added a startup warning for Bash allow rules with a wildcard before the subcommand (e.g.
Bash(git * main)), since they also match options inserted before the subcommand - Added an Auto mode tab to
/permissionsfor viewing and editing auto mode classifier rules - Added the turn's completion time to the end-of-turn duration line, e.g.
✻ Sautéed for 23s · done 6:05 PM - Fixed fullscreen mode showing a blank transcript after resizing the terminal and jumping to the bottom until the next keypress
- Fixed a severe transcript slowdown when a diff contained a very long single line (e.g. a base64 string); such lines now render truncated with a marker
- Fixed erratic fullscreen scrolling when positioned at an earlier message, including jump-to-bottom getting stuck mid-transcript
- Fixed background sessions failing to open after 45 seconds when Claude Code's starting directory had been deleted, the machine had slept, or the host is slow to start processes
- Fixed background sessions failing to open with "Couldn't start the background service … EACCES" when another Claude Code process was re-installing the npm package at that moment
- Fixed markdown rendering being disabled for a whole message when its first 500 characters contained no markdown, and for
+/N)lists and setext headings - Fixed MCP tool calls interrupted by an incoming message in headless/remote sessions being reported to the model as "completed with no output" instead of an explicit interrupted error
- Fixed MCP tool arguments being sent as JSON strings when the parameter's schema is empty (
{}), instead of their real type - Fixed a command interrupted mid-run showing as "Ran 1 shell command" with no sign it was cut
- Fixed pressing ← or running
/backgroundduring a dynamic workflow restarting its finished subagents; it now asks first and says how many subagents would restart - Fixed opening a just-started session in
claude agentswhile its worker was still booting (common on Windows) stopping it with "was stopped while the respawn was in flight" - Fixed
claude agentslisting a backgrounded named session twice; backgrounding the same conversation again now numbers the new row (e.g.my-session (2)) - Fixed the background retention sweep removing git worktrees under
.claude/worktrees/that you created yourself when an old background-session record pointed at them - Fixed auto mode tool calls being denied as "temporarily unavailable" on very large sessions by scaling the safety-check deadline with prompt size
- Fixed the plugin cache creating duplicate SHA-named directories for the same plugin
- Fixed plugin skills whose frontmatter
namealready includes the<plugin>:prefix showing it doubled in the slash menu (e.g./plugin:plugin:skill) - Fixed
claude plugin updatefailing for an installed plugin given its bare name (only the fully-qualified name worked) - Fixed plugin installation failing when
plugin.jsonwas saved with a UTF-8 byte-order mark (BOM) - Fixed
/reload-pluginsreporting 0 skills for plugins that define skills underskills/*/SKILL.md - Fixed hook error messages showing a literal
${CLAUDE_PLUGIN_ROOT}instead of the resolved plugin path - Fixed
/renamereplacing the theme's prompt border color (including a custom theme'spromptBorder) with the default cyan; the border now keeps your theme's color unless you pick one with/color - Fixed custom theme diff colors (
diffAdded/diffRemovedand their dimmed variants) being ignored in diffs and the/themepreview - Fixed a
keybindings.jsonbinding with an unknown action name silently deadening that key; it is now skipped so the default binding keeps working, and a warning is logged under--debug - Fixed
/statsactivity heatmap showing each day's activity one cell off (Sunday's count under Monday) in timezones east of UTC - Fixed
/forkfrom an already-forked or backgrounded session starting the new session with an empty conversation - Fixed prompts beginning with
/--(e.g. Lean doc comments) being rejected as an unknown slash command instead of being sent to Claude - Fixed the
@file picker staying open after the typed text stopped matching a real path - Fixed the status line's cost and duration resetting to zero after navigating to the agents view and back
- Fixed fullscreen mode moving keyboard focus onto the control under the pointer when you clicked the terminal window only to bring it back into focus
- Fixed path completion failing when the completion token or working directory contained a null byte
- Windows/macOS: Fixed headless sessions not cleaning up stale entries in
~/.claude/sessionsleft by sessions that exited uncleanly - Fixed the UI stopping with a render error on the first tool call when a third-party Anthropic-compatible endpoint (
ANTHROPIC_BASE_URL) streams atool_useblock without anid - Fixed the Write tool reporting "Out of memory" or freezing for a long time after overwriting a very large existing file, even though the file had been written
- Fixed
claude plugin install <name>exiting silently (or hanging in a terminal) instead of reporting an error when~/.claude/plugins/known_marketplaces.jsonis empty or corrupted - Fixed resumed sessions failing every turn with a 400 when the saved history contains tool blocks the Anthropic API does not accept (typically written by a third-party API proxy)
- Fixed
curl -fsSL https://claude.ai/install.sh | bashfailing with "Raw mode is not supported" for some Team/Enterprise users with server-managed settings - Fixed sessions that ended in plan mode resuming outside plan mode in the VS Code extension, and in
claude -p --continue/--resumewith a permission prompt tool, when no permission mode was set - Fixed the
Notificationhook not firing while the sandbox "Network request outside of sandbox" permission prompt is waiting - Fixed Bash permission checks to always require approval for malformed commands with a dangling
&&or||operator - Fixed
--strict-mcp-configsessions prompting to approve.mcp.jsonservers they would never load, which left background sessions waiting at startup - Fixed telemetry and metrics requests to Anthropic carrying the API key configured for a third-party gateway (
ANTHROPIC_BASE_URL); a credential is now only sent to its own host - Fixed a visible API error on the first prompt after idle when
apiKeyHelperreturns short-lived JWTs: an expired cached token is now refreshed before sending, and 401/403 auth errors retry quietly - Fixed memory growing with session length in the fullscreen and Ctrl+O transcript views: each rendered message row no longer retains a full copy of the transcript-wide tool lookups
- Fixed
/ultrareviewruns and cloud sessions launched at the same time from one repository (e.g. from several worktrees) sometimes starting with another launch's uncommitted changes - Fixed the task progress count (e.g.
3/5) shown for background cloud sessions such as/autofix-proccasionally missing a task - Fixed Remote Control sessions keeping their placeholder name in claude.ai and the Claude app until the second prompt; the auto-generated title now appears after the first prompt
- Fixed MCP tools marked
requiresUserInteractionstill offering "Yes, and don't ask again" in their permission prompt; the option wrote an allow rule the tool then ignored - Fixed the self-hosted runner ending its live sessions or exiting when a work-poll response is malformed (e.g. an intercepting proxy's HTML page); it now retries the poll
- Improved
/cd: the new directory's project settings, hooks,.mcp.jsonservers (behind the usual approval prompt), skills, and agents now take effect right after the move instead of on--resume - Improved Bash tool latency on bash shells by replaying snapshot functions without a base64 subshell per function
- Improved subagent results: a subagent that stops at its
maxTurnslimit now returns its output marked as partial, with a hint to continue it viaSendMessage, instead of appearing finished - Improved non-interactive sessions (
-p, SDK, cloud sessions) to automatically continue a response cut off mid-stream by a server error, connection loss, or stall instead of ending with an error - Improved attribution of usage telemetry to your organization for workload identity federation sessions, events sent while
apiKeyHelperruns at startup, and after a login token expired while idle - Changed
/code-reviewso Claude can also start it on its own on Bedrock, Vertex AI, and Foundry, through the Claude apps gateway, and when telemetry or non-essential traffic is disabled /goal: Changed idle sessions to start at most three check-ins on long-running background work per goal; your next message allows three more- Changed
claude installandclaude updateto defer a pending managed-settings consent prompt to the next interactive session instead of prompting mid-command - Changed OpenTelemetry plugin events for plugins synced from claude.ai:
plugin_id_hashnow reflects the plugin's real marketplace, andenabled_viaisadmin-installfor admin-installed plugins - Fixed the command sandbox's filesystem configuration not respecting
--setting-sources
v2.1.245
What's changed
- Fixed a crash on startup on Linux distributions that ship glibc 2.44 (for example Arch Linux, CachyOS and Fedora Rawhide)
v2.1.241
What's changed
- Bug fixes and reliability improvements
v2.1.240
What's changed
- Bug fixes and reliability improvements
v2.1.239
What's changed
- Cost estimates (
/cost, status line,--max-budget-usd) now include the 1.1× US-only-inference premium for data-residency workspaces - Added the one-time fullscreen renderer offer on Bedrock, Vertex, Foundry and other previously excluded setups; new installs there now start in fullscreen
- Added
/claude-api upgradeto migrate Python projects fromanthropic0.x to 1.x, and updated the skill's Python reference for 1.x (timeouts useanthropic.Timeout, nothttpx.Timeout) - Cloud sessions: plugins synced from claude.ai now show as
name@synced, work withclaude plugin enable/disable <name>@synced, and never override a same-named plugin you installed - Alpine/musl builds: native image paste, clipboard, and audio-capture add-ons now load (musl-built binaries instead of glibc ones refused by the runtime)
- The usage-limit message shown when your monthly spend limit is already used up now also says when your session or weekly limit resets
- Fixed Bedrock streaming behind proxies that strip the response Content-Type header, which silently doubled billed API calls by re-running every turn non-streaming
- Fixed Claude Code hanging at startup behind an HTTPS proxy when using Bedrock with an SSO profile and
awsAuthRefresh— the credential pre-check now honorsHTTPS_PROXY - Fixed a raw crash dump when starting Claude Code from a directory that no longer exists; it now prints a clear message
- Fixed Edit and Write calls pausing for about 5 seconds in JetBrains IDE terminals when the Claude Code plugin is connected
- Fixed a race where pressing Esc with a prompt queued could let the next turn finish early, leaving the session idle while Claude was still working and letting a later resubmit repeat actions
- Fixed WebFetch retaining expired page content in memory for the whole session instead of the intended 15 minutes
- Fixed cloud sessions (Claude Code on the web, desktop and mobile apps) resuming out of plan mode after an idle worker restart
- Fixed MCP elicitation forms taller than the terminal being clipped in fullscreen mode: the form now fits the window, with hidden fields reachable by scrolling and Accept/Decline always visible
- Fixed remote MCP servers staying failed after a transient 5xx on a mid-session reconnect in cloud sessions or via SDK
setMcpServers() - Fixed custom session titles disappearing from
/resumeafter more than ~64 KB of conversation was written following the rename - Fixed
claude -c/resume picking up sessions from a different directory whose path differed only by characters like_,-, or. - Fixed
/resumeand the agents view showing a session as recently changed (and reordering it) when only its file was touched or it was merely reopened - Fixed
/resumein all-projects mode telling you tocdinto a deleted directory (e.g. a removed worktree); such sessions now resume in the current directory - Fixed the
dark-ansitheme rendering expanded tool results in fullscreen mode with text the same color as the background - Fixed the fullscreen renderer prompt reappearing on every launch when it could never be answered; it now stops after being shown on three launches
- Fixed
.worktreeincludepatterns starting with**/silently matching nothing when the target lived in a gitignored directory - Fixed agents, skills, and commands whose
.mdfile starts with a UTF-8 BOM being silently ignored - Fixed
/insightsechoing literal<message>tags in its response on some models - Fixed marketplace
metadata.pluginRoothaving no effect: bare plugin source names now resolve under it as the docs describe - Fixed mouse movement in browser-based terminals inserting text like
"35;150;7M"into the prompt when a mouse report arrived split across writes - Fixed custom theme overrides for the effort/ultracode status badge colors being ignored
- Fixed OpenTelemetry trace fragmentation: tool executions deferred by a
PreToolUsehook now resume in the original turn's trace instead of starting a new trace - Fixed vim mode in the agent view: Escape now switches to NORMAL mode and keeps your text instead of clearing the prompt
- Fixed the
selection:copykeybinding silently dropping a text selection that had been extended with Shift+Arrow keys - Fixed the
/voicestartup tip still appearing after voice dictation was enabled via thevoice.enabledsetting - Fixed shell-mode (
!) Tab completion dropping the./from a./scriptpath, which left a command the shell couldn't run - Fixed fullscreen mode answering a permission prompt or pressing a button when you clicked the terminal window only to bring it back into focus
- Fixed slash-command panels (e.g.
/config,/model) in fullscreen mode covering the latest messages; the conversation now stays pinned above the panel - Fixed the
/workflowsdetail dialog overflowing the terminal and losing its header off-screen when opened while Claude is still responding - Fixed the Linux sandbox making a nonexistent
.git/config.worktreeunreadable, which broke every sandboxed git command in repos withextensions.worktreeConfigset - Fixed hooks failing with "posix_spawn ENOENT" after the session's working directory was deleted; they now run from the project root or home directory instead
- Fixed
claudeMdExcludesnot excluding a symlinked.claude/rulesfile when the pattern names the rules directory or the symlink rather than its target - Fixed runaway session-title syncing to Remote Control when two Claude Code processes shared one background job's state (2.1.232 regression); title updates are now deduplicated and rate-limited
- Fixed sessions whose title starts with
/being unaddressable bySendMessageand shown as "(untitled)" inListAgents - Fixed Ctrl+W, Ctrl+U, Ctrl+K, Option+Backspace, Option+D and vim
df/dtleaving a broken[Pasted text #N]placeholder when the cursor was inside it - Fixed masked (password-style) inputs such as the login code field letting their text be pasted back with Ctrl+Y elsewhere or saved to prompt history when cleared with double Esc
- Fixed Ctrl+Backspace deleting one character instead of a word in search boxes
- Fixed a request rejected by an organization policy check being re-sent before the rejection was shown
- Improved the reminder shown after compaction so a skill's original arguments are not re-run as a new request
- Long file paths on tool-use rows now truncate in the middle to stay on one line
- Remote sessions keep sending keep-alives while a long
SessionStartorSetuphook runs, so the container is not idle-reaped mid-hook /goal: repeat check-ins on long-running background work now back off (30 min, then 1 h, then every 2 h) instead of repeating every 30 minutes/goal: resuming a session from theclaude --resumepicker now restores its active goalListAgentsnow tells a session its own name (the one peers use to message it), andSendMessageto your own name says so instead of "no agent named …"ListAgentsand/list-agentsnow list your live teammates (previously only subagents and other sessions appeared, so a reachable teammate looked absent)keybindingFlavor: "readline"now also matches Bash for word keys: Alt+F and Ctrl/Option+→ stop at the end of the word, Alt+D deletes to it (Ctrl+Y pastes it back), and punctuation separates words- Persistent retry mode (
CLAUDE_CODE_RETRY_WATCHDOG) now fails immediately on organization spend-limit and out-of-credits errors instead of waiting indefinitely for a reset - Claude in Chrome:
/clearnow closes the session's Chrome tab group, and empty groups are closed on/resumeand when Claude Code exits - Remote sessions: images uploaded from mobile now include their saved file path, so Claude can copy them into files it creates
- Claude Code on the web: requests from Bash and other tools to non-API anthropic.com hosts (e.g. www, docs) now go through the session's network proxy, so your environment's allowed domains apply
- Remote Control: clearer message and
claude doctorwording when Remote Control isn't enabled for your account - Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with
SendMessageand find each other withListAgents, as on macOS and Linux - [VSCode] "View usage" in the usage-limit banner now sits inline with the warning text instead of floating mid-banner
v2.1.238
What's changed
- Added a
keybindingFlavorsetting: set it to"readline"to make Ctrl+W in the prompt delete back to the previous whitespace, as in Bash; the default ("classic") is unchanged - Plugin marketplaces:
headersHelperon a url marketplace or a catalog entry runs a command that mints HTTP headers (e.g. a short-lived token) for catalog and same-origin archive fetches - A catalog entry's
headersHelperruns only when you install or update that plugin, after its command is shown;claude plugin install/updateask[y/N](or pass-y) - Added
claude self-hosted-runner --defer-shutdown-max-min <minutes>: on SIGTERM, keep serving attached sessions, park what is left after that many minutes, then exit - Added
claude self-hosted-runner --proxy-authorization-command/--proxy-authorization-filefor egress proxies that require a freshly issuedProxy-Authorizationheader on every connection - Fixed unbounded memory growth in long interactive sessions: subagent tool results are now released once they leave the recent display window
- Fixed custom, project, and plugin output styles drifting back to the default voice mid-session
- Fixed
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=truenot keeping prompt suggestions on when your account is near, but not over, its usage limit - Fixed worktree-isolation Bash refusals telling you to remove a redirect when the command had none
- Fixed self-hosted runners occasionally being removed by the server after a single slow or lost poll request, handing their healthy session to another runner
- Fixed MCP elicitation dialogs showing nothing for URLs longer than 4,096 characters, and permission prompts dropping the "don't ask again" option when the project path didn't fit the terminal width
- Fixed leftover
/tmp/claude-*-cwdfiles when a Bash command is killed, times out, or is interrupted - Fixed held Backspace being ignored on terminals that send Ctrl+H for Backspace when keystrokes arrive in large bursts (slow SSH/mosh links)
- Fixed text-wrapping in permission prompt diffs: lines containing wide multi-code-point characters (such as emoji) or tabs are no longer clipped
- Fixed killing a suspended (Ctrl+Z) session sometimes leaving the terminal in bracketed-paste mode with the cursor hidden
- Fixed stdio MCP servers receiving a
server/discoverrequest beforeinitialize, forcing lazy servers to start their backend on every session open - Fixed a proxy's refusal of a connection being reported as a generic network error instead of naming the proxy
- Fixed the
/modeland/effortcache-miss warning appearing when the prompt cache had already expired - Fixed per-task Stop from the Remote Control tasks panel doing nothing on CLI-hosted sessions
- Fixed remote sessions exiting when a client delivered a user message without a valid role
- Fixed Remote Control sessions started by
claude remote-controlinheriting session-scoped environment variables from the launching shell - Fixed a Remote Control session whose process crashed staying unavailable until
claude remote-controlwas restarted; it can now be reused when you next message it - Fixed Remote Control messages sent from the web or Desktop while Claude is mid-turn disappearing from the transcript after the turn finishes
- Fixed Remote Control model picks made on a phone or web not updating the model shown in the terminal
- Fixed Remote Control disconnecting with "login expired" when a brief network hiccup delays renewing your sign-in; it now retries and stays connected
- Fixed Remote Control reporting a failed reconnect on sign-out; signing out now ends the session with a clear message
- Fixed
ListAgents/SendMessagereporting "Remote Control is not connected" in sessions run byclaude remote-control(server mode) or Desktop/IDE hosts; they now list and reach Remote Control peers - Fixed
ListAgentsandSendMessageexposing the idle worker that the agent view pre-warms for your next background session; it now appears only once a task claims it - Cross-session messaging: sending to a session on this machine that refuses inbound messages (e.g.
crossSessionInbound: "refuse") now reports "refused" to the sender instead of a silent success - Cross-session messaging: a session whose inbox drops your messages (rate limit or full queue) now tells your session, instead of the messages vanishing silently
- Improved startup: bare
claudestarts sooner on macOS - Improved Bash tool permission checking for zsh-specific syntax in shell conditionals
- Improved Remote Control connection resilience: brief HTTP 403 refusals from a network edge, VPN, or proxy are now tolerated for up to 3 minutes, with the refusing party named when a block persists
- Improved startup responsiveness: the automatic update check now runs about 10 seconds after launch instead of competing with startup for CPU
- Updated the bundled
claude-apiskill for the Managed Agents Aug 19 release: web search/fetch domain settings and memory stores on self-hosted sandboxes - Changed Ctrl+L and Cmd+K in fullscreen to always just repaint — the double-press
/clearshortcut was removed, and 1-row nvim terminals no longer trigger automatic/clearloops - Changed
claude mcp listandclaude mcp getto show disabled servers as⊘ Disabledinstead of connecting to them for a health check - MCP
headersHelperin a project.mcp.json, and inline MCP servers in project or--add-diragent files, now require that folder's trust dialog to have been accepted (also underclaude -p) - MCP
headersHelperfrom a project.mcp.json, plugin, or agent file runs without inherited credential env vars; user, managed and claude.ai-scope helpers now run from the Claude config dir