Notification hook never fires in the VSCode extension (works in CLI) — no event on idle timeout or permission prompt
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The Notification hook never fires when Claude Code runs as the VSCode native
extension — in any situation. The exact same settings.json works correctly in
the CLI.
Environment:
- Claude Code CLI: 2.1.143
- Claude Code VSCode extension: 2.1.143
- OS: Windows 11 Pro 10.0.26200
- Hook shell: Windows PowerShell 5.1 (powershell.exe)
The Stop hook fires reliably in BOTH the CLI and the extension, so the
settings file is read correctly and the hook mechanism works. OnlyNotification is dead in the extension. Both hook scripts write a log line
unconditionally as their very first line, so any invocation is guaranteed to
leave a trace — yet no Notification trace ever appears in the extension,
neither on the ~60s input-idle condition nor while a permission dialog is
pending.
Note: This is an environment-parity issue, not a known regression. We have
only confirmed CLI 2.1.143 works and VSCode extension 2.1.143 does not. There
is no evidence the Notification hook ever worked in any previous version of
the VSCode extension.
What Should Happen?
The VSCode extension should route the same "waiting for input / permission
needed" notification events to the Notification hook that the CLI does, so
the hook fires (e.g. on the ~60s input-idle condition) and behavior is at
parity with the CLI.
Additionally / alternatively:
- A dedicated hook event for permission-approval requests (e.g.
PermissionRequest) would let users be alerted specifically when a tool
call is blocked waiting for their decision, in both CLI and extension.
- If the CLI-vs-extension divergence is intentional, it should be documented.
Impact: on the VSCode extension there is currently no way to get an audible
or desktop alert when Claude is waiting for input or for a permission
approval. Users who rely on the Notification hook lose that signal entirely
when moving from CLI to the extension, and the divergence is undocumented.
Error Messages/Logs
Hook debug log (VSCode extension 2.1.143, after a 60+ second idle window).
Each hook script writes its first log line unconditionally on invocation:
2026-05-16 23:13:36 toast shown OK
2026-05-16 23:13:40 sound played OK (dur=4433ms)
2026-05-16 23:16:31 Stop hook fired (PID=19976, Session=1)
2026-05-16 23:16:31 toast shown OK
2026-05-16 23:16:35 sound played OK (dur=4433ms)
No `Notification hook fired` entry appears anywhere across the idle window —
only `Stop` hook entries. (For contrast, the CLI produces a
`Notification hook fired` line + sound at the 60s idle mark with the same
config.)
Steps to Reproduce
- Add a
Notificationhook and aStophook to settings.json, each pointing
to a script that writes a log line as its very first action (so any
invocation always leaves a trace). Example:
"hooks": {
"Notification": [ { "hooks": [ { "type": "command",
"command": "powershell.exe -ExecutionPolicy Bypass -File C:/Users/<user>/.claude/hooks/notify-waiting.ps1" } ] } ],
"Stop": [ { "hooks": [ { "type": "command",
"command": "powershell.exe -ExecutionPolicy Bypass -File C:/Users/<user>/.claude/hooks/complete.ps1" } ] } ]
}
- Run Claude Code as the VSCode native extension (version 2.1.143).
- Case A (idle): end a turn and leave the prompt idle for 60+ seconds without
typing anything.
- Case B (permission prompt): trigger a tool call that requires permission
approval, and leave the permission dialog untouched for 60+ seconds.
- Inspect the hook debug log.
Result: no Notification hook fired entry is ever written in either case —
only Stop hook entries appear.
- For contrast, repeat steps 1–5 using the Claude Code CLI (version 2.1.143)
with the identical settings.json. The Notification hook DOES fire on the
~60s idle condition (Case A), producing a Notification hook fired log
line + sound.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.143
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗