Skip to main content

Crate coding_agent_hooks

Crate coding_agent_hooks 

Source
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

  • AgentKind identifies which agent is calling.
  • HookProtocol abstracts agent-specific JSON formats.
  • ToolUseHookInput and friends are the normalized input types parsed from any agent’s hook JSON.
  • HookOutput is 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.