Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.242 ·

Plugin hook code is parsed and rejected unless it follows a strict shape

Plugin hook code is parsed and rejected before running if it strays outside a narrow shape.

Nothing to try yet In Development
JSON All of v2.1.242
Nothing to try yetTier: how much it should matter to you
2Useful: my rating, 1 to 5
4Signal: worth watching, 1 to 5
PluginsArea: what it touches
In DevelopmentKind: in v2.1.242,
What probably matters to youSection of the release

Static validation of plugin hook source ships with the disabled hook-module feature.

What

Before a plugin's hook file runs, its source is parsed and walked, and anything that does not match a narrow permitted shape is refused with the file name, the line and an excerpt. This makes what a hook can do checkable before execution rather than after.

Details
  • The file must export a register function taking the event registrar and options, and event names must be plain string literals naming real events.
  • Every use of the plugin API object must be written out fully at the call site. Storing it in a variable, spreading it, shadowing it, reading arguments, or using computed property access all cause a refusal.
  • At runtime the host also checks that a plugin only calls the operations its scan found.
  • The whole hooks host is behind the tengu_plugin_hooks_modules rollout flag.
Evidence

$ is always spelled $.noun.event(...) at the call site, and on is always on("<event>", hook)

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

What has happened since
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns on for tengu_plugin_hooks_modules, read as this 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.
Flag reading moved The flag server now returns off for tengu_plugin_hooks_modules, read as this 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.

See this across every release →

How sure we are
One source agreesOne thing we can check says the same as this entry.
The name it cites is new in this buildNew in this build: tengu_plugin_hooks_modules

See this entry in the whole of v2.1.242 →

Feedback