Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.304 ·

Adding a hook that already exists replaces it instead of running it twice

Registering a hook that is already set up for a matcher now updates the existing hook instead of adding a second copy

You'll notice Bug Fixes
JSON All of v2.1.304
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.

See this entry in the whole of v2.1.304 →

Feedback