Follow Discord
Sweep 10 Nov 2026 · 02:18Z Build v2.1.322 539 read Stable v2.1.311 Latest v2.1.322 Next v2.1.322 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.265 ·

Hook messages during session start/resume can now be deferred and released later

SessionStart hook transcript messages can now be held back and inserted into the transcript only when explicitly released

Group of 3 You'll notice Improvements
JSON All of v2.1.265
You'll noticeTier: how much it should matter to you
3Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
HooksArea: what it touches
ImprovementsKind: in v2.1.265,
ImprovementsSection of the release

What

  • The main session controller gained deferHookMessages/releasePendingHookMessages methods, wired into the REPL as deferHookMessages/releaseDeferredHookMessages props, letting a pending hook set's transcript messages be held back instead of inserted immediately, until explicitly released.
  • Before running a new turn (when starting fresh rather than resuming a concurrent query), the agent now awaits any pending/deferred hook set via awaitPendingHooks(), so the turn doesn't start until hooks have resolved (the wait is skipped only if the abort signal actually fires).
  • On session resume, the mechanism for landing SessionStart-type hook messages into the transcript was reworked: instead of a single pending-promise plus a "landed" flag, there is now a _pendingHookSet object with deferHookMessages, awaitStartupHooks, releasePendingHookMessages, and abort support, tied to session id checks so stale hook results for a since-replaced session get discarded.

Why This makes hook-driven transcript messages around session start and resume more reliable: turns wait for pending hooks instead of racing them, hook messages can be staged and released at the right moment, and results from a stale, already-replaced session no longer leak into the current one.

See this entry in the whole of v2.1.265 →

Feedback