Hook code from installed (non-built-in) plugins now loads only when a rollout flag or override env var is on
What
A plugin's hooks module (the code that lets a plugin react to events like tool calls) is now skipped for all plugins except Claude Code's own built-in ones, unless a rollout flag called tengu_plugin_hooks_modules is turned on. Built-in plugins always load their hooks regardless of the flag. When the flag is off, Claude Code logs a message explaining that the installed plugin's hook module was not loaded because the rollout flag is off. Internally, the loading path computes a builtinsOnly flag and passes it into hook registration.
The gate can be overridden by setting the environment variable CLAUDE_CODE_ENABLE_FUNCTION_HOOKS, which forces hook modules to load even when the rollout flag is off.
Why
This limits which plugins can run custom hook code by default, likely as a staged rollout for hook support in third-party (installed) plugins. If a plugin's hooks stop firing, check whether this rollout flag is on, or set CLAUDE_CODE_ENABLE_FUNCTION_HOOKS to force them on.
tengu_plugin_hooks_modules Not enough to sayNothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.
This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.275: off
These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.
Read once, for one account on one subscription tier, against v2.1.275. It isn't a statement about your account. What a flag value here can and cannot tell you