Feature: Option to suppress 'Async hook X completed' status messages

Resolved 💬 3 comments Opened Jan 29, 2026 by yonatangross Closed Feb 2, 2026

Summary

Add a configuration option to suppress or customize the "Async hook X completed" status messages that appear in the terminal after async hooks finish.

Problem

When using plugins with multiple async hooks, the terminal gets cluttered with completion messages:

Async hook PostToolUse completed
Async hook Stop completed
Async hook SubagentStop completed

This is especially noticeable when:

  • Running parallel agents (each triggers multiple hook events)
  • Using plugins with comprehensive hook coverage
  • Working in sessions with frequent tool usage

Proposed Solution

Add a setting to control async hook completion message visibility:

// ~/.claude/settings.json
{
  "hooks": {
    "showAsyncCompletionMessages": false  // default: true
  }
}

Or alternatively, a verbosity level:

{
  "hooks": {
    "verbosity": "errors"  // "all" | "errors" | "none"
  }
}

Alternatives Considered

  1. Plugin-side consolidation - Already done. Reduced async hooks from 14 to 7 using unified dispatchers. But CC still prints 1 message per async hook.
  1. Remove async flag - Makes hooks blocking, degrading performance.
  1. Daemon architecture - Hooks write to queue, daemon processes async. Adds complexity.

Use Case

OrchestKit plugin uses 7 async hooks (consolidated from 14) for:

  • Session metrics and audit logging
  • Memory persistence
  • Pattern learning
  • Notification delivery

Each prints a completion message, cluttering the terminal during normal use.

Environment

  • Claude Code: 2.1.23
  • Plugins: OrchestKit with 149 hooks

View original on GitHub ↗

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