Release notes

FEATURE

Terminal gains a Readline keybinding flavor for Ctrl+W word deletion

If you are used to pressing Ctrl+W in Bash to delete the previous word, you can now add {"keybindingFlavor": "readline"} to your user settings file at ~/.claude/settings.json to switch Ctrl+W to delete back to the previous whitespace, matching Bash; the default "classic" flavor remains unchanged if you don't set it.

FEATURE

Fullscreen shortcuts focus purely on repainting, and the double-press clear shortcut is removed

In fullscreen mode, pressing Ctrl+L or Cmd+K used to both repaint the display and, if double-pressed, trigger /clear, wiping out the whole conversation by accident. These shortcuts now focus exclusively on repainting the display; the double-press /clear shortcut has been removed, and 1-row nvim terminal windows no longer trigger unexpected clear loops.

FEATURE

Plugin marketplaces gain dynamic auth headers with explicit installation confirmation

Plugin marketplaces now support dynamic authentication.

By configuring headersHelper on a URL marketplace or catalog entry, the system runs a custom command to mint dynamic HTTP headers, using a short-lived token to fetch catalogs and same-origin archive files. Catalog helpers only execute when installing or updating that plugin after displaying the command, and claude plugin install or update will prompt with [y/N] unless -y is passed.

FEATURE

Self-hosted runners defer shutdown and withstand a missed poll

On SIGTERM, claude self-hosted-runner --defer-shutdown-max-min <minutes> lets a self-hosted runner keep serving attached sessions, then park remaining work before exiting. A single slow or lost poll request also no longer removes a healthy runner and hands its sessions to another runner.

FEATURE

Self-hosted runners refresh proxy authorization for every connection

For egress proxies requiring a freshly issued Proxy-Authorization header for every connection, self-hosted runners can use claude self-hosted-runner --proxy-authorization-command or claude self-hosted-runner --proxy-authorization-file.

BUGFIX

Long sessions release off-screen subagent tool results

Long sessions no longer keep accumulating memory from subagent tool results. Results remain in memory while in the recent display window, then are released once they leave it, preventing unbounded memory growth.

BUGFIX

Custom, project, and plugin output styles stay in effect

Custom, project, and plugin output styles no longer drift back to the default voice mid-session.

BUGFIX

Permission prompts handle wide characters, text wrapping, and long URLs correctly

Permission dialogs and diff previews now format text reliably across all terminal sizes. When MCP (Model Context Protocol, an open standard connecting AI to external tools) opens an elicitation prompt, URLs exceeding 4,096 characters no longer render completely blank. If a project path is wider than your terminal window, the permission prompt will no longer drop the "don't ask again" choice. Furthermore, line wrapping in permission diff views has been fixed so that lines with tabs or wide multi-code-point characters like emoji are never clipped.

BUGFIX

Terminal input catches bursty backspaces and restores clean cursor states after Ctrl+Z

Input responsiveness and terminal state cleanup are now reliable over laggy remote connections.

Previously over high-latency SSH or mosh connections where terminals map Backspace to Ctrl+H, holding down Backspace during keystroke bursts would cause inputs to be dropped; these bursts are now handled accurately. Additionally, killing a session suspended with Ctrl+Z will no longer leave your terminal with a hidden cursor or stuck in bracketed-paste mode.

PERF

Startup speeds up on macOS, and update checks defer to save CPU

Launching the tool is now noticeably snappier from the command line. On macOS, running bare claude opens the interface significantly faster so you can get straight to work. To keep the app responsive from the very first keystroke, the automatic update check now waits approximately 10 seconds after launch instead of competing with startup routines for CPU cycles.

FEATURE

MCP helpers require folder trust approval and isolate credential environment variables

Security boundaries around external tool configurations have tightened significantly.

If a project .mcp.json contains headersHelper, or if inline MCP (Model Context Protocol, an open standard connecting AI to external tools) servers exist in project or --add-dir agent files, that directory's trust dialog must now be accepted first, even when running non-interactively via claude -p. In addition, helpers launched from project files, plugins, or agent configurations no longer inherit credential environment variables, and user, managed, or claude.ai-scoped helpers now run strictly from the Claude config directory.

BUGFIX

MCP lazy initialization fixed and disabled servers badge as ⊘ Disabled

Inspecting external tools no longer wakes up dormant or disabled services. Previously, stdio MCP (Model Context Protocol, an open standard connecting AI to external tools) servers received a server/discover request before initialize, unnecessarily forcing lazy-loaded servers to boot up their backends every time a session opened. This handshake order is now resolved. In addition, claude mcp list and claude mcp get now display disabled servers directly as ⊘ Disabled rather than opening a connection to perform a health check.

FEATURE

Bash permission checks recognize zsh conditionals and avoid worktree false refusals

Bash tool permission checks now evaluate zsh-specific conditional syntax correctly. In isolated git worktrees, commands without a redirect stop receiving false refusals telling you to remove one.

BUGFIX

Interrupted Bash commands no longer leave work-directory temp files

When a Bash command is killed, times out, or is interrupted, it no longer leaves /tmp/claude-*-cwd files behind. These work-directory temporary files are cleaned up even when the command does not finish normally.

FEATURE

Remote Control bolsters network resilience, retrying sign-ins and naming blocking proxies

Remote Control connectivity is now far more resilient across complex network environments. When a proxy refuses a connection, it now names that proxy rather than returning a generic network error. Separately, when a network edge, VPN, or proxy briefly returns HTTP 403, it tolerates the refusal and retries for up to 3 minutes; if the block persists, it names the refusing party. When a brief network hiccup delays your sign-in credential refresh, the client retries seamlessly instead of abruptly dropping out with "login expired". Signing out also concludes the session cleanly without misreporting a reconnection failure.

BUGFIX

Remote model choices sync to the terminal and mid-turn messages stay in the transcript

A model chosen from a phone or web client now updates the terminal display. A new message sent from the web or Desktop while Claude is mid-turn also remains in the transcript after the turn ends.

BUGFIX

Remote task Stop now works for CLI sessions

When you want to stop one named task in the Remote Control panel, its individual Stop button now works for a CLI (command-line interface, a way to operate programs with typed commands) hosted session too. Previously, pressing it left that type of session running; the panel's task control now reaches it.

BUGFIX

Invalid-role messages no longer end remote sessions

A remote session no longer exits when it receives a user message from a client without a valid role. A role is the field that identifies a message's identity and purpose; before, an invalid value could end the whole session, while it now remains usable. Later messages can still go to the same remote session instead of requiring a new one because of a single bad field.

BUGFIX

Remote sessions no longer inherit environment variables from the launching shell

New remote sessions started by claude remote-control no longer inherit session-scoped environment variables from the launching shell. They are now isolated instead of being carried into the remote environment.

BUGFIX

Crashed Remote Control sessions can be reused on the next message

After a Remote Control session process crashes, it used to stay unavailable until claude remote-control was restarted. Now, the next message can reinitialize and reuse it.

BUGFIX

Cross-session messaging notifies senders on refused deliveries and dropped inboxes

Cross-session messaging now provides direct feedback when messages cannot be delivered.

When sending messages to a local session that rejects incoming chats via {"crossSessionInbound": "refuse"}, the sender now receives a clear "refused" status instead of a deceptive success report. Likewise, if a target inbox drops messages due to rate limits or a full queue, your active session is notified immediately instead of messages vanishing silently.

BUGFIX

Multi-agent tools reach Remote Control peers and hide unassigned standby workers

Multi-agent collaboration tools can now discover and communicate with peers across environments. Running ListAgents or SendMessage inside sessions hosted by claude remote-control server mode, Desktop, or IDE hosts previously failed with "Remote Control is not connected"; they can now locate and message remote peers reliably. Additionally, idle workers pre-warmed in the background to speed up your next session are no longer prematurely listed, appearing only after a task officially claims them.

BUGFIX

Prompt suggestions stay active near usage limits and expired cache warnings are suppressed

Prompt suggestions and cache status warnings now reflect exact account and cache states. If you set CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=true, suggestions previously shut off prematurely when your account approached its usage limit; they now remain active until the quota is genuinely reached. Meanwhile, switching models with /model or tweaking reasoning depth with /effort will no longer display false cache-miss warnings when prompt caches had simply expired on their own schedule.

FEATURE

Bundled claude-api skill updates for sandboxed domain controls and memory stores

The bundled claude-api skill has been updated to align with the Managed Agents release from August 19. On self-hosted sandboxes, agents can now configure allowed domains for web searching and web fetching, giving you granular control over external site access. Sandboxes also introduce memory stores, allowing managed agents to persist and retrieve long-term state securely within their private sandboxed environments.

Original changelog

Original changelogTerminal gains a Readline keybinding flavor for Ctrl+W word deletion
Added a `keybindingFlavor` setting: 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
Original changelogFullscreen shortcuts focus purely on repainting, and the double-press clear shortcut is removed
Changed Ctrl+L and Cmd+K in fullscreen to always just repaint — the double-press `/clear` shortcut was removed, and 1-row nvim terminals no longer trigger automatic `/clear` loops
Original changelogPlugin marketplaces gain dynamic auth headers with explicit installation confirmation
Plugin marketplaces: `headersHelper` on 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 `headersHelper` runs only when you install or update that plugin, after its command is shown; `claude plugin install/update` ask `[y/N]` (or pass `-y`)
Original changelogSelf-hosted runners defer shutdown and withstand a missed poll
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
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
Original changelogSelf-hosted runners refresh proxy authorization for every connection
Added `claude self-hosted-runner --proxy-authorization-command` / `--proxy-authorization-file` for egress proxies that require a freshly issued `Proxy-Authorization` header on every connection
Original changelogLong sessions release off-screen subagent tool results
Fixed unbounded memory growth in long interactive sessions: subagent tool results are now released once they leave the recent display window
Original changelogCustom, project, and plugin output styles stay in effect
Fixed custom, project, and plugin output styles drifting back to the default voice mid-session
Original changelogPermission prompts handle wide characters, text wrapping, and long URLs correctly
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 text-wrapping in permission prompt diffs: lines containing wide multi-code-point characters (such as emoji) or tabs are no longer clipped
Original changelogTerminal input catches bursty backspaces and restores clean cursor states after Ctrl+Z
Fixed held Backspace being ignored on terminals that send Ctrl+H for Backspace when keystrokes arrive in large bursts (slow SSH/mosh links)
Fixed killing a suspended (Ctrl+Z) session sometimes leaving the terminal in bracketed-paste mode with the cursor hidden
Original changelogStartup speeds up on macOS, and update checks defer to save CPU
Improved startup: bare `claude` starts sooner on macOS
Improved startup responsiveness: the automatic update check now runs about 10 seconds after launch instead of competing with startup for CPU
Original changelogMCP helpers require folder trust approval and isolate credential environment variables
MCP `headersHelper` in a project `.mcp.json`, and inline MCP servers in project or `--add-dir` agent files, now require that folder's trust dialog to have been accepted (also under `claude -p`)
MCP `headersHelper` from 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
Original changelogMCP lazy initialization fixed and disabled servers badge as ⊘ Disabled
Fixed stdio MCP servers receiving a `server/discover` request before `initialize`, forcing lazy servers to start their backend on every session open
Changed `claude mcp list` and `claude mcp get` to show disabled servers as `⊘ Disabled` instead of connecting to them for a health check
Original changelogBash permission checks recognize zsh conditionals and avoid worktree false refusals
Fixed worktree-isolation Bash refusals telling you to remove a redirect when the command had none
Improved Bash tool permission checking for zsh-specific syntax in shell conditionals
Original changelogInterrupted Bash commands no longer leave work-directory temp files
Fixed leftover `/tmp/claude-*-cwd` files when a Bash command is killed, times out, or is interrupted
Original changelogRemote Control bolsters network resilience, retrying sign-ins and naming blocking proxies
Fixed a proxy's refusal of a connection being reported as a generic network error instead of naming the proxy
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
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
Original changelogRemote model choices sync to the terminal and mid-turn messages stay in the transcript
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
Original changelogRemote task Stop now works for CLI sessions
Fixed per-task Stop from the Remote Control tasks panel doing nothing on CLI-hosted sessions
Original changelogInvalid-role messages no longer end remote sessions
Fixed remote sessions exiting when a client delivered a user message without a valid role
Original changelogRemote sessions no longer inherit environment variables from the launching shell
Fixed Remote Control sessions started by `claude remote-control` inheriting session-scoped environment variables from the launching shell
Original changelogCrashed Remote Control sessions can be reused on the next message
Fixed a Remote Control session whose process crashed staying unavailable until `claude remote-control` was restarted; it can now be reused when you next message it
Original changelogCross-session messaging notifies senders on refused deliveries and dropped inboxes
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
Original changelogMulti-agent tools reach Remote Control peers and hide unassigned standby workers
Fixed `ListAgents`/`SendMessage` reporting "Remote Control is not connected" in sessions run by `claude remote-control` (server mode) or Desktop/IDE hosts; they now list and reach Remote Control peers
Fixed `ListAgents` and `SendMessage` exposing the idle worker that the agent view pre-warms for your next background session; it now appears only once a task claims it
Original changelogPrompt suggestions stay active near usage limits and expired cache warnings are suppressed
Fixed `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=true` not keeping prompt suggestions on when your account is near, but not over, its usage limit
Fixed the `/model` and `/effort` cache-miss warning appearing when the prompt cache had already expired
Original changelogBundled claude-api skill updates for sandboxed domain controls and memory stores
Updated the bundled `claude-api` skill for the Managed Agents Aug 19 release: web search/fetch domain settings and memory stores on self-hosted sandboxes