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.246 ·

Plugins that withhold a hook interface are now tracked and their stray calls refused

Plugins that decline an interface are tracked, and later stray calls to it are refused with a warning.

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

The host that runs plugin function hooks was rebuilt around a record of what each plugin withheld. A plugin that withholds an interface when the engine is created now has that withholding tracked against it and lifted only when that plugin reloads or is disabled. Calls that reach the host past the withheld stub are refused, with one warning per plugin and interface, so a misbehaving plugin cannot quietly keep using something it declined.

Details
  • Suppressed interfaces are published to the registry marked with the plugin that suppressed them, and plugins that crashed while withholding are tracked separately.
  • Interface calls now carry a caller chain through the worker frame, so refusals name the path that made the call.
  • Hooks still run in a worker unless the environment variable CLAUDE_CODE_HOOKS_SAME_THREAD is set.
Evidence

withheld at engine.create; the call reached the host past $'s stub

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

See this entry in the whole of v2.1.246 →

Feedback