[FEATURE] VS Code Extension should support PermissionRequest hooks

Resolved 💬 3 comments Opened Jan 4, 2026 by bachner Closed Jan 8, 2026

Problem

The VS Code extension does not trigger PermissionRequest hooks, while the CLI correctly processes them. This prevents users from implementing custom permission workflows (like TTS notifications for approval requests) when using the VS Code extension.

Current Behavior

  • CLI: PermissionRequest hooks in ~/.claude/settings.json are correctly triggered and the hook script receives JSON input via stdin
  • VS Code Extension: The same hooks are silently ignored - no hook execution occurs

Expected Behavior

The VS Code extension should trigger PermissionRequest hooks identically to the CLI, allowing users to:

  • Get audio/TTS notifications when approval is needed
  • Implement custom logging of permission requests
  • Build accessibility tools around permission prompts

Reproduction Steps

  1. Configure a PermissionRequest hook in ~/.claude/settings.json:
{
  "hooks": {
    "PermissionRequest": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "$HOME/bin/my-hook.sh"
          }
        ]
      }
    ]
  }
}
  1. Create a simple hook that logs to a file:
#!/bin/bash
echo "$(date): $(cat)" >> /tmp/claude-hook-debug.log
exit 0
  1. Run a command requiring permission in CLI → Hook fires, log file updated
  2. Run same command in VS Code extension → Hook does NOT fire, no log entry

Environment

  • VS Code Extension
  • macOS (also reported on Windows/WSL in related issues)
  • Hook works perfectly in CLI

Related Issues

  • #15772 - VSCode Extension Ignores All Permission Settings
  • #13339 - VS Code Extension Ignores Hook permissionDecision: "ask"
  • #12176 - PermissionRequest Hook Race Condition
  • #11891 - Missing PermissionRequest hook documentation

Use Case

I have a TTS (text-to-speech) hook that announces permission requests audibly, which is helpful when Claude is working in the background. This works great in the CLI but is completely non-functional in VS Code.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗