[FEATURE] Add PermissionResolved hook event
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
When a tool requires user permission, the hook system currently fires:
- PreToolUse — before permission check
- PermissionRequest — when the dialog opens
- (nothing) — user clicks Allow/Deny ← gap
- PostToolUse / PostToolUseFailure — after tool completes/fails
Between step 2 and 4, NO hook event fires. This means tools like claude-eyes (https://github.com/wzp0514/claude-eyes)
cannot detect when the user resolves a permission dialog. The status indicator stays "waiting" (yellow) for the entire
tool execution duration, even though the user already approved.
Data evidence
From real hook logs (session 20dc3716, timestamps UTC):
03:51:39 | PreToolUse | Read ← green
03:51:44 | PermissionRequest| Read ← yellow (dialog opens)
← user clicks Allow, NO event fires
03:54:25 | PostToolUse | Read ← green (2 min 41 sec later!)
When the tool takes 2+ minutes to execute, the indicator shows "waiting for user" the entire time — misleading.
Proposed Solution
Add a new hook event PermissionResolved that fires immediately when the user clicks Allow or Deny, with an action
field:
{
"hook_event_name": "PermissionResolved",
"session_id": "...",
"tool_name": "Bash",
"tool_input": { "command": "git push", ... },
"action": "granted"
}
action values: "granted" | "denied" | "always_allow"
This would fire between the current PermissionRequest and PostToolUse/PostToolUseFailure, closing the gap.
Alternative Solutions
_No response_
Priority
Medium - Would be very helpful
Feature Category
CLI commands and flags
Use Case Example
Real-time status indicators (claude-eyes, custom panels, CI dashboards) could accurately reflect permission state:
- Yellow → permission requested
- Green → permission granted (immediately)
- Red → permission denied
Additional Context
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗