Follow Discord
Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.265 ·

Clearer warning for classic hooks that risk deadlocking on a turn

Claude Code now explains and prevents a deadlock when a classic hook other than SessionStart, Setup, or SessionEnd tries to wait on the turn it's holding

TierYou'll noticehow much it should matter to you
Useful2my rating, 1 to 5
Signal1worth watching, 1 to 5
AreaHookswhat it touches
KindImprovementsin v2.1.265,
Group of 2 You'll notice No documentation found

Claude Code now explains and prevents a deadlock when a classic hook other than SessionStart, Setup, or SessionEnd tries to wait on the turn it's holding

What

Hooks are scripts that run at certain points in a session (for example, when a session starts or ends). Claude Code has "classic" hooks (classic.*) for these events, plus other hook-like calls such as command.run and tool.call.

A new check now catches the case where a call from a classic.* hook — other than SessionStart, Setup, or SessionEnd — would block waiting on the very turn that hook is currently holding. Previously this could silently deadlock. Now it produces a specific, clear error explaining the problem and suggesting the call be made from turn.complete instead. This check is wired in as the fallback case alongside the same checks already used for command.run, tool.call, and similar calls.

Why

This turns a confusing hang into an understandable error message, and tells you exactly how to fix it (move the call to turn.complete), so hook authors aren't left guessing why their hook froze.

Read from
Names in the bundleturn.complete

See this entry in the whole of v2.1.265 →

Feedback