You'll noticeTier: how much it should matter to you
2Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
HooksArea: what it touches
Bug FixesKind: in v2.1.304,
Bug FixesSection of the release
What
A hook is a command or function that Claude Code runs automatically at a set point, for example before or after a tool runs. Each hook sits under a matcher, the pattern that decides which actions it applies to.
When a hook is added under a matcher, Claude Code now looks for the same hook already registered there. If it finds one, it replaces that hook's settings and keeps its onHookSuccess handler, instead of adding a second copy. Before, only function hooks that carried an id were replaced this way. Every other kind of hook was added again as a new entry.
Why
Registering the same hook more than once no longer makes it run several times for one event.