{ "hooks": { "SessionStart": [ { "matcher": "startup|resume", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/session_start_context.py\"", "statusMessage": "Loading FESA handoff context" } ] } ], "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_policy.py\"", "statusMessage": "Checking risky shell command" } ] }, { "matcher": "apply_patch", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/pre_edit_policy.py\"", "statusMessage": "Checking FESA edit context" } ] }, { "matcher": "Edit", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/pre_edit_policy.py\"", "statusMessage": "Checking FESA edit context" } ] }, { "matcher": "Write", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/pre_edit_policy.py\"", "statusMessage": "Checking FESA edit context" } ] } ], "PostToolUse": [ { "matcher": "apply_patch", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/post_tool_use_policy.py\"", "statusMessage": "Checking FESA post-edit reminders" } ] }, { "matcher": "Edit", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/post_tool_use_policy.py\"", "statusMessage": "Checking FESA post-edit reminders" } ] }, { "matcher": "Write", "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/post_tool_use_policy.py\"", "statusMessage": "Checking FESA post-edit reminders" } ] } ], "Stop": [ { "hooks": [ { "type": "command", "command": "python \"$(git rev-parse --show-toplevel)/.codex/hooks/stop_continue.py\"", "statusMessage": "Running Harness validation", "timeout": 300 } ] } ] } }