{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Claude Code Hooks Configuration", "description": "Configuration for Claude Code hooks. Event types are validated at runtime and must be one of: PreToolUse, PostToolUse, PreCompact, SessionStart, SessionEnd, Stop, Notification, SubagentStop", "$defs": { "hookItem": { "type": "object", "required": [ "type", "command" ], "properties": { "type": { "type": "string", "enum": [ "PreToolUse", "PostToolUse", "PreCompact", "SessionStart", "SessionEnd", "Stop", "Notification", "SubagentStop" ], "description": "Hook event type that triggers this hook" }, "command": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "async": { "type": "boolean", "description": "Run hook asynchronously in background without blocking" }, "timeout": { "type": "number", "minimum": 0, "description": "Timeout in seconds for async hooks" } } }, "matcherEntry": { "type": "object", "required": [ "matcher", "hooks" ], "properties": { "matcher": { "type": "string" }, "hooks": { "type": "array", "items": { "$ref": "#/$defs/hookItem" } }, "description": { "type": "string" } } } }, "oneOf": [ { "type": "object", "properties": { "$schema": { "type": "string" }, "hooks": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/matcherEntry" } } } }, "required": [ "hooks" ] }, { "type": "array", "items": { "$ref": "#/$defs/matcherEntry" } } ] }