{"version":"2.1.321","anchor":"hook-modules-gate-tengu-immutable-falcon","canonical_anchor":"hook-modules-gate-tengu-immutable-falcon","heading":"Hook handling prepared for hook modules","tier":"notice","area":"Hooks","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321\/e\/hook-modules-gate-tengu-immutable-falcon","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.321","markdown":"### Hook handling prepared for hook modules\n\nClaude Code's hook handling gains groundwork for hook modules: module-based plugins can count as holding hooks, and module hooks depend on a module capability\n\n**Unclear.** It is not stated what the extra step does to your hooks.\n\n**What**\n\nHooks are commands or scripts that run automatically at set points while Claude Code works. Hook modules are a way for plugins to supply hooks as code modules. Several pieces of hook handling change to support them:\n\n- When a flag named `tengu_immutable_falcon` is true, a new step is applied to the collected hooks before they are checked for validity. No reading of that flag has been taken.\n\n- The hook summary now marks `hasModule` when the configuration has `hook_modules`.\n\n- A plugin with a `modulePath` is no longer always rejected with the reason `hooks_module`. Instead, Claude Code looks at which hook keys the plugin holds.\n\n- The hook-modules reader only skips a non-empty `hook_modules` when the capability set lacks `module`.\n\n- Element tables are now only worked out for modules that declare `hooks(\"ui.resolve\")`.\n\n**Why**\n\nPlugins built as hook modules can now be recognized as holding hooks instead of being turned away automatically. Whether their hooks take effect depends on the `module` capability and on what each module declares.\n\n- Flag `tengu_immutable_falcon`: Not enough to say (read for one account on one subscription tier against v2.1.321; this account: no value returned, anonymous baseline: no value returned, compiled default: 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.\n- Area: Hooks\n- Names: `hook_modules`\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 4\/5\n- Scope: individual\n- Heads-up: no\n- Present in the build but not switched on"}