Plugins that decline an interface are tracked, and later stray calls to it are refused with a warning.
What's wrong with this entry?
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.
- 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_THREADis set.
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.