{"version":"2.1.290","anchor":"hook-allow-decision-deny-rule-message-no-longer-includes-the","canonical_anchor":"hook-allow-decision-deny-rule-message-no-longer-includes-the","heading":"PreToolUse hook overrides log the deny reason type, with a second permission check","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290\/e\/hook-allow-decision-deny-rule-message-no-longer-includes-the","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290","markdown":"### PreToolUse hook overrides log the deny reason type, with a second permission check\n\nWhen a deny rule overrides a PreToolUse hook, the debug log shows the deny's reason type and a second permission check can apply\n\n**Unclear.** What the fallback permission check looks at is not clear.\n\n**What**\n\nA `PreToolUse` hook is a script you can set up to run before Claude uses a tool, and it can allow or block the action. When such a hook returns a decision but one of your deny rules overrides it, the debug log now shows the type of the deny reason instead of the deny rule's message.\n\nThe permission check in this situation also changed: if the first check returns nothing, Claude Code now falls back to a second check.\n\n**Why**\n\nThe debug log tells you less than before about why a hook was overridden. The fallback check could change which hook decisions end up allowed, so it is worth watching if you rely on hooks and deny rules together.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}