Follow Discord
Sweep 09 Oct 2026 · 17:27Z Build v2.1.296 517 read Stable v2.1.287 Latest v2.1.296 Next v2.1.296 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.296 ·

Duplicate-name plugins: skipped hooks are recorded and explained

When two plugins share a name only the first runs hooks; the other's skipped hooks are now recorded and shown alongside plugin warnings

Group of 2 You'll notice Improvements
JSON All of v2.1.296
You'll noticeTier: how much it should matter to you
2Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
PluginsArea: what it touches
ImprovementsKind: in v2.1.296,
ImprovementsSection of the release

What

Plugins can add hooks, which are commands or code Claude Code runs automatically at set points. Only one plugin per name runs hooks. When another plugin with the same name loads first, the later copy's hooks are now tracked and explained instead of being dropped quietly:

  • hooks.json hooks: a hooks-left-out-by-name entry is recorded, with its source and the plugin that holds the name (heldBy). The plugin shows "Its hooks.json hooks do not run".
  • Hooks module: a hooks-module-left-out-by-name entry is recorded, with the holder. The plugin shows "Its hooks module does not load". Choosing which hooks modules load now returns chosen and leftOut lists.
  • Storage and display: the entries are kept in hooksLeftOutByName, and a change event (hooksLeftOutByNameChanged) is emitted when they change. They are merged with plugin warnings so they appear in the same place.

Before, a duplicate was only logged as "Skipping duplicate hook registration for plugin".

Why

If a plugin's hooks seem to do nothing, you can now see that another plugin with the same name took precedence. Renaming or removing one of the two copies resolves the clash.

See this entry in the whole of v2.1.296 →

Feedback