Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.309 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.309 ·

Hook output after a tool call is checked differently when the hook runs elsewhere

Claude Code reworked how it checks a hook's tool-specific output; when the hook runs elsewhere, the tool input passes through and a refusal is ignored

Under the hood Internal Changes
JSON All of v2.1.309
Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
HooksArea: what it touches
Internal ChangesKind: in v2.1.309,
Internal ChangesSection of the release

Unclear Which setups count as a hook running somewhere else is not stated.

What

Hooks are your own scripts that Claude Code runs at set points. Claude Code reworked how it checks the hookSpecificOutput part of a hook's reply:

  • PostToolUse hooks, which run after a tool call succeeds, have their results rewritten only when results are being held and the hook is not running somewhere else.
  • When the hook runs somewhere else, the tool's input is passed through unchanged and a refusal from the hook is ignored.

Before, in that case, the hook's output was handed back untouched.

Why

Hook output from a remote or relayed setup is now checked differently, so a refusal from such a hook no longer has an effect here.

Read from
Names in the bundlehookSpecificOutput
How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtWhich setups count as a hook running somewhere else is not stated.

See this entry in the whole of v2.1.309 →

Feedback