Unclear The tengu_plugin_hooks_modules gate controls this, but nothing has been read about it, so it's unclear how widely or when built-ins-only mode actually applies.
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 Off by default, switched on for this accountThe shipped code defaults this off, and the flag server returned on for the one account this site reads on this version. That is the reading that makes the entry above worth a second look, and it still says nothing about your account.
This account: on · anonymous baseline: on · 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
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
The `tengu_plugin_hooks_modules` gate controls this, but nothing has been read about it, so it's unclear how widely or when built-ins-only…