{"version":"2.1.293","anchor":"hook-output-validation-errors-now-carry-a-reason-string","canonical_anchor":"hook-output-validation-errors-now-carry-a-reason-string","heading":"Malformed hook replies now produce errors with a named reason","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293\/e\/hook-output-validation-errors-now-carry-a-reason-string","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.293","markdown":"### Malformed hook replies now produce errors with a named reason\n\nHook output with an unknown permission decision or the wrong event name now raises an error that states which of the two went wrong\n\n**Unclear.** It is not clear whether this reason is shown to you or only recorded in Claude Code's usage reporting.\n\n**What**\n\nA hook is your own command that Claude Code runs at set moments, and it replies with output Claude Code checks. Two kinds of bad reply now raise their own type of error, carrying a reason:\n\n- An unknown `permissionDecision`: \"hook output has an unknown permissionDecision type\".\n\n- The wrong event: \"hook output names a different hook event than the one it ran for\".\n\n**Why**\n\nHook authors get a categorised reason for a malformed reply, which makes it easier to tell the two mistakes apart.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}