async_execution | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | hook_async_execution: async: true on command handlers runs hook in background without blocking; decisions ignored; systemMessage delivered on next turn |
context_injection | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Hooks return systemMessage field in JSON output to inject context into agent's active session |
| Decision Control via Exit Codes and JSON Output | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Hooks decide via exit codes (0/2/other) or JSON fields (continue, stopReason, permissionDecision, decision, updatedInput, additionalContext). |
decision_control | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | block: exit code 2 or decision=block; allow: permissionDecision=allow in hookSpecificOutput; modify: updatedInput replaces tool input before execution |
handler_types | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Four types: command (shell), http (POST to URL), prompt (LLM evaluation), agent (subagent with tools); prompt/agent restricted to subset of events |
| Hook Event Set | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | 24 hook events spanning session, turn, and tool-call cadences (SessionStart, PreToolUse, PostToolUse, PermissionRequest, FileChanged, etc.). |
| Hook Scopes and Locations | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Six hook scopes: user, project, local, managed policy, plugin, and component frontmatter; managed policy can lock down the others. |
hook_scopes | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Six scopes: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), managed policy, plugin (hooks/hooks.json), component frontmatter |
input_modification | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | hook_input_modification: PreToolUse returns updatedInput in hookSpecificOutput; entire input object replaced; compatible with all permissionDecision values except defer |
json_io_protocol | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | Command hooks receive event JSON on stdin; respond with JSON on stdout (exit 0); structured fields: continue, stopReason, suppressOutput, systemMessage, hookSpecificOutput |
matcher_patterns | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | hook_matcher_patterns: exact string, pipe-separated list, or JavaScript regex; matches on tool_name or event-specific fields |
permission_control | Translated
Conversion type: Translated Actively mapped to the target provider’s equivalent field during conversion. Learn more → | hook_permission_update_entries: PermissionRequest hooks return updatedPermissions with addRules/replaceRules/removeRules/setMode entries |
| Elicitation and ElicitationResult Hooks | Embedded
Conversion type: Embedded No canonical equivalent — appended as prose in a conversion notes block so nothing is silently lost. Learn more → | Elicitation/ElicitationResult hooks intercept MCP server input requests, returning accept/decline/cancel actions or modifying the response. |
| Persistent Environment Variable Propagation via CLAUDE_ENV_FILE | Not portable
Conversion type: Not portable Unique to this provider — can’t be carried across providers. Learn more → | SessionStart/CwdChanged/FileChanged hooks can write export statements to $CLAUDE_ENV_FILE that persist across subsequent Bash commands. |
| WorktreeCreate Hook Replaces Default Git Behavior | Not portable
Conversion type: Not portable Unique to this provider — can’t be carried across providers. Learn more → | WorktreeCreate hook fully replaces Claude Code's git worktree creation, returning the new worktree path; enables non-git VCS support. |