A full JavaScript hook engine with register(on, options) and chained next() sits behind tengu_plugin_hooks_modules, off by default.
A plugin can now ship a JavaScript module that registers hooks in code with register(on, options), instead of only declarative matchers in hooks.json. That file gains a modules key alongside hooks, and either or both may be present. The engine loads and evaluates the module, dispatches each hook event through a chain with next(), reports failures, and reloads or prunes when a plugin is disabled. It is controlled by tengu_plugin_hooks_modules, whose built-in fallback is off, so nothing loads unless server config turns it on.
- A plugin manifest may declare a hooks module path, and hook config parsing now returns both the matchers and the modules.
- The gate also drives a new plugin-types entry in the capability and notice map.
`hooks.json must have hooks (the hook matchers) or modules (hooks modules), or both, var Lnt = "tengu_plugin_hooks_modules"`
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Your [PostToolUse hook](#posttooluse) then receives the changed files in `tool_response.bashEditDiff`. The list covers what changed under the repository while the command ran. Files that Git ignores and files in submodules aren't listed. R…hooks see the edit
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.
Anthropic's documentation has since written up modules, on Hooks reference.
New in this build: tengu_plugin_hooks_modules