[BUG] PermissionRequest hook does not trigger in VSCode extension

Status Fixed / completed
Maintainer reply ✓ Yes — blois
Activity 10 comments · opened Dec 6, 2025 · closed Feb 6, 2026
💡 Likely answer: A maintainer (blois, collaborator) responded on this thread — see the highlighted reply below.

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?

Description

The PermissionRequest hook does not fire when the permission dialog (Yes/No/Yes and don't ask again) is displayed in the VSCode extension. The hook is documented as a valid hook type but appears to not be implemented or broken in VSCode.

Steps to reproduce

  1. Add PermissionRequest hook to ~/.claude/settings.json:
{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -Command \"(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\Windows Proximity Notification.wav').PlaySync()\"",
            "timeout": 5000
          }
        ]
      }
    ]
  }
}
  1. Reload VSCode window
  2. Ask Claude to run a command that requires permission approval
  3. Permission dialog appears but hook does NOT trigger

Expected behavior

Hook should trigger when permission dialog is displayed

Actual behavior

Hook never triggers. Tested with and without matcher: "*".

Note: PreToolUse hook DOES work with the same configuration, but triggers on ALL tool calls (including auto-approved ones), making it unsuitable for notification purposes.

Use case

Running Claude Code in multiple VSCode windows and needing audio notification when human intervention is required, so agents can continue working after approval. Now multiple agents are waiting for approval, unnecessarily pausing the work.

Environment

  • Claude Code VSCode extension
  • Windows 11
  • hooks configured in ~/.claude/settings.json

What Should Happen?

Hook should trigger when permission dialog is displayed

Error Messages/Logs

Steps to Reproduce

  1. Add PermissionRequest hook to ~/.claude/settings.json:
{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "powershell -Command \"(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\Windows Proximity Notification.wav').PlaySync()\"",
            "timeout": 5000
          }
        ]
      }
    ]
  }
}
  1. Reload VSCode window
  2. Ask Claude to run a command that requires permission approval
  3. Permission dialog appears but hook does NOT trigger

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Claude Opus 4.5 (model ID: claude-opus-4-5-20251101)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

VS Code integrated terminal

Additional Information

_No response_

View original on GitHub ↗

10 Comments

JoaoCarlinho · 8 months ago

I'm having the same issue:
The Notification hook with permission_prompt and idle_prompt matchers does not trigger when using Claude Code in the VS Code extension, though the documentation suggests hooks should work across both CLI and VS Code. Environment:
Claude Code version: 2.0.53
VS Code extension
macOS Darwin 24.6.0
Configuration (~/.claude/settings.json):
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{
"type": "command",
"command": "/path/to/notification-bell.sh"
}
]
}
]
}
}
Steps to reproduce:
Configure a Notification hook with permission_prompt matcher
Add logging to the script to verify execution
Use Claude Code in VS Code and trigger a permission prompt (e.g., file edit)
Check if the hook script was executed - it is not
Expected behavior: The notification hook should fire when a permission dialog appears, allowing users to play audio alerts. Actual behavior: The hook never executes. A debug log file written by the script is never created. Use case: Users want audible notifications when Claude Code needs interaction, especially when multitasking.

wsmoak · 8 months ago

I have the same problem in VS Code + Claude Code extension on MacOS.

The "Stop" hook works, but the "PermissionRequest" hook does NOT work

(Both of the hooks do work in Claude Code at the terminal.)

DoubleDipCode · 7 months ago

Same, there's multiple tickets about this.

royteeuwen · 7 months ago

Sam here for macOS

shumengliu · 7 months ago

Same here, using macOS, when using Claude Code VSCode extension the PermissionRequest hook does not trigger.

    "PermissionRequest": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '\"\\(.tool_input.command) - \\(.tool_input.description // \"No description\")\"' >> ~/.claude/bash-command-log.txt"
          }
        ]
      }
    ]

This is snippet of my settings.json, the hook does run when running Claude Code terminal.

RedcoatAsher · 7 months ago

I am in the same boat as @shumengliu, @royteeuwen, and everyone else... understand Rome wasn't built in a day and this probs isn't the HIGHEST priority, but would be nice to have an update to the multitude of tickets for this issue as to a potential timeline. Or even if it is a we dont care about this as much as you guys, soz ¯\_(ツ)_/¯, is better than nothing... cheers

ivanjuras · 7 months ago

Can we get this fixed, please?

DonnieCrewXI · 6 months ago

Issue still not fixed in VSCode! even with claude 4.6 and latest version of claude code.

blois collaborator · 6 months ago

PermissionRequest hooks should be working on the latest versions of the extension (2.1.30 and newer).

See also: https://github.com/anthropics/claude-code/issues/11156#issuecomment-3862252478

github-actions[bot] · 6 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.