Ce face Reguli de execuție (.rules) și codex execpolicy
Regulile Codex nu sunt ghiduri de stil. Ele controlează comenzile pe care Codex vrea să le ruleze în afara sandbox-ului: pentru fiecare comandă, Codex compară lista de argumente cu regulile și decide dacă o rulează fără întrebare, cere aprobare sau o blochează. Funcția este experimentală.
Regulile se scriu în fișiere .rules (sintaxă Starlark) dintr-un director rules/ de lângă un strat activ de configurație, de exemplu ~/.codex/rules/default.rules; regulile de proiect din <repo>/.codex/rules/ se încarcă doar dacă proiectul este de încredere. Codex le citește la pornire, deci după o modificare repornești. Când adaugi o comandă în allow list din TUI, Codex scrie în ~/.codex/rules/default.rules.
prefix_rule() primește pattern (obligatoriu), decision (implicit allow), justification și exemplele match / not_match, validate la încărcare. Când se potrivesc mai multe reguli, câștigă cea mai restrictivă: forbidden, apoi prompt, apoi allow. Comenzile compuse simple din bash -lc (legate cu &&, ||, ; sau |) se împart și se evaluează separat. codex execpolicy check (în preview) afișează JSON cu decizia cea mai strictă și regulile potrivite.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
pattern |
Prefixul de comandă: listă nevidă de literali sau de uniuni de literali. |
decision |
allow (implicit), prompt sau forbidden. |
justification |
Motivul afișat la aprobare sau la blocare; la forbidden, recomandă o alternativă. |
match / not_match |
Exemple de comenzi care trebuie, respectiv nu trebuie, să se potrivească. |
codex execpolicy check --rules, -r <fișier> |
Testează o comandă față de unul sau mai multe fișiere de reguli. |
--pretty |
Formatează rezultatul JSON. |
--ignore-rules (codex exec) |
Nu încarcă fișierele .rules pentru acea rulare. |
Exemple practice
Exemplul 1: Interzicerea push-ului forțat și aprobare la push
# ~/.codex/rules/default.rules
prefix_rule(
pattern = ["git", "push", "--force"],
decision = "forbidden",
justification = "Folosește git push --force-with-lease.",
)
prefix_rule(pattern = ["git", "push"], decision = "prompt")
Exemplul 2: Testarea regulii
codex execpolicy check --pretty \
--rules ~/.codex/rules/default.rules \
-- git push --force
Greșeli frecvente și bune practici
- Pui reguli de stil în fișierele
.rules; ele controlează doar comenzile rulate. Convențiile de cod merg înAGENTS.md. - Uiți separatorul
--încodex execpolicy checkcând comanda testată are propriile flag-uri. - Te bazezi pe o regulă allow pentru
git addca să treacă șigit add . && rm -rf /; Codex evaluează separat fiecare comandă.