Files
Elydora-Open-Source/integrations/catalog.json
T

410 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_HOME/hooks.json", "~/.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" },
"contract_variants": [
{
"id": "inlinetoml",
"release_channel": "stable",
"activation": "Hooks configured inline in an active Codex config.toml or managed requirements.toml layer",
"config_format": "toml",
"config_paths": [
"$CODEX_HOME/config.toml",
"~/.codex/config.toml",
".codex/config.toml",
"requirements.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://learn.chatgpt.com/docs/hooks"
},
{
"id": "pluginbundle",
"release_channel": "stable",
"activation": "An enabled Codex plugin supplies hooks through its manifest or default hooks file",
"config_format": "plugin",
"config_paths": [
".codex-plugin/plugin.json",
"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://learn.chatgpt.com/docs/hooks"
}
],
"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",
"after_tool_failure": "PostToolUseFailure"
},
"event_fields": {
"name": "tool_name",
"input": "tool_input",
"session": "session_id",
"call_id": "tool_call_id",
"output": "tool_output",
"error": "error"
},
"blocking": { "mechanism": "exit_code_2", "failure_mode": "fail_open" },
"adapters": { "node": true, "python": true, "go": true },
"delivery_state": "available",
"source_url": "https://www.kimi.com/code/docs/en/kimi-code-cli/customization/hooks.html",
"contract_variants": [
{
"id": "pythoncli",
"release_channel": "legacy",
"activation": "An existing ~/.kimi home activates the legacy kimi-cli contract",
"config_format": "toml",
"config_paths": [
"~/.kimi/config.toml"
],
"events": {
"before_tool": "PreToolUse",
"after_tool": "PostToolUse",
"after_tool_failure": "PostToolUseFailure"
},
"event_fields": {
"name": "tool_name",
"input": "tool_input",
"session": "session_id",
"call_id": "tool_call_id",
"output": "tool_output",
"error": "error"
},
"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"
}
]
}