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

Claude Code v2.1.299 ·

Hooks modules can now be held back, with new tracking of which ones load

Hooks-module loading now takes a personsHeld input, skips modules from sources outside the allowed set, and records a builtins-only decision

Group of 2 Under the hood Internal Changes
JSON All of v2.1.299
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.299,
Internal ChangesSection of the release

What

Hooks are your own commands or scripts that Claude Code runs automatically at set moments, and plugins can bring their own. Claude Code groups them into hooks modules. The way it decides which hooks modules to load has been reworked:

  • personsHeld is a new input to the selection. A module whose source is not in the allowed set is skipped, and the existing 'hooks module ... not loaded' log message records the skip.
  • builtinsOnly, the decision about whether only built-in hooks are allowed, is now worked out during loading. Before, a simple helper supplied it.
  • A successful load resets the loading state, and the decision is recorded through a new registry call. Claude Code now tracks whether that set of modules is known and whether a decision has been made.
  • A load-fault flag replaces the earlier stamps that marked a failed load.

Why

This is a new restriction on loading plugin hooks. It changes which hooks modules load, including under managed policy, where an organisation sets the rules. If a hook you expect does not run, look for the 'not loaded' message in the logs.

See this entry in the whole of v2.1.299 →

Feedback