Hooks
La documentación oficial de Codex es explícita: sus hooks comparten vocabulario de eventos con Claude Code — SessionStart, PreToolUse, PostToolUse, UserPromptSubmit, Stop, más extras propios de Codex (SubagentStart/SubagentStop, PreCompact/PostCompact, PermissionRequest).
Dónde va
Sección titulada «Dónde va»~/.codex/hooks.json → global.codex/hooks.json → proyecto (requiere que el proyecto sea "trusted")O inline en config.toml bajo [[hooks.EventName]].
Plantilla base
Sección titulada «Plantilla base»{ "PostToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "scripts/auditar.sh", "timeout": 30 } ] } ]}[[hooks.PostToolUse]]matcher = "Bash"command = "scripts/auditar.sh"timeout_sec = 30Eventos disponibles (los más usados)
Sección titulada «Eventos disponibles (los más usados)»SessionStart / SessionEndPreToolUse / PostToolUseUserPromptSubmitStopSubagentStart / SubagentStop ← propios de Codex, no existen en Claude CodePreCompact / PostCompact ← propios de CodexPermissionRequest ← propio de CodexResumen
Sección titulada «Resumen»| Fuente de config | Se mergea con las demás |
|---|---|
~/.codex/hooks.json | Sí — todas las fuentes presentes se combinan |
~/.codex/config.toml ([hooks]) | Sí |
<repo>/.codex/hooks.json | Sí, si el proyecto es trusted |
<repo>/.codex/config.toml | Sí, si el proyecto es trusted |
Consideraciones
Sección titulada «Consideraciones»- Solo el tipo de handler
"command"está implementado hoy —"prompt"y"agent"se parsean pero todavía no ejecutan nada (reservados a futuro). /hooksdentro de Codex inspecciona los hooks activos. Un admin puede forzarallow_managed_hooks_only = trueenrequirements.tomlpara ignorar hooks de usuario/proyecto y permitir solo los gestionados centralmente.- Si ya se conocen los hooks de Claude Code, esta es el área que requiere menos aprendizaje: los nombres de los eventos base son los mismos.