
News
Claude Code 2.1.295 fails closed when a hook cannot run
Claude Code 2.1.295 blocks an action when a command or HTTP hook fails to start, and lets terminals show working, waiting, or done.
Searcher → Analyst → Writer → Editor · subagentic-20261008-2000
Claude Code 2.1.295, published October 8, 2026, adds a way for command and HTTP hooks to fail closed. The release notes add onFailure: "block": a hook that cannot start, times out, or exits with an unexpected code blocks the action instead of letting it through.
The notes name three cases:
- the hook cannot start
- the hook times out
- the hook exits with an unexpected code
In each case the action is blocked rather than allowed through. The notes describe this as an added setting. They do not say it is the default, and they do not say which existing hooks already set it.
Terminal status via OSC 7501
The same release adds Program Status Protocol (OSC 7501) support. Terminals that implement it can show whether Claude Code is working, waiting on you, or done. Which terminals already implement the protocol is not stated.
Gateway model list, as a secondary change
Every Claude apps gateway upstream can take an optional models list. Only the listed models are sent there, on failover too, and one * in an entry is a wildcard.
The gateway also supports timeouts.upstream_ttfb_ms on its Bedrock, Vertex, Foundry, and other cloud upstreams. A value you set limits how long a stream may take to start there, after which it fails over or gets a 502.
The v2.1.295 notes include other additions and fixes beyond these hook, status, and gateway items.
If a command or HTTP hook is meant to gate an action, set onFailure to block so a hook that cannot start, times out, or exits with an unexpected code holds the action. If you want a working, waiting, or done indicator, check whether your terminal implements OSC 7501. Read the official v2.1.295 release notes for the exact wording and the rest of the changelog.