[BUG] PostToolUse hooks with output never show complete

Resolved 💬 2 comments Opened Jan 10, 2026 by nrpeterson Closed Jan 10, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

I have two PostToolUse hooks that fire on Write or Edit. The hooks are firing successfully, doing their work successfully, and exit 0 successfully. But "⎿  Running PostToolUse hooks… (1/2 done)" never updates to 2/2 done or clears.

If I replace the hooks with just "exit 0", the issue does not occur. But if the hook includes output (like echo "done" || exit 0), then it does.

What Should Happen?

"⎿  Running PostToolUse hooks… (1/2 done)" should either update to "(2/2 done)" or should clear when all hooks complete with successful exit codes.

Error Messages/Logs

❯ Please create a README.md that simply says "hello world"

⏺ Write(README.md)
  ⎿  Wrote 2 lines to README.md
      1 hello world
  ⎿  Running PostToolUse hooks… (1/2 done)

⏺ Created README.md with "hello world".


Note that the full transcript shows:

⏺ Write(/Users/nrp/test/README.md)
  ⎿  Wrote 2 lines to /Users/nrp/test/README.md
      1 hello world
  ⎿  Running PostToolUse hooks… (1/2 done)
       · PostToolUse:Write: echo "done1" || exit 0
       · PostToolUse:Write: echo "done2" || exit 0
  ⎿  PostToolUse:Write hook succeeded: done2
  ⎿  PostToolUse:Write hook succeeded: done1

⏺ Created README.md with the content "hello world".

Steps to Reproduce

  1. Create a new folder (say, test) outside of any existing claude code project: mkdir test
  2. Enter the directory: cd test
  3. Create the .claude directory: mkdir .claude
  4. Create .claude/settings.json with two hooks:
cat <<EOF > .claude/settings.json 
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"done1\" || exit 0"
          },
          {
            "type": "command",
            "command": "echo \"done2\" || exit 0"
          }
        ]
      }
    ]
  }
}
EOF
  1. Run claude with a prompt that touches edits at least one file:
claude "Create a README.md file that simply says 'hello world'"

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.3 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

_No response_

View original on GitHub ↗

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