Skip to main content

mati_core/hooks/
codex_pre_bash.rs

1/// Codex PreToolUse(Bash) hook — hard enforcement via exit 2 + stderr.
2///
3/// Thin wrapper that delegates to `mati hook-decide codex-pre-bash`.
4/// All enforcement logic lives in Rust (`hooks::decide` + `cli::hook_decide`).
5///
6/// Codex hook protocol (developers.openai.com/codex/hooks#pretooluse):
7///   - Matcher must be "Bash" (Codex normalizes exec_command → Bash in hooks)
8///   - Input JSON uses `tool_input.command` (same schema as Claude Code)
9///   - Blocking: exit 2 + stderr message
10pub const SCRIPT: &str = r#"#!/usr/bin/env bash
11set -euo pipefail
12HOOKS_DIR="$(cd "$(dirname "$0")" && pwd)" && export PATH="$HOOKS_DIR:$PATH"
13command -v mati >/dev/null 2>&1 || exit 0
14exec mati hook-decide codex-pre-bash
15"#;