| name | codex-execpolicy |
| description | Create or edit Codex execpolicy .rules files (allow/prompt/forbid commands, define prefix_rule patterns, add match/not_match tests) and validate them with codex execpolicy check. Use when a user mentions Codex rules, execpolicy, command policies, allowlists/denylists, or controlling which commands Codex can run, and when scope (global vs project) must be clarified. |
Codex Execpolicy
Overview
Define and maintain Codex execpolicy rules so the agent can allow, prompt, or forbid command prefixes, and validate the policy before use.
Workflow
Clarify scope and location.
- Ask: “Should this be a global rule or project-specific?”
- If global: default to
~/.codex/rules/default.rulesunless the user provides another path or uses a different Codex home. - If project-specific: ask for the exact file path; a common pattern is
.codex/rules/default.rulesat repo root. - If the file already exists, inspect it before editing.
Clarify intent.
- Ask for the decision:
allow,prompt, orforbidden. - Ask for the command prefix and any alternatives.
- Ask for at least one “should match” and “should not match” example if the rule is non-trivial.
- Ask for the decision:
Implement the rule.
- Use
prefix_rule(...)with a precisepatternlist. - Use union lists for alternatives when only one argument varies.
- Add
match/not_matchas inline tests when the rule is tricky.
- Use
Validate before finishing.
- Run
codex execpolicy check --pretty --rules <path> -- <command>using realistic examples. - If validation fails, adjust
patternor tests and re-check.
- Run
Summarize outcomes.
- State what command prefixes are allowed/prompted/blocked and where the rule lives.
Examples
Block all git commands:
prefix_rule(
pattern = ["git"],
decision = "forbidden",
)
Prompt for either gh pr view or gh pr list:
prefix_rule(
pattern = ["gh", "pr", ["view", "list"]],
decision = "prompt",
)
Resources
- See
references/execpolicy.mdfor syntax notes, decision precedence, and validation commands.