"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:

  1. Be hidden by default — async hooks are fire-and-forget by design, their completion isn't actionable information
  2. Be collapsed — e.g., a single line like 5 async hooks completed instead of one line per hook
  3. Be controllable via a setting — e.g., a hookOutputLevel option in settings.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": true hook 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

View original on GitHub ↗

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