Aller au contenu principal
Intermédiaire10 min

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 dangereuse
  • PermissionRequest : auto-refuser ou auto-accepter certains cas
  • UserPromptSubmit : ajouter du contexte dev
  • Stop : 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, pas yolo
  • AGENTS.md existe et contient les commandes de build
  • Les regles bloquent git reset --hard et git 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 --yolo par habitude → Cree un alias pour safe_write
  • Activer le reseau en workspace-write par 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