Skip to content

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

@yonatangross

Description

@yonatangross

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.

  2. Remove async flag - Makes hooks blocking, degrading performance.

  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions