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.246 ·

Hooks are looked up through a per-session registry, not app state

Hooks are looked up per session rather than from global state; your hooks fire the same.

Under the hood Internal Changes
JSON All of v2.1.246
Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
HooksArea: what it touches
Internal ChangesKind: in v2.1.246,
Internal ChangesSection of the release
What

Hook presence checks, SessionEnd dispatch, stop-prompt registration, the permission-request check and the StopFailure dispatcher all now query a per-session hook registry rather than reading hooks out of global app state. No change to how your configured hooks fire.

Details
  • The hook runner takes a sessionHooks argument with a has(id, event) lookup.
  • Tool aliases used for matcher filtering come from an optional getToolAliases() callback instead of the tool permission context.
  • Teammate setup registers its Stop hook via addFunctionHook rather than a global registration helper.
  • A React error was added for using the registry hook outside its provider.
Evidence

useSessionHooksRegistry cannot be called outside of an <AppStateProvider />, hook_event_name: "StopFailure", addFunctionHook

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

See this entry in the whole of v2.1.246 →

Feedback