PermissionRequest (Claude Code)
hook-surface:claude.permission-request
HookSurfacechannels-hooks/hook-surfaces/native/claude-code-extended-hooks.yaml·Open in Graph → {
"id": "hook-surface:claude.permission-request",
"_kind": "HookSurface",
"_file": "channels-hooks/hook-surfaces/native/claude-code-extended-hooks.yaml",
"_cluster": "channels-hooks",
"attributes": {
"eventName": "PermissionRequest (Claude Code)",
"displayName": "PermissionRequest (Claude Code)",
"kind": "native",
"originVendor": "Anthropic",
"direction": "pre",
"blocking": true,
"family": "in-process",
"payloadSchema": {
"type": "object",
"required": [
"hook_event_name",
"tool_name",
"tool_input"
],
"properties": {
"hook_event_name": {
"type": "string",
"const": "PermissionRequest"
},
"tool_name": {
"type": "string"
},
"tool_input": {
"type": "object"
},
"permission_suggestions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "addRules"
},
"rules": {
"type": "array"
},
"behavior": {
"type": "string",
"enum": [
"allow",
"deny",
"ask"
]
},
"destination": {
"type": "string",
"enum": [
"localSettings",
"projectSettings"
]
}
}
}
}
}
},
"description": "Fires when the permission dialog is about to be shown to the user.\nSubscribers can short-circuit the dialog by returning a decision\n(allow/deny). Output may also include updatedPermissions to write new\nrules to settings. Distinct from PreToolUse — only fires when the\npermission dialog would appear; PreToolUse fires for every tool call.\n"
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "agent-runtime-impl:claude-code.runtime@1.x",
"to": "hook-surface:claude.permission-request",
"kind": "exposes",
"attributes": {}
}
]
}