[Feature] Setting to suppress async hook completion messages

Resolved 💬 3 comments Opened Mar 11, 2026 by jcwayne Closed Mar 15, 2026

Problem

When async hooks are configured (e.g. SubagentStart, SubagentStop), Claude Code displays framework-generated status messages like:

Async hook SubagentStart completed
Async hook SubagentStop completed

These messages are not from the hook script itself — they're generated by Claude Code's internal reporting. With frequent hook events (especially SubagentStart/SubagentStop which fire on every subagent), the conversation fills with noise that provides no value once hooks are working correctly.

Prior art

This was reported in #9603 which had community support but was auto-closed due to inactivity and is now locked. That issue noted:

"This is totally breaking if you have many hooks running — the CLI will fill up with 'hooks succeeded' messages, and the scroll goes nuts so that it is impossible to actually track anything in real time."

Proposed solution

A setting to control hook message verbosity, e.g.:

{
  "preferences": {
    "hookMessages": "silent"
  }
}

Or a per-hook silent option:

{
  "hooks": {
    "SubagentStart": [{
      "command": "my-hook.sh",
      "silent": true
    }]
  }
}

Either approach would let users suppress the completion banners while keeping hooks functional.

Environment

  • Platform: linux (WSL2)
  • Version: latest
  • Hooks affected: all async hooks, especially high-frequency ones like SubagentStart/SubagentStop

View original on GitHub ↗

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