{"version":"2.1.290","anchor":"plugin-hook-validator-gating-hooks-and-catch","canonical_anchor":"plugin-hook-validator-gating-hooks-and-catch","heading":"Plugin validation now checks hooks that can refuse an action","tier":"notice","area":"Plugins","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290\/e\/plugin-hook-validator-gating-hooks-and-catch","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.290","markdown":"### Plugin validation now checks hooks that can refuse an action\n\nPlugin validation now reports hooks that can block an event, whether they handle errors with `.catch`, and warns about late refusals\n\n**Unclear.** It is not clear whether this validation output is shown to ordinary users or only to plugin authors.\n\n**What**\n\nA plugin is an add-on that extends Claude Code, and a hook is a piece of plugin code that runs when something happens, such as a tool being used or a conversation being compacted. When Claude Code validates a plugin, it now:\n\n- Sorts each hook by whether its event can be refused, for example a tool call that can be denied or a compaction that can be skipped.\n\n- Reports, for each module, whether such a gating hook has error handling with `.catch` or lacks it.\n\n- Logs a warning when a hook refuses after its `next()` call was already answered, noting that what ran beneath it is not undone.\n\nBefore, validation only listed the hooks and calls it found.\n\n**Why**\n\nPlugin authors get clearer warnings about hooks that block actions, including the case where a refusal comes too late to stop what already happened.\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}