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.