-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Feature: Option to suppress 'Async hook X completed' status messages #21761
Description
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
-
Plugin-side consolidation - Already done. Reduced async hooks from 14 to 7 using unified dispatchers. But CC still prints 1 message per async hook.
-
Remove async flag - Makes hooks blocking, degrading performance.
-
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