claude-code - 💡(How to fix) Fix Notification hook does not fire on permission prompts (Windows 11)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

The Notification hook does not fire when a tool-use permission prompt is shown to the user. Per documented behavior, permission prompts should fire the Notification hook immediately. They don't — verified across 105 seconds (well past the 60s idle threshold). Stop hooks fire correctly on the same wiring; only Notification on permission prompts is broken.

Root Cause

The Notification hook does not fire when a tool-use permission prompt is shown to the user. Per documented behavior, permission prompts should fire the Notification hook immediately. They don't — verified across 105 seconds (well past the 60s idle threshold). Stop hooks fire correctly on the same wiring; only Notification on permission prompts is broken.

Code Example

"Notification": [
  {
    "matcher": "",
    "hooks": [
      { "type": "command", "command": "python ..." }
    ]
  }
]
RAW_BUFFERClick to expand / collapse

Summary

The Notification hook does not fire when a tool-use permission prompt is shown to the user. Per documented behavior, permission prompts should fire the Notification hook immediately. They don't — verified across 105 seconds (well past the 60s idle threshold). Stop hooks fire correctly on the same wiring; only Notification on permission prompts is broken.

Environment

  • OS: Windows 11 Pro 10.0.26200
  • Shell: PowerShell
  • Claude Code: current (VS Code extension and CLI both reproduce)

Reproduction

  1. In ~/.claude/settings.json, configure a Notification hook with "matcher": "" pointing to a script that produces an observable side effect (e.g., audio playback, HTTP POST, log write).
  2. In a Claude Code session, set the in-chat permission mode to ask before edits.
  3. Have Claude attempt a Write to a path outside the allowlist / additionalDirectories (e.g., D:\some_file.txt when D:\ is not in additionalDirectories).
  4. The permission prompt appears as expected.
  5. Observe: the Notification hook script does not execute. Wait 90+ seconds — still does not execute.
  6. After approving or rejecting the prompt, the Stop hook does fire correctly on Claude's next turn — confirming the hook wiring works for Stop but not for Notification.

Expected behavior

Per hooks documentation, the Notification hook should fire immediately when a permission prompt is displayed, AND should fire after the documented 60-second idle threshold for unanswered prompt input.

Actual behavior

Notification hook does not fire on permission prompts at all. Verified across 105+ seconds of waiting on a single permission prompt — neither the immediate-fire nor the 60s-idle-fire path triggered. No script invocation, no audible ding from an installed audio hook, no ntfy.sh push from an installed push hook (both wired into Notification with "matcher": "").

Impact

This breaks any user-installed Notification hook intended to alert the user on permission prompts — sound playback, push notifications, IDE focus changes, etc. Without it, users must keep visual focus on the Claude Code UI to notice that a tool is waiting for approval, defeating the purpose of the Notification hook for this very common scenario.

Reproducibility

Consistent — every permission prompt during a multi-hour session failed to fire Notification. Stop fired correctly throughout the same session with the same hook configuration.

Hook config snippet

"Notification": [
  {
    "matcher": "",
    "hooks": [
      { "type": "command", "command": "python ..." }
    ]
  }
]

Same shape works perfectly for Stop and SessionStart.

Notes

/feedback slash command is not available in the VS Code extension or local builds, hence filing here.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Per hooks documentation, the Notification hook should fire immediately when a permission prompt is displayed, AND should fire after the documented 60-second idle threshold for unanswered prompt input.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING