Release notes
Claude Code v2.1.295
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
- Fixed Esc not stopping a self-paced
/loopthat was moved to the background with←; cancelling a pending wakeup now shows a notice - Fixed commands and hooks in background sessions inheriting
FORCE_COLOR=3, which put color escape codes into the output Claude reads - Fixed
claude agentsstarting a new background service as it exited when both were stopped with a session open (for example at a reboot), which could delay shutdown and restart an interrupted session - Fixed a custom agent named
workerbeing shown as "Agent" in auto-mode denial notices and in the activity lists of task detail views - Fixed Bash permission checks for for-loops over glob patterns, improving permission-check accuracy
- Fixed forked skills invoked from Workflow subagents delivering their results to the main conversation instead of the invoking agent
- Fixed in-process agent teammates failing their first SendMessage call until they loaded the tool through tool search
- Fixed Claude being told on resume that an unfinished background workflow may have been stopped by
TaskStop, which can never be the cause - Fixed Claude not being told when you stop a long-running MCP tool call from the tasks panel or a connected client
- Fixed a background session's
/loopstopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told - Fixed raw terminal hyperlink bytes in a reply or a teammate's message being drawn as a clickable link with a hidden address
- Fixed plugin marketplaces whose repository has large git submodules failing to add or refresh: only the submodules that hold plugin files are now fetched
- Fixed the
/advisordialog showing a checkmark on a saved advisor model that is no longer available; it now opens on "No advisor" - Fixed the notification for an MCP tool call that moved to the background showing a shortened task id
- Fixed vim mode's
~moving the cursor past the last character of a line, soxafter it did nothing, and3~running on into the next line
…