{"name":"tengu_plugin_hooks_modules","slug":"tengu-plugin-hooks-modules","family":"flag","title":"Feature flags","noun":"feature flag","description":"Tools a plugin registers reach the model through a local loopback MCP server.","description_source":"entry","described_by":{"version":"2.1.242","anchor":"plugin-registered-tools-are-served-over-a-local-mcp-server"},"presence":{"first_seen":"2.1.242","removed_in":null,"in_current_build":true,"newest_mined":"2.1.308","builds":55,"mined_builds":149,"first_cited":{"version":"2.1.242","released_at":"2026-08-24 19:16:14","spans":2}},"aliases":[],"entries":[{"version":"2.1.283","anchor":"new-mods-hot-reloading-session-mods-folder-consent-promp","heading":"Write live mods for Claude Code that reload inside your session","line":"A new bundled skill writes mods (plugins adding panes, status lines, toasts or hooks) that reload live once you agree for the session","released_at":"2026-09-25 18:46:11","reason":"gate cited by this entry"},{"version":"2.1.283","anchor":"hooks-modules-toolcall-pinned-key-matchers-and-runcommands","heading":"Hook modules that don't match a tool call are skipped earlier","line":"Claude Code now checks hook modules against key fields of a tool call itself and skips those that don't match, instead of sending every call to every module","released_at":"2026-09-25 18:46:11","reason":"gate cited by this entry"},{"version":"2.1.280","anchor":"hooks-modules-plugin-tests-early-access-gate-and-messages","heading":"Hooks modules (plugin tests) early-access gate and messages","line":"Plugin hook tests now give a specific reason when they can't run: rollout off, or disabled locally","released_at":"2026-09-22 15:44:39","reason":"gate cited by this entry"},{"version":"2.1.275","anchor":"plugin-hook-modules-loading-gains-a-built-ins-only-mode","heading":"Plugin hook modules loading gains a 'built-ins only' mode","line":"Plugin hook loading gains a 'built-ins only' mode that can skip loading installed plugins' hooks","released_at":"2026-09-17 20:20:31","reason":"gate cited by this entry"},{"version":"2.1.275","anchor":"installed-non-built-in-plugins-hooks-modules-gated-behind","heading":"Installed (non-built-in) plugins' hooks modules gated behind a new rollout flag, off by default","line":"Hooks modules for installed (non-built-in) plugins now require a rollout flag, off by default","released_at":"2026-09-17 20:20:31","reason":"gate cited by this entry, found in this entry's text, named in this entry"},{"version":"2.1.259","anchor":"plugin-hooks-as-js-modules-gated-off-by-default","heading":"Plugin hooks as JS modules \u2014 gated off by default","line":"Plugins can load hooks from real JS modules with per-action permission checks, but the rollout gate defaults off.","released_at":"2026-09-02 21:21:42","reason":"found in this entry's text, named in this entry, gate cited by this entry"},{"version":"2.1.247","anchor":"clickable-buttons-in-plugin-ui-built-end-to-end-but-dark-in-","heading":"Clickable buttons in plugin UI, built end to end but dark in this build","line":"Plugin buttons work end to end in terminal and desktop, but plugin hook modules are switched off.","released_at":"2026-08-26 18:02:01","reason":"named in this entry, gate cited by this entry, found in this entry's text"},{"version":"2.1.247","anchor":"programmatic-prompt-submission-gains-origin-and-wait-which-h","heading":"Programmatic prompt submission gains origin and wait, which hooks cannot forge","line":"Hooks can see where a prompt came from and whether it queues, and cannot fake either.","released_at":"2026-08-26 18:02:01","reason":"gate cited by this entry, found in this entry's text"},{"version":"2.1.246","anchor":"plugin-javascript-modules-stay-off-and-the-flag-reader-is-of","heading":"Plugin JavaScript modules stay off, and the flag reader is off even for them","line":"Plugin JavaScript modules can read flags, abort turns and detect the app, but they do not load at all.","released_at":"2026-08-25 19:17:34","reason":"gate cited by this entry, found in this entry's text"},{"version":"2.1.242","anchor":"plugin-registered-tools-are-served-over-a-local-mcp-server","heading":"Plugin-registered tools are served over a local MCP server","line":"Tools a plugin registers reach the model through a local loopback MCP server.","released_at":"2026-08-24 19:16:14","reason":"gate cited by this entry, found in this entry's text"}],"entries_total":16,"docs":[],"docs_total":0,"gates":[{"version":"2.1.283","state":"unknown","account":null,"baseline":null,"code_default":false},{"version":"2.1.280","state":"unknown","account":null,"baseline":null,"code_default":false},{"version":"2.1.275","state":"on-in-practice","account":true,"baseline":true,"code_default":false}],"related":[{"name":"tengu_plugin_","slug":"tengu-plugin","description":null},{"name":"tengu_plugin_autoupdate_allow_credential_helper","slug":"tengu-plugin-autoupdate-allow-credential-helper","description":"Plugin autoupdate now always disables the git credential helper during background refresh"},{"name":"tengu_plugin_binary_assets","slug":"tengu-plugin-binary-assets","description":"Default `false`. When `true`, or when the `CLAUDE_CODE_PLUGIN_BINARY_ASSETS` env var is `1`, `true`, `yes` or `on`, Claude Code provisions the native binaries a plugin declares under `binaries` in its `.claude-plugin\/plugin.json` into the plugin's `bin` directory, keyed to their declared `sha256` values. Provisioning also requires the plugin's marketplace to pass a separate check, and a plugin root that is not a real directory is refused."},{"name":"tengu_plugin_command_failed","slug":"tengu-plugin-command-failed","description":"Failed plugin commands now flush their analytics before exiting instead of dropping the event."},{"name":"tengu_plugin_command_source_refresh","slug":"tengu-plugin-command-source-refresh","description":"Command-built plugins refresh on their own background schedule, and block if the command changed."},{"name":"tengu_plugin_disabled_cli","slug":"tengu-plugin-disabled-cli","description":"Plugin install\/uninstall telemetry now confirms the plugin against the marketplace catalog before logging"},{"name":"tengu_plugin_enabled_cli","slug":"tengu-plugin-enabled-cli","description":"Plugin-enable telemetry now looks up plugin metadata asynchronously with added directory context"},{"name":"tengu_plugin_enabled_for_session","slug":"tengu-plugin-enabled-for-session","description":"Skill usage stats include hashed skill names only for plugins from outside marketplaces."},{"name":"tengu_plugin_hint_seen","slug":"tengu-plugin-hint-seen","description":"Tool and command output can now embed a hidden tag that suggests installing a specific plugin."},{"name":"tengu_plugin_input_refusal","slug":"tengu-plugin-input-refusal","description":"Plugin calls that submit a prompt or run a command are refused if you stopped the session and haven't typed anything since"}],"url":"https:\/\/changelogs.core-directive.com\/reference\/flag\/tengu-plugin-hooks-modules","family_url":"https:\/\/changelogs.core-directive.com\/reference\/flag.json"}