[Feature Request] Surface hook identity in async hook completion messages
Bug Description
Title: Surface hook identity in async hook completion messages
Body:
When async hooks complete, the harness emits a generic Async hook PostToolUse completed
line — one per hook, with no indication of which specific hook fired. With multiple async
hooks on the same event (e.g., 5 PostToolUse:Bash hooks), pressing ctrl+o shows a wall
of identical lines:
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
⎿ Async hook PostToolUse completed
This makes it impossible to tell at a glance which hook ran, how long each took, or
whether a specific one failed silently. Debugging hook performance/regressions currently
requires adding sidecar logging in each hook script.
Requested:
Either (a) include the hook command (or a derived label) in the completion line:
⎿ Async hook PostToolUse completed: kanban_review_on_commit.sh (1.2s)
⎿ Async hook PostToolUse completed: pr_lesson_extract.sh (0.4s)
…or (b) add an optional name / label field on hook entries in settings.json that the
harness uses in the completion message:
{
"type": "command",
"command": "bash $HOME/.claude/hooks/kanban_review_on_commit.sh",
"async": true,
"name": "kanban-review"
}
Either path solves it. Would also help with /doctor-style hook health diagnostics down
the line.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.1.119
- Feedback ID: 23d485fe-26d7-4b46-a5e1-b37b26f51978
Errors
[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/badawi/.local/share/claude/versions/2.1.119 (expected in multi-process scenarios)\n at mH6 (/$bunfs/root/src/entrypoints/cli.js:2736:2177)\n at E$8 (/$bunfs/root/src/entrypoints/cli.js:2736:1257)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-25T10:39:16.767Z"},{"error":"AxiosError: Request failed with status code 404\n at zl (/$bunfs/root/src/entrypoints/cli.js:114:1194)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:119:12696)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:865:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/src/entrypoints/cli.js:121:2467)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-25T10:43:17.928Z"},{"error":"MaxFileReadTokenExceededError: File content (30602 tokens) exceeds maximum allowed tokens (25000). Use offset and limit parameters to read specific portions of the file, or search for specific content instead of reading the whole file.\n at qC7 (/$bunfs/root/src/entrypoints/cli.js:4789:12701)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-25T10:43:22.073Z"}]This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗