[DOCS] Missing PermissionRequest hook details in Hooks Guide and Input Reference schema
Documentation Type
Missing documentation (feature not documented)
Documentation Location
docs/en/hooks-guide.md docs/en/hooks.md
Section/Topic
- hooks-guide.md: "Hook Events Overview" - hooks.md: "Hook Input" section
Current Documentation
In docs/en/hooks-guide.md under Hook Events Overview, the list currently reads:
PreToolUse: Runs before tool calls (can block them) PostToolUse: Runs after tool calls complete UserPromptSubmit: Runs when the user submits a prompt... Notification: Runs when Claude Code sends notifications Stop: Runs when Claude Code finishes responding SubagentStop: Runs when subagent tasks complete PreCompact: Runs before Claude Code is about to run a compact operation SessionStart: Runs when Claude Code starts a new session... * SessionEnd: Runs when Claude Code session ends
In docs/en/hooks.md, while PermissionRequest is mentioned in the Configuration and Output sections, it is completely missing from the Hook Input section, which lists inputs for all other hooks (PreToolUse Input, PostToolUse Input, Notification Input, etc.).
What's Wrong or Missing?
The PermissionRequest hook was introduced in v2.0.45 (according to the Changelog), but the documentation is incomplete:
- It is missing from the high-level list in the Hooks Guide, making it difficult for new users to know the feature exists.
- Critically, the Reference documentation is missing the
PermissionRequest InputJSON schema. Developers cannot implement this hook without knowing what fields are passed tostdin(e.g., does it receivetool_input?tool_name?cwd?).
Suggested Improvement
In docs/en/hooks-guide.md:*
Add PermissionRequest to the overview list:
* PermissionRequest: Runs when the permission system requires user confirmation (can auto-approve or deny)
In docs/en/hooks.md:
Add a new section under Hook Input detailing the JSON schema. Based on the tool's behavior, it should likely look similar to this:
PermissionRequest Input
{
"session_id": "abc123",
"transcript_path": "/Users/.../.claude/projects/.../transcript.jsonl",
"cwd": "/Users/...",
"permission_mode": "default",
"hook_event_name": "PermissionRequest",
"tool_name": "Bash",
"tool_input": {
"command": "npm install"
}
}
Impact
High - Prevents users from using a feature
Additional Context
- This feature was highlighted in Changelog 2.0.45: "Added
PermissionRequesthook to automatically approve or deny tool permission requests with custom logic" - The "Decision Control" output format is documented, but the Input format is missing.
11 Comments
Also, why this hook doesn't fire a command?
The "Stop" hook works on my environment (WSL) but "PermissionRequest" doesn't.
I can confirm this issue. PermissionRequest hook does not trigger in VSCode extension on Windows 11 either.
Tested with:
matcher: "*"PreToolUse hook works fine with identical config, but triggers on ALL tool calls (including auto-approved), making it unsuitable for notifications when human input is required.
Use case: Running multiple Claude Code sessions and needing audio alert when permission dialog appears.
The hooks documentation is not maintained very well and this confuses very much. Where can we rely if not on the docs nor the schema?
+1 to @McBenac would love to have this fixed for vscode extension so that it fires PermissionRequest or atleast Notification when it's asking for user permission.
Issue #11891 Verification
Title: [DOCS] Missing PermissionRequest hook details in Hooks Guide and Input Reference schema
Issue Date: 2025-11-18
Verification Date: 2026-01-23
Status: PARTIALLY FIXED
---
Issue Summary
I reported that
PermissionRequesthook documentation was incomplete in two ways:hooks-guide.mdPermissionRequest InputJSON schema inhooks.md(the reference documentation)---
Verification Results
Claim 1: PermissionRequest missing from Hook Events Overview
Status: FIXED
In
code.claude.com/docs/en/hooks-guide.mdlines 42-43,PermissionRequestis now listed:Verdict: Anthropic added
PermissionRequestto the Hook Events Overview. This part of the issue is resolved.---
Claim 2: PermissionRequest Input schema missing from hooks.md
Status: STILL EXISTS
In
code.claude.com/docs/en/hooks.md, the Hook Input section (lines 527-809) contains detailed JSON schema entries for:| Hook Event | Lines | Status |
|------------|-------|--------|
| PreToolUse Input | 546-648 | Documented |
| PostToolUse Input | 650-672 | Documented |
| Notification Input | 674-686 | Documented |
| UserPromptSubmit Input | 688-699 | Documented |
| Stop Input | 701-716 | Documented |
| SubagentStop Input | 718-733 | Documented |
| PreCompact Input | 735-749 | Documented |
| Setup Input | 751-764 | Documented |
| SessionStart Input | 766-780 | Documented |
| SubagentStart Input | 782-796 | Documented |
| SessionEnd Input | 798-809 | Documented |
| PermissionRequest Input | N/A | MISSING |
There is NO
### PermissionRequest Inputsection. Developers implementingPermissionRequesthooks cannot determine from the reference documentation what JSON fields are passed tostdin.What IS documented:
PermissionRequestappears in the Hook lifecycle table (line 24)### PermissionRequestunder Hook Events (lines 361-366) explains WHEN it fires#### PermissionRequest Decision Control(lines 935-953) explains OUTPUT formatWhat is NOT documented:
Verdict: The commenter coygeek's update from the issue thread is accurate. Part 2 remains unresolved.
---
Current State
| Claim | Status |
|-------|--------|
| PermissionRequest in Hook Events Overview | FIXED |
| PermissionRequest Input schema in hooks.md | STILL EXISTS |
---
Suggested Fix
Add a
### PermissionRequest Inputsection after line 648 (after PreToolUse Input) inhooks.md:Before: (current - no section exists)
After:
The
tool_inputschema varies by tool. See [PreToolUse Input](#pretooluse-input) for tool-specific examples.spent a few mins on tracing the wire to piece this together. here's what
PermissionRequestactually sends + plus a ready-to-paste auto-approver (this was my usecase to auto-approve)---
what PermissionRequest receives
stdin delivers this json:
field breakdown:
session_id— uuid for the current sessiontranscript_path— full path to the jsonl logcwd— working directory at time of requestpermission_mode— one ofdefault/plan/bypassPermissionstool_name— the tool requesting permission (Bash,Write,AskUserQuestion, etc.)tool_input— exact args passed, same shape asPreToolUsetool_inputvaries by tool:ExitPlanMode→{ plan: "...", allowedPrompts: [...] }Bash→{ command: "npm install", description: "..." }Write→{ file_path: "...", content: "..." }AskUserQuestion→{ questions: [...] }one key distinction from
PreToolUse:PermissionRequestonly fires when claude is actually blocked waiting on you — not on every tool call.---
responding
stdout controls the outcome.
allow:
deny:
no output → normal dialog appears as usual.
---
matcher patterns
common matchers:
ExitPlanMode,Bash,Write|Edit, empty string = catch all.---
stop vs. permissionrequest
Stopfires after the user has already responded.PermissionRequestfires the moment the dialog would appear — this is the hook you want for approval flows.---
auto-approver
~/.claude/hooks/auto-approve-plan.sh:settings.json:macos notification-only (no auto-approve):
---
that's the missing page. build whatever approval flow you need. if you wanna see real implementation, check: https://github.com/yigitkonur/hooks-claude-approve
@yigitkonur excellent work. i've submitted a single issue I found.
Issue #11891 Verification
Title: [DOCS] Missing PermissionRequest hook details in Hooks Guide and Input Reference schema
Issue Date: 2025-07-01
Verification Date: 2026-03-17
Status: RESOLVED
Submission Mode: DRAFT ONLY (manual review required before posting/closing)
---
Issue Summary
This issue reports that the PermissionRequest hook type lacked detailed documentation of its input schema, decision control fields, and usage examples.
---
Verification Results
Claim 1: PermissionRequest hook details missing from hooks reference
Status: RESOLVED
At https://code.claude.com/docs/en/hooks, the PermissionRequest event is now documented with:
tool_name,tool_input,hook_event_name, andpermission_suggestionsdecision.behavior(allow/deny),updatedInput,updatedPermissions,message, andinterrupthookSpecificOutputwithdecision.behavior(allow/deny)Claim 2: No usage examples
Status: RESOLVED
At https://code.claude.com/docs/en/hooks-guide, there is now a concrete example using
PermissionRequestwithExitPlanModedemonstrating theallowbehavior withupdatedPermissions.Verdict: The hooks reference and guide now provide comprehensive PermissionRequest documentation.
---
Current State
| Claim | Status |
|-------|--------|
| Missing input schema | RESOLVED |
| Missing decision control fields | RESOLVED |
| Missing usage examples | RESOLVED |
---
References
---
Conclusion & Recommendation
Primary Concern: PermissionRequest hook lacked input schema, decision fields, and examples.
Resolution Status: RESOLVED
Recommendation: CLOSE
The hooks reference now has a full PermissionRequest section with input schema, all decision control fields, and the hooks guide includes a concrete usage example.
Closing — verified resolved against current docs. See verification comment above.
Correction: The verification comment above incorrectly states "Issue Date: 2025-07-01" — the actual issue date is 2025-11-18. All other content is accurate.
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.