"Async hook PostToolUse completed" messages clutter output when multiple async hooks are configured
Resolved 💬 3 comments Opened Feb 10, 2026 by lucacri Closed Mar 11, 2026
Description
When multiple plugins define async PostToolUse hooks, every tool invocation produces a wall of "Async hook PostToolUse completed" messages that clutter the output and make it harder to read actual results:
Bash(git log --oneline -5)
⎿ PreToolUse:Bash hook error
⎿ f44033a9 fix(tui): improve table column alignment and separators
aedf7c70 fix(tui): selection highlight now follows project when position changes
377c4b89 chore(scripts): improve locking in mattermost mirror scripts
… +2 lines (ctrl+o to expand)
⎿ Running PostToolUse hooks…
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
This happens after every single tool use, making the output very noisy for users with several plugins installed.
Expected Behavior
Async hook lifecycle messages should either:
- Be hidden by default — async hooks are fire-and-forget by design, their completion isn't actionable information
- Be collapsed — e.g., a single line like
5 async hooks completedinstead of one line per hook - Be controllable via a setting — e.g., a
hookOutputLeveloption insettings.json("silent","minimal","verbose")
Environment
- Claude Code CLI (latest)
- Multiple plugins with async PostToolUse hooks (common setup for plugin-heavy users)
Additional Context
- The
"async": truehook property is documented as fire-and-forget, so showing individual completion messages adds no value to the user - This is purely a display/UX issue — hooks work correctly
- The "Running PostToolUse hooks…" line is fine, it's the individual completion lines that are noisy
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗