[FEATURE] Suppress async hook completion message for Stop/SubagentStop events
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Async hooks for SessionStart, PreToolUse, and PostToolUse events suppress the "Async hook {event} completed" message by default. However, Stop and SubagentStop hooks do not have the same treatment. This causes a disruptive └ Async hook Stop completed message to appear during the user's next interaction turn, since Stop hooks fire at the end of a turn and complete asynchronously after the user has already moved on.
Proposed Solution
Add the same suppression condition for Stop and SubagentStop in the async_hook_response render logic:
// Current (cli.js)
case "async_hook_response": {
if (A.hookEvent === "SessionStart" && !K) return null;
if ((A.hookEvent === "PreToolUse" || A.hookEvent === "PostToolUse") && !Y) return null;
return createElement(MD, null, "Async hook ", ...);
}
// Proposed
case "async_hook_response": {
if (A.hookEvent === "SessionStart" && !K) return null;
if ((A.hookEvent === "PreToolUse" || A.hookEvent === "PostToolUse") && !Y) return null;
if (A.hookEvent === "Stop" || A.hookEvent === "SubagentStop") return null;
return createElement(MD, null, "Async hook ", ...);
}
Alternative Solutions
_No response_
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
An organization deploys a tracing hook as a managed Stop hook to collect observability data. The hook runs async and takes 2–3 seconds to POST traces. During that time the user starts their next prompt. When the POST completes, └ Async hook Stop completed appears mid-conversation, interrupting the user's reading flow. The user has no action to take on this information — Stop hooks are fire-and-forget by nature. The message is pure noise.
Additional Context
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗