mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-09-09 02:02:03 -03:00
Three stop-hook bugs that break loop termination:
- A bare assistant message equal to the promise (e.g. just "DONE") ended
the loop even without <promise> tags: the perl substitution passed the
input through unchanged when the tag was absent. Now the promise text
is only extracted when a <promise>...</promise> tag is present.
- The observed promise text was whitespace-normalized but the expected
promise was not, so a promise containing consecutive spaces
("ALL DONE") could never match and the loop never ended. Both sides
are now normalized identically (trim + collapse runs of whitespace).
- The iteration reader accepted "iteration:1" (no space after the colon)
but the writer's sed only matched "iteration: " with a space, so the
counter froze and the loop ran past max_iterations. The writer now
matches with or without spaces, like the reader.
Adds tests/stop-hook.test.sh covering all three regressions plus
controls; the three bug cases fail on the previous script and pass now.
Fixes anthropics/claude-code#81827
Fixes anthropics/claude-code#81828
Fixes anthropics/claude-code#81829
No-Verification-Needed: shell-script plugin in claude-plugins-official; no claude-cli-internal runtime surface
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>