525 lines
15 KiB
JSON
525 lines
15 KiB
JSON
{
|
|
"$schema": "./catalog.schema.json",
|
|
"schema_version": 1,
|
|
"verified_on": "2026-07-19",
|
|
"providers": [
|
|
{
|
|
"id": "augment",
|
|
"name": "Augment Code CLI",
|
|
"vendor": "Augment Code",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"/etc/augment/settings.json",
|
|
"C:\\ProgramData\\Augment\\settings.json",
|
|
".augment/settings.local.json",
|
|
".augment/settings.json",
|
|
"~/.augment/settings.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "conversation_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://docs.augmentcode.com/cli/hooks"
|
|
},
|
|
{
|
|
"id": "claudecode",
|
|
"name": "Claude Code",
|
|
"vendor": "Anthropic",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": ["~/.claude/settings.json", ".claude/settings.json", ".claude/settings.local.json"],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://code.claude.com/docs/en/hooks"
|
|
},
|
|
{
|
|
"id": "cline",
|
|
"name": "Cline",
|
|
"vendor": "Cline",
|
|
"surface": "cli_and_ide",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "script",
|
|
"config_paths": [
|
|
"~/Documents/Cline/Hooks/",
|
|
"$CLINE_DIR/hooks/",
|
|
".clinerules/hooks/",
|
|
".cline/hooks/"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_call.name/tool_result.name",
|
|
"input": "tool_call.input/tool_result.input",
|
|
"session": "taskId"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "json_stdout_cancel",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://github.com/cline/cline/blob/main/sdk/examples/hooks/README.md"
|
|
},
|
|
{
|
|
"id": "codex",
|
|
"name": "OpenAI Codex",
|
|
"vendor": "OpenAI",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": ["~/.codex/hooks.json", ".codex/hooks.json"],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://learn.chatgpt.com/docs/hooks"
|
|
},
|
|
{
|
|
"id": "copilot",
|
|
"name": "GitHub Copilot",
|
|
"vendor": "GitHub",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"$COPILOT_HOME/hooks/*.json",
|
|
"~/.copilot/hooks/*.json",
|
|
".github/hooks/*.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "preToolUse",
|
|
"after_tool": "postToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "toolName",
|
|
"input": "toolArgs",
|
|
"session": "sessionId"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "any_nonzero_exit",
|
|
"failure_mode": "fail_closed",
|
|
"timeout_failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://docs.github.com/en/copilot/reference/hooks-reference"
|
|
},
|
|
{
|
|
"id": "cursor",
|
|
"name": "Cursor",
|
|
"vendor": "Anysphere",
|
|
"surface": "cli_and_ide",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"/Library/Application Support/Cursor/hooks.json",
|
|
"/etc/cursor/hooks.json",
|
|
"C:\\ProgramData\\Cursor\\hooks.json",
|
|
".cursor/hooks.json",
|
|
"~/.cursor/hooks.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "preToolUse",
|
|
"after_tool": "postToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "conversation_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "configurable"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://cursor.com/docs/hooks"
|
|
},
|
|
{
|
|
"id": "droid",
|
|
"name": "Factory Droid",
|
|
"vendor": "Factory",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.factory/hooks.json",
|
|
"~/.factory/settings.json",
|
|
".factory/hooks.json",
|
|
".factory/settings.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://docs.factory.ai/reference/hooks-reference",
|
|
"contract_variants": [
|
|
{
|
|
"id": "nestedhooks",
|
|
"release_channel": "legacy",
|
|
"activation": "An existing nested hooks file remains active until Droid saves and archives it",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.factory/hooks/hooks.json",
|
|
".factory/hooks/hooks.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"source_url": "https://docs.factory.ai/reference/hooks-reference"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "gemini",
|
|
"name": "Gemini CLI",
|
|
"vendor": "Google",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.gemini/settings.json",
|
|
".gemini/settings.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "BeforeTool",
|
|
"after_tool": "AfterTool"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://geminicli.com/docs/hooks/reference/"
|
|
},
|
|
{
|
|
"id": "grok",
|
|
"name": "Grok Build",
|
|
"vendor": "xAI",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"$GROK_HOME/hooks/*.json",
|
|
"~/.grok/hooks/*.json",
|
|
".grok/hooks/*.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "toolName",
|
|
"input": "toolInput",
|
|
"session": "sessionId"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://docs.x.ai/build/features/hooks"
|
|
},
|
|
{
|
|
"id": "kimi",
|
|
"name": "Kimi Code",
|
|
"vendor": "Moonshot AI",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "toml",
|
|
"config_paths": [
|
|
"$KIMI_CODE_HOME/config.toml",
|
|
"~/.kimi-code/config.toml"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://moonshotai.github.io/kimi-code/en/customization/hooks",
|
|
"contract_variants": [
|
|
{
|
|
"id": "pythoncli",
|
|
"release_channel": "legacy",
|
|
"activation": "kimi-cli",
|
|
"config_format": "toml",
|
|
"config_paths": [
|
|
"~/.kimi/config.toml"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"source_url": "https://moonshotai.github.io/kimi-cli/en/customization/hooks.html"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "kirocli",
|
|
"name": "Kiro CLI",
|
|
"vendor": "AWS",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.kiro/agents/*.json",
|
|
".kiro/agents/*.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "preToolUse",
|
|
"after_tool": "postToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://kiro.dev/docs/cli/hooks/",
|
|
"contract_variants": [
|
|
{
|
|
"id": "v3",
|
|
"release_channel": "early_access",
|
|
"activation": "kiro-cli --v3",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.kiro/hooks/*.json",
|
|
".kiro/hooks/*.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"source_url": "https://kiro.dev/docs/cli/v3/hooks/"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "kiroide",
|
|
"name": "Kiro IDE",
|
|
"vendor": "AWS",
|
|
"surface": "ide",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
".kiro/hooks/*.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://kiro.dev/docs/hooks/"
|
|
},
|
|
{
|
|
"id": "letta",
|
|
"name": "Letta Code",
|
|
"vendor": "Letta",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"~/.letta/settings.json",
|
|
".letta/settings.json",
|
|
".letta/settings.local.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://docs.letta.com/letta-agent/hooks"
|
|
},
|
|
{
|
|
"id": "opencode",
|
|
"name": "OpenCode",
|
|
"vendor": "SST",
|
|
"surface": "cli_and_ide",
|
|
"integration_mode": "plugin_api",
|
|
"config_format": "plugin",
|
|
"config_paths": [
|
|
"~/.config/opencode/plugins/*.{js,ts,mjs}",
|
|
".opencode/plugins/*.{js,ts,mjs}"
|
|
],
|
|
"events": {
|
|
"before_tool": "tool.execute.before",
|
|
"after_tool": "tool.execute.after"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool",
|
|
"input": "args",
|
|
"session": "sessionID"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exception",
|
|
"failure_mode": "fail_closed"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://opencode.ai/docs/plugins/"
|
|
},
|
|
{
|
|
"id": "qwen",
|
|
"name": "Qwen Code",
|
|
"vendor": "Alibaba Cloud",
|
|
"surface": "cli",
|
|
"integration_mode": "command_hooks",
|
|
"config_format": "json",
|
|
"config_paths": [
|
|
"$QWEN_HOME/settings.json",
|
|
"~/.qwen/settings.json",
|
|
".qwen/settings.json"
|
|
],
|
|
"events": {
|
|
"before_tool": "PreToolUse",
|
|
"after_tool": "PostToolUse"
|
|
},
|
|
"event_fields": {
|
|
"name": "tool_name",
|
|
"input": "tool_input",
|
|
"session": "session_id"
|
|
},
|
|
"blocking": {
|
|
"mechanism": "exit_code_2",
|
|
"failure_mode": "fail_open"
|
|
},
|
|
"adapters": { "node": true, "python": true, "go": true },
|
|
"delivery_state": "available",
|
|
"source_url": "https://qwenlm.github.io/qwen-code-docs/en/users/features/hooks/"
|
|
}
|
|
],
|
|
"custom_integrations": [
|
|
{
|
|
"id": "enterprise",
|
|
"name": "Enterprise",
|
|
"description": "Managed enterprise integration"
|
|
},
|
|
{
|
|
"id": "gui",
|
|
"name": "GUI Agent",
|
|
"description": "Desktop or browser automation agent"
|
|
},
|
|
{
|
|
"id": "sdk",
|
|
"name": "SDK",
|
|
"description": "Direct Elydora SDK integration"
|
|
},
|
|
{
|
|
"id": "other",
|
|
"name": "Other",
|
|
"description": "Custom integration outside the provider catalog"
|
|
}
|
|
]
|
|
}
|