What's changed
- Added
onFailure: "block"for command and HTTP hooks: a hook that can't start, times out, or exits with an unexpected code blocks the action instead of letting it through - Added Program Status Protocol (OSC 7501) support: terminals that implement it can show whether Claude Code is working, waiting on you, or done
- Added quoted text to the
/copypicker, so a drafted message copies without its>markers - Added a warning to
claude plugin install,enable,disableandmarketplace addwhen the settings file they write to does not load - Added a line on stderr, when it is a terminal, that says what a
claude -prun is waiting for when it stays open after its last turn - Added support for
timeouts.upstream_ttfb_mson the Claude apps gateway's Bedrock, Vertex, Foundry and other cloud upstreams: a value you set now limits how long a stream may take to start there, after which it fails over or gets a 502 - Added a "Backgrounding cancelled" message when you stop the turn while
←is waiting for the current tool to finish - Added an optional
modelslist to every Claude apps gateway upstream: only the listed models are sent there, on failover too, and one*in an entry is a wildcard - Added support for
forceLoginMethod: "gateway"andforceLoginGatewayUrlin your own user settings on machines with no managed settings, so/loginopens on that Claude apps gateway - Added advice to
claude plugin validatewhen a plugin's README has no install line: it prints the line to paste and never changes the exit code, even with--strict - Added
upstream_request_idto the Claude apps gateway'sinferenceaudit event: the request ID from Amazon Bedrock, the Anthropic API or another upstream, for support cases - Added
$.ui.notifyfor mods: raises a native notification through your own notification setting and says which channel sent it - Added children to a mod's
Button: strings andText, so a row of a list is one pressable with a chip or a dim detail inside - Added
CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MSto limit how long unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) waits out 429 and 529 errors - Added a
request-idheader to the Claude apps gateway's successful inference responses, sorequest_idin Claude Code telemetry matches the gateway's audit log - Fixed every request failing on a
[1m]model when a gateway, Bedrock, Vertex or Foundry refuses the context-1m beta; Claude Code now resends without it - Fixed
claude -ptext output dropping earlier responses when background work started another turn; each turn's response now prints when the turn ends - Fixed remote MCP servers in headless and SDK sessions staying disconnected after an outage longer than 15 seconds, or reconnecting in a tight loop to a server that drops each connection right after it connects; repeated drops now back off, up to 30s
- Fixed remote MCP connections being dropped when a server's error reply happened to contain a network error name
- Fixed MCP servers that repeat a pagination cursor being asked for the same page up to 20 times at every connect
- Fixed CSS, JavaScript and XML files returned by MCP tools being saved as .bin, which the Read tool refuses; font and icon files now get their own extension too
- Fixed Bash tool calls failing when the model passes
command_descriptioninstead ofdescription - Fixed Claude in Chrome not applying a site deny rule written with port 80 (
host:80) to plainhttp://pages on that host - Fixed
/plugin's Errors tab removing a marketplace that failed to load, and uninstalling its plugins, on Enter without asking first - Fixed
claude plugin marketplace addreporting success for a marketplace whose name no plugin can be installed under; such an add is now refused - Fixed
CLAUDE_AUTO_BACKGROUND_TASKSmoving a subagent to the background while an edit or shell command waited behind it, which started that call before the subagent finished - Fixed PushNotification saying a push was not sent in
claude remote-controlsessions right after a phone message, without the/configtoggle, or when started from inside Claude Code - Fixed files sent from remote sessions being refused as "could not be vouched for" when more than 256 were sent at once
- Fixed a rare failure to load managed settings at startup right after a login refresh
- Fixed
/tuiexiting without a message, or with a raw system error, when Claude Code could not be started again - Fixed a link address shown as text being hidden by a colour or conceal style a reply left on, including where it wraps in a table or a question preview
- Fixed Fable models listed in
availableModelsnot appearing in the/modelpicker for sessions signed in to a Claude apps gateway; such a model now shows its built-in row in place of amodelPickerrow added for the same model - Fixed the Claude apps gateway's admin spend view showing a developer's old groups and group cap after their session stopped carrying groups
- Fixed
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIChiding the Claude apps gateway spend limit in/usageand the status line. The spend limit request goes to the gateway the session is signed in to - Fixed subagents in their own linked worktree being shown the parent session's git branch, status and recent commits
- Fixed Claude stopping at the end of the current tool when text typed in the prompt cancelled backgrounding with
←; Claude now keeps working in the foreground - Fixed
--toolsand--restrictednot applying to built-in tools that register after launch, and deprecated tool names reaching tools outside the caller's tool set - Fixed an interrupt not ending the turn until a timeout while Claude waited for an MCP server's resource list
- Fixed a mod's hook being handed a deeply nested tool input cut short with no error, so a guard could pass content it never saw