VS Code extension: Notification hooks don't fire on permission-approval or elicitation dialogs
Environment
Claude Code VS Code native extension, Linux dev container (observed 2026-05-20).
Summary
Notification hooks do not fire when the extension shows a graphical permission-approval dialog, nor for AskUserQuestion / elicitation dialogs. The Stop hook fires reliably in the same setup — so hooks can run in the extension — but the dialogs that actually need the user's attention don't trigger any hook.
Repro
A Notification hook (matcherless) and a Stop hook, both running a script that writes the BEL byte (\a) to the integrated-terminal pty (audible via VS Code's terminal bell):
"hooks": {
"Stop": [{ "hooks": [{ "type": "command", "command": "sh ~/.claude/bell.sh" }] }],
"Notification": [{ "hooks": [{ "type": "command", "command": "sh ~/.claude/bell.sh" }] }]
}
- End a turn →
Stophook fires (audible). ✅ - Trigger an approval-gated action (write / commit / push) → permission dialog appears →
Notificationhook does not fire. ❌ - Trigger an
AskUserQuestion→Notificationhook does not fire. ❌
Also
preferredNotifChannel: terminal_bell produces no audible terminal bell on permission prompts in the extension's integrated terminal.
Impact
There's no scriptable/audible way to be alerted exactly when the extension is blocked waiting on the user (permission or question) — which is precisely when you'd want to be called back to the editor. Current workaround: end the turn and ask in plain text, so the working Stop hook carries the alert.
Expected
Notification hooks fire on permission-approval and elicitation dialogs in the VS Code extension (matching CLI behavior), and/or preferredNotifChannel: terminal_bell rings the integrated terminal on permission prompts.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗