Big stability pass: 89 fixes end terminal freezes on huge replies, calm MCP reconnect loops, and new onFailure: "block" hooks fail closed instead of letting actions through.
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/copy picker, so a drafted message copies without its > markersclaude plugin install, enable, disable and marketplace add when the settings file they write to does not loadclaude -p run is waiting for when it stays open after its last turntimeouts.upstream_ttfb_ms on 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← is waiting for the current tool to finishmodels list to every Claude apps gateway upstream: only the listed models are sent there, on failover too, and one * in an entry is a wildcardforceLoginMethod: "gateway" and forceLoginGatewayUrl in your own user settings on machines with no managed settings, so /login opens on that Claude apps gatewayclaude plugin validate when a plugin's README has no install line: it prints the line to paste and never changes the exit code, even with --strictupstream_request_id to the Claude apps gateway's inference audit event: the request ID from Amazon Bedrock, the Anthropic API or another upstream, for support cases$.ui.notify for mods: raises a native notification through your own notification setting and says which channel sent itButton: strings and Text, so a row of a list is one pressable with a chip or a dim detail insideCLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS to limit how long unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) waits out 429 and 529 errorsrequest-id header to the Claude apps gateway's successful inference responses, so request_id in Claude Code telemetry matches the gateway's audit log/context and large file reads use: the gateway now gets them from AWS's CountTokens API instead of a one-token model request. Grant bedrock:CountTokens to use itmcp__server__tool identifiermodels: in Amazon Bedrock regions outside AWS's US geography. AWS always refused those requests; the gateway now tries the model in your own region, and a refusal names the model to addrate_limit_event usage-limit warnings to say whether the account has extra usage turned onplugin-authoring skill: it no longer tells a session with no terminal to run terminal commands, and explains sharing a mod only when asked-l, -c or -r flag now runs instead of failing the callclaude plugin validate and plugin loading: when a hooks module is refused over a rebound top-level var, the error now names the line that rebinds it, the cause, and a fixscriptPath refusal: it now says to pass the script inline via script, the route that works in sessions without a Read tool[1m] model when a gateway, Bedrock, Vertex or Foundry refuses the context-1m beta; Claude Code now resends without itclaude -p text output dropping earlier responses when background work started another turn; each turn's response now prints when the turn endscommand_description instead of descriptionhost:80) to plain http:// pages on that host/plugin's Errors tab removing a marketplace that failed to load, and uninstalling its plugins, on Enter without asking firstclaude plugin marketplace add reporting success for a marketplace whose name no plugin can be installed under; such an add is now refusedCLAUDE_AUTO_BACKGROUND_TASKS moving a subagent to the background while an edit or shell command waited behind it, which started that call before the subagent finishedclaude remote-control sessions right after a phone message, without the /config toggle, or when started from inside Claude Code/tui exiting without a message, or with a raw system error, when Claude Code could not be started againavailableModels not appearing in the /model picker for sessions signed in to a Claude apps gateway; such a model now shows its built-in row in place of a modelPicker row added for the same modelCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC hiding the Claude apps gateway spend limit in /usage and the status line. The spend limit request goes to the gateway the session is signed in to←; Claude now keeps working in the foreground--tools and --restricted not applying to built-in tools that register after launch, and deprecated tool names reaching tools outside the caller's tool set/loop that was moved to the background with ←; cancelling a pending wakeup now shows a noticeFORCE_COLOR=3, which put color escape codes into the output Claude readsclaude agents starting 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 sessionworker being shown as "Agent" in auto-mode denial notices and in the activity lists of task detail viewsTaskStop, which can never be the cause/loop stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told/advisor dialog showing a checkmark on a saved advisor model that is no longer available; it now opens on "No advisor"~ moving the cursor past the last character of a line, so x after it did nothing, and 3~ running on into the next line.catch; such calls are now refusedclaude plugin test passing a session.append hook that removes tool call, tool result or thinking blocks that a real session keepscat ran without printing itconstructor or prototype always reading as their default and never reloading the plugin when edited/reload-plugins or session start was reading the mod's files/model, /fast and /output-style saving their setting without asking a plugin's config.set hookclaude mcp serve background Bash results not naming the output file, and its tool description promising a notification that never arrivesCLAUDE_ENV_FILE not reaching the Bash tool after an in-app /resume or /branchallowed-tools and effort being dropped when the Skill tool finished before the response stream ended, which denied the skill's Bash commands in -p runs--plugin-dir plugin's folder in -p and SDK sessions; they are now written only where a mod is being developed/model saying a Max effort pick was saved as your default for new sessions; Max applies to the current session onlypages parameter instead of treating it as omittedplugin install and uninstall at project or local scope on Windows missing the install record, or adding a second one, when only the drive letter's case differs↑ or Esc just after ←: prompt history now keeps itprompt.submit hook rewrote or dropped still being saved as typed to prompt history and to the transcript's queued-prompt recordsclaude_code.auth OpenTelemetry login event not being emitted on Claude apps gateway sign-in. The event is exported when OpenTelemetry is configured on the machine or the session is already signed in to the gateway~/.claude/seed-admin by an interrupted /ultrareview upload never being removed by the retention cleanupdisableAutoMode was removed from settings/rewind being lost, and the removed turns coming back, when the session was moved to the background or resumed after being killedsession.receive hook asked for permission before passing a message onsetMcpServers() as your own/config saving before a plugin's config.set hook was askedagent hook evaluations taking much longer at xhigh and max effortskills field, each once; a subagent with the Skill tool can still invoke the rest/loop wakeup alone, so pressing it twice detaches and the loop keeps running; press Esc to stop itclaude agents stopped with its background service (macOS, or Linux without the service installed): running sessions now stop in about a minute unless it is run again, and a notice says soMCP_PROTOCOL_NEGOTIATION=legacy opts outdesktop policy key its bundled Claude Desktop schema doesn't know, so new Desktop settings need no gateway upgradews) MCP servers: a message over 16 MiB is no longer parsed and closes the connection, the limit the other transports already haveCCR_AUTO_MODE_ALLOW, CCR_AUTO_MODE_ENVIRONMENT and CCR_AUTO_MODE_SOFT_DENY into a session's environmentCLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS tunes or turns off the wait@Claude !restart had already confirmed the restart