Expand description
Agent-agnostic hook protocol types and adapters for AI coding agents.
This crate provides the building blocks for writing hook-based middleware that works with any AI coding agent (Claude Code, Gemini CLI, Codex CLI, Amazon Q, OpenCode, Copilot CLI, etc.).
§Core Concepts
AgentKindidentifies which agent is calling.HookProtocolabstracts agent-specific JSON formats.ToolUseHookInputand friends are the normalized input types parsed from any agent’s hook JSON.HookOutputis a structured response type (used directly by Claude Code; other agents convert via protocol methods).- Tool and permission-mode name resolution normalizes across agents.
§Adding a New Agent
Implement HookProtocol — only two methods are
required (agent and parse_tool_use). Add entries to the tool and mode
alias tables in agents so policy evaluation uses consistent names.
Re-exports§
pub use agents::AgentKind;pub use input::HookInput;pub use input::SessionStartHookInput;pub use input::StopHookInput;pub use input::ToolUseHookInput;pub use output::Effect;pub use output::HookOutput;pub use output::HookSpecificOutput;pub use output::PermissionBehavior;pub use output::PermissionDecision;pub use output::PermissionRequestOutput;pub use output::PostToolUseOutput;pub use output::PreToolUseOutput;pub use output::SessionStartOutput;pub use protocol::HookProtocol;
Modules§
- agents
- Multi-agent support — agent identification, tool name normalization, and protocol implementations.
- input
- Hook input types — normalized representations of what agents send via stdin.
- output
- Hook output types — structured responses sent back to agents via stdout.
- protocol
- Hook protocol abstraction for multi-agent support.