json_io_protocol
Whether hooks communicate with the host via structured JSON on stdin/stdout rather than plain text or exit codes alone.
Type: bool Content type: hooks
Provider Support
Section titled “Provider Support”| Provider | Supported | Mechanism |
|---|---|---|
| claude-code | ✓ | Command hooks receive event JSON on stdin; respond with JSON on stdout (exit 0); structured fields: continue, stopReason, suppressOutput, systemMessage, hookSpecificOutput |
| cursor | ✓ | Command hooks receive event data as JSON on stdin and may return structured JSON on stdout to signal decisions and supply output fields. |
| gemini-cli | ✓ | hook_io_protocol: Gemini CLI hooks receive event data as JSON on stdin and return structured JSON responses on stdout |
| windsurf | ✓ | json_stdin_context: Windsurf hooks receive event context as JSON on stdin |
| amp | ✗ | Amp hooks signal decisions via exit codes and declarative action types; no JSON stdin/stdout protocol documented |
| cline | ✗ | Cline hooks communicate via exit codes and output text; no structured JSON stdin/stdout protocol documented |
| codex | ✗ | Codex hooks communicate via exit codes and stdout text; no structured JSON stdin/stdout protocol documented |
| copilot-cli | ✗ | Copilot CLI hooks communicate via exit codes; no JSON stdin/stdout protocol documented |
| crush | ✗ | not documented |
| factory-droid | ✗ | Factory Droid hooks communicate via exit codes; no JSON stdin/stdout protocol documented |
| kiro | ✗ | Kiro hooks communicate via exit codes; no JSON stdin/stdout protocol documented |
| opencode | ✗ | not documented |
| pi | ✗ | Pi hooks communicate via TypeScript extension API; no JSON stdin/stdout protocol for shell hooks |
| roo-code | ✗ | not documented |
| zed | ✗ | not documented |