Misleading 'Stop hook blocking error' message should say 'Stop blocked' instead

Resolved 💬 3 comments Opened Apr 24, 2026 by zhangSparkAgent Closed Apr 28, 2026

Description

When a stop hook returns {"decision": "block", ...} to intentionally prevent Claude from stopping (e.g., for iterative loops like the ralph-loop plugin), Claude Code displays:

Stop hook blocking error from command: "bash ..."

The word "error" is misleading because this is expected behavior - the hook is working correctly. Users may think something is broken when the hook is functioning as designed.

Suggested fix

Change the message to something clearer like:

  • "Stop blocked by hook"
  • "Stop hook: blocked"
  • "Stop hook feedback"

Context

This occurs when using the ralph-loop plugin which uses stop hooks to implement iterative development loops (the Ralph Wiggum technique). Each iteration shows "blocking error" which is confusing since it's the intended behavior.

Steps to reproduce

  1. Install the ralph-loop plugin: /plugin install ralph-loop
  2. Start a loop: /ralph-loop:ralph-loop "Do something" --max-iterations 3
  3. Complete the iteration and observe the message when the stop hook fires

The message says "Stop hook blocking error" when it should indicate the stop was intentionally blocked.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗