{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Claude Code Hooks Configuration", "description": "Configuration for Claude Code hooks. Supports current Claude Code hook events and hook action types.", "$defs": { "stringArray": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1 }, "commandHookItem": { "type": "object", "required": [ "type", "command" ], "properties": { "type": { "type": "string", "const": "command", "description": "Run a local command" }, "command": { "oneOf": [ { "type": "string", "minLength": 1 }, { "$ref": "#/$defs/stringArray" } ] }, "async": { "type": "boolean", "description": "Run hook asynchronously in background without blocking" }, "timeout": { "type": "number", "minimum": 0, "description": "Timeout in seconds for async hooks" } }, "additionalProperties": true }, "httpHookItem": { "type": "object", "required": [ "type", "url" ], "properties": { "type": { "type": "string", "const": "http" }, "url": { "type": "string", "minLength": 1 }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "allowedEnvVars": { "$ref": "#/$defs/stringArray" }, "timeout": { "type": "number", "minimum": 0 } }, "additionalProperties": true }, "promptHookItem": { "type": "object", "required": [ "type", "prompt" ], "properties": { "type": { "type": "string", "enum": ["prompt", "agent"] }, "prompt": { "type": "string", "minLength": 1 }, "model": { "type": "string", "minLength": 1 }, "timeout": { "type": "number", "minimum": 0 } }, "additionalProperties": true }, "hookItem": { "oneOf": [ { "$ref": "#/$defs/commandHookItem" }, { "$ref": "#/$defs/httpHookItem" }, { "$ref": "#/$defs/promptHookItem" } ] }, "matcherEntry": { "type": "object", "required": [ "hooks" ], "properties": { "matcher": { "oneOf": [ { "type": "string" }, { "type": "object" } ] }, "hooks": { "type": "array", "items": { "$ref": "#/$defs/hookItem" } }, "description": { "type": "string" } } } }, "oneOf": [ { "type": "object", "properties": { "$schema": { "type": "string" }, "hooks": { "type": "object", "propertyNames": { "enum": [ "SessionStart", "UserPromptSubmit", "PreToolUse", "PermissionRequest", "PostToolUse", "PostToolUseFailure", "Notification", "SubagentStart", "Stop", "SubagentStop", "PreCompact", "InstructionsLoaded", "TeammateIdle", "TaskCompleted", "ConfigChange", "WorktreeCreate", "WorktreeRemove", "SessionEnd" ] }, "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/matcherEntry" } } } }, "required": [ "hooks" ] }, { "type": "array", "items": { "$ref": "#/$defs/matcherEntry" } } ] }