Configurer et securiser Codex
Ce que tu vas apprendre
Choisir le bon mode sandbox. Configurer des profils reutilisables. Utiliser AGENTS.md, regles et hooks sans sur-engineerer.
Prerequis
- Codex CLI installe (v1.0+)
- Avoir execute au moins une session
codex exec - Comprendre la difference entre lecture et ecriture dans un repo
Le concept en 30 secondes
Codex peut lire, ecrire, ou executer des commandes. Le mode sandbox decide ce qui est autorise. Les approbations decident quand Codex doit te demander la permission. Configure ca avant d’optimiser tes prompts.
Etapes
1. Choisir un preset sandbox
@diagram:scale
Modes sandbox, du plus sur au plus dangereux
Lecture seule :: Review, plan, resume. `--sandbox read-only --ask-for-approval never`
Ecriture securisee :: Travail quotidien. `--sandbox workspace-write --ask-for-approval untrusted`
Autopilot serre :: Workflows repetitifs et bornes. `--full-auto`
Danger :: Jamais par defaut. `--yolo`
Preset recommande pour 90% du travail :
codex exec \
--sandbox workspace-write \
--ask-for-approval untrusted \
"ta tache ici"
--full-auto est un alias pour --sandbox workspace-write --ask-for-approval on-request. Ce n’est pas un passe-droit total.
2. Creer un fichier de configuration
Copie le fichier exemple :
cp ~/.codex/config.example.toml ~/.codex/config.toml
Contenu minimal :
approval_policy = "untrusted"
sandbox_mode = "workspace-write"
allow_login_shell = false
project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]
[features]
codex_hooks = true
[profiles.readonly_quiet]
approval_policy = "never"
sandbox_mode = "read-only"
[profiles.safe_write]
approval_policy = "untrusted"
sandbox_mode = "workspace-write"
[profiles.full_auto]
approval_policy = "on-request"
sandbox_mode = "workspace-write"
Utilise un profil :
codex exec --profile safe_write "ta tache"
3. Tester le sandbox localement
Quand une commande echoue dans Codex mais marche dans ton shell :
# macOS
codex sandbox macos --full-auto --log-denials -- npm test
# Linux
codex sandbox linux --full-auto -- npm test
Cela montre exactement quelle restriction bloque. Pas besoin de deviner.
4. Rediger un AGENTS.md
Cree un fichier AGENTS.md a la racine du repo :
# Instructions projet
## Build et test
- npm run test
- npm run validate
- npm run check
## Conventions
- Pas de console.log en production
- Les fichiers generes sont dans `generated/`
- Pas de modification de CI sans review
## Verification attendue
- Tout changement de doc doit passer `npm run validate`
Utilise AGENTS.override.md dans un sous-dossier si les regles locales different.
5. Ajouter des regles de commande
Cree .codex/rules/default.rules :
# Avant de voir une PR
git pr view * prompt
# Interdit
git reset --hard * forbidden
git clean -fd * forbidden
# Avant publication
npm publish * prompt
Teste la regle :
codex execpolicy check --pretty \
--rules ./.codex/rules/default.rules \
-- gh pr view 2 --json title,body
6. Comprendre les hooks (optionnel avance)
Les hooks executent des scripts a des moments precis du cycle Codex. Exemples utiles :
PreToolUse: bloquer une commande bash dangereusePermissionRequest: auto-refuser ou auto-accepter certains casUserPromptSubmit: ajouter du contexte devStop: forcer une derniere passe avant fin
Limites actuelles :
- Principalement pour Bash
- Ne couvrent pas tous les outils (MCP, Write, WebSearch)
- Gardes-fous, pas mur de securite complet
Exemple de wiring dans .codex/hooks.json :
{
"hooks": [
{
"event": "PreToolUse",
"script": ".codex/hooks/block-dangerous.sh"
}
]
}
Verification
- Le profil par defaut est
safe_write, pasyolo -
AGENTS.mdexiste et contient les commandes de build - Les regles bloquent
git reset --hardetgit clean -fd - Le sandbox a ete teste avec
codex sandbox - Les hooks ne cachent pas les effets de bord a l’utilisateur
Pieges courants
- Lancer en
--yolopar habitude → Cree un alias poursafe_write - Activer le reseau en
workspace-writepar defaut → Ne l’active que quand le task en a besoin - Confondre approbation et verification → Approuver n’est pas verifier
- Un profil permissif par defaut pour tous les repos → Chaque repo a ses propres regles
Recapitulatif
| Element | Role | Fichier |
|---|---|---|
| Sandbox | Controle ce que Codex peut faire | --sandbox ou config.toml |
| Approbations | Quand demander la permission | --ask-for-approval |
| AGENTS.md | Instructions persistantes du repo | AGENTS.md |
| Regles | Policy pour commandes hors sandbox | .codex/rules/default.rules |
| Hooks | Scripts au cycle de vie | .codex/hooks.json |
Pour aller plus loin
- Module 09 : Automatisation
- Module 10 : Playbooks
- Fichier exemple :
.codex/config.example.tomldans le repo source - Inspiré du guide codex-howto de anup4khandelwal (MIT)