{"name":"PermissionRequest","slug":"permissionrequest","family":"hook","title":"Hook events","noun":"hook event","description":"When a tool call needs a permission decision","description_source":"docs","described_by":{"doc":"claude-code\/hooks","title":"Hooks reference"},"presence":{"first_seen":null,"removed_in":null,"in_current_build":false,"newest_mined":"2.1.308","builds":0,"mined_builds":149,"first_cited":{"version":"2.1.21","released_at":"2026-01-28 01:37:44","spans":9}},"aliases":[],"entries":[{"version":"2.1.307","anchor":"permissionrequest-hooks-can-now-allow-a-hook-originated-ask","heading":"PermissionRequest hooks can now approve a request another hook raised","line":"When a hook asks for approval, a PermissionRequest hook can now answer allow, where before it could only deny","released_at":"2026-10-21 20:47:18","reason":"named in this entry, found in this entry's text"},{"version":"2.1.307","anchor":"permission-engine-toolcheck-handlers","heading":"Hook decisions on tool use now go through a central permission check","line":"Allow, ask and deny decisions from PreToolUse and PermissionRequest hooks now pass through a central permission check that handlers can answer","released_at":"2026-10-21 20:47:18","reason":"named in this entry, found in this entry's text"},{"version":"2.1.304","anchor":"permissionrequest-hooks-can-deny-before-a-person-is-asked","heading":"Permission request hooks can refuse a tool before you are asked","line":"When a tool would ask for your permission, PermissionRequest hooks can now run first and turn that question into a refusal","released_at":"2026-10-19 19:47:15","reason":"found in this entry's text, named in this entry"},{"version":"2.1.304","anchor":"sdk-initialize-accepts-coderunningmcptools","heading":"SDK sessions can mark MCP tools that run code, so auto mode checks them","line":"SDK sessions can now name MCP tools that run model-written code, so auto mode reviews calls to them and hooks cannot change the permission mode","released_at":"2026-10-19 19:47:15","reason":"found in this entry's text"},{"version":"2.1.300","anchor":"hook-updatedinput-rewrites-are-now-validated-against-the-too","heading":"Hook-changed tool input is checked and can be refused if it is malformed","line":"When a hook changes a tool call's input, Claude Code checks it against what the tool accepts and can refuse the call if it does not fit","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text, named in this entry"},{"version":"2.1.300","anchor":"managed-settings-startup-message-distinguishes-unloaded-hook","heading":"Startup warning now says when invalid managed settings drop security hooks","line":"If invalid managed settings include PreToolUse or PermissionRequest hooks, the startup message now says those hooks are not loaded","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text"},{"version":"2.1.300","anchor":"permissionrequest-hook-setmode-dropped-in-cowork-cloud-cod","heading":"Hooks can no longer change the permission mode in Cowork cloud sessions","line":"In Cowork cloud sessions, or where an MCP tool runs code, a `PermissionRequest` hook's allow answer can no longer switch the permission mode","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text, named in this entry"},{"version":"2.1.300","anchor":"hook-load-failures-a-managed-settings-hook-that-cant-be-lo","heading":"Clearer warning when a managed hook cannot be loaded","line":"Settings checks now explain that an unloadable managed hook, and every other hook in that file, does not run","released_at":"2026-10-14 14:27:26","reason":"found in this entry's text"},{"version":"2.1.299","anchor":"permission-prompt-deny-answers-skip-permissionrequest-hooks","heading":"Denied permission answers passed on from a subagent no longer run PermissionRequest hooks","line":"When a subagent's permission answer is a denial, Claude Code now skips `PermissionRequest` hooks instead of always running them","released_at":"2026-10-14 00:23:19","reason":"found in this entry's text, named in this entry"},{"version":"2.1.299","anchor":"auto-mode-hooks-cannot-approve-tools-via-permissionrequest","heading":"Hooks can no longer approve some tools while auto mode is on","line":"In auto mode, an allow answer from a `PermissionRequest` hook is now ignored for certain tools","released_at":"2026-10-14 00:23:19","reason":"found in this entry's text, named in this entry"}],"entries_total":40,"docs":[{"source":"claude-code","path":"hooks","title":"Hooks reference","documented":true},{"source":"claude-code","path":"agent-sdk\/hooks","title":"Intercept and control agent behavior with hooks","documented":true},{"source":"claude-code","path":"agent-sdk\/permissions","title":"Configure permissions","documented":false},{"source":"claude-code","path":"agent-sdk\/python","title":"Agent SDK reference - Python","documented":false},{"source":"claude-code","path":"agent-sdk\/typescript","title":"Agent SDK reference - TypeScript","documented":false},{"source":"claude-code","path":"agent-sdk\/user-input","title":"Handle approvals and user input","documented":false},{"source":"claude-code","path":"agent-view","title":"Manage multiple agents with agent view","documented":false},{"source":"claude-code","path":"changelog","title":"Claude Code changelog","documented":false},{"source":"claude-code","path":"channels-reference","title":"Channels reference","documented":false},{"source":"claude-code","path":"debug-your-config","title":"Debug your configuration","documented":false}],"docs_total":14,"gates":[],"related":[],"url":"https:\/\/changelogs.core-directive.com\/reference\/hook\/permissionrequest","family_url":"https:\/\/changelogs.core-directive.com\/reference\/hook.json"}