Stop hook `decision:block` reason is delivered to the model twice per block

Status Open
Reported on v2.1.266
Maintainer reply None cached
Activity 0 comments · opened Oct 3, 2026

When a Stop hook returns {"decision":"block","reason":"..."}, the model receives the same reason text twice in the continuation: once as a meta user message starting with Stop hook feedback: and once as a hook_blocking_error attachment rendered as Stop hook blocking error from command: "<hook>": ....

The hook itself runs once: the transcript's stop_hook_summary shows each hook command once and a single hookErrors entry, and the two records carry the same timestamp.

Observed on Claude Code desktop (macOS), versions 2.1.266–2.1.286, on every Stop block in local transcripts.

Expected: the reason is delivered once. The duplicate costs context tokens on every block and makes the model more likely to restate its whole previous reply.

View original on GitHub ↗