{"version":"2.1.309","anchor":"hook-output-handling-runsthere-hook-specific-output-now-ign","canonical_anchor":"hook-output-handling-runsthere-hook-specific-output-now-ign","heading":"Hook output after a tool call is checked differently when the hook runs elsewhere","tier":"internal","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309\/e\/hook-output-handling-runsthere-hook-specific-output-now-ign","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.309","markdown":"### Hook output after a tool call is checked differently when the hook runs elsewhere\n\nClaude 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\n\n**Unclear.** Which setups count as a hook running somewhere else is not stated.\n\n**What**\n\nHooks 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:\n\n- `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.\n\n- When the hook runs somewhere else, the tool's input is passed through unchanged and a refusal from the hook is ignored.\n\nBefore, in that case, the hook's output was handed back untouched.\n\n**Why**\n\nHook output from a remote or relayed setup is now checked differently, so a refusal from such a hook no longer has an effect here.\n\n- Area: Hooks\n- Names: `hookSpecificOutput`\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}