Gardez les secrets hors de l’environnement de travail et refusez l’accès aux fichiers sensibles. Commencez par combiner ces deux mesures.

Le mode lecture seule, les approbations et le refus de participer à l’entraînement ont des objectifs différents. Vérifiez chaque contrôle séparément pour savoir s’il peut empêcher l’accès aux fichiers secrets.

Vérifiez séparément la lecture, l’exécution et la transmission

Ce qui peut être lu

Retirez les secrets inutiles de l’environnement de travail. Envisagez une règle de lecture deny pour les fichiers sensibles.

Actions au-delà des limites

Vérifiez qui examine les approbations. Évitez d’élargir les limites avec Full access ou une autorisation d’exécution hors du sandbox.

Accès réseau et autres outils

Vérifiez séparément le réseau des commandes, la transmission au modèle et l’accès du navigateur ou de MCP.

Aucun interrupteur ne bloque à lui seul tout l’accès aux fichiers, le trafic réseau et l’utilisation des données pour l’entraînement.

La documentation d’OpenAI sur Permissions, Sandbox, les approbations, la sécurité et la configuration a été revue le 8 octobre 2026. Ce guide concerne les commandes exécutées dans un sandbox local. La configuration d’exemple n’a pas été appliquée et son efficacité n’a pas été vérifiée sur une machine réelle. Aucun réglage de l’appareil ou du compte n’a été modifié.

1. Lecture seule, approbations et réglages d’entraînement

Empêcher la modification des fichiers ne revient pas à empêcher leur lecture.

read-only

Mode qui restreint l’écriture. Il ne masque pas comme secrets le contenu des fichiers lisibles.

workspace-write

Définit les emplacements où l’édition est autorisée. Il ne limite pas nécessairement la lecture à ces mêmes emplacements.

ContrôleCe qu’il régit principalementCe qu’il ne garantit pas à lui seul
Mode lecture seuleLa possibilité de modifier les fichiersQue les fichiers secrets accessibles ne seront pas lus
Politique d’approbationQui examine les actions franchissant une limiteUn examen humain de chaque lecture dans le périmètre autorisé
Règles de refus d’accès aux fichiersLe refus des lectures et écritures aux chemins indiquésSupprimer le contenu déjà collé ou empêcher l’accès par d’autres outils
Restrictions réseau des commandesLes destinations réseau des commandes exécutées dans le sandboxBloquer tout le trafic des modèles, de l’authentification, des navigateurs, de MCP et d’autres services
Réglages d’entraînementL’utilisation des données traitées pour améliorer les modèlesQue les données ne seront ni traitées ni transmises

Même avec on-request, les commandes dans le périmètre autorisé peuvent s’exécuter sans approbation supplémentaire. Pour un examen humain, vérifiez à la fois la politique d’approbation et le destinataire de la demande d’examen.

En quoi l’examen automatique par IA diffère

approvals_reviewer = "auto_review" dirige l’examen concerné vers une IA. Il ne s’agit pas d’un examen humain et cela n’impose pas un examen à chaque action déjà autorisée.

Source : OpenAI : approbations et limites du sandbox. L’entraînement est traité séparément dans les réglages d’entraînement de ChatGPT et Codex et les informations confidentielles.

2. Garder les secrets hors de l’environnement de travail

Une modification d’interface peut ne nécessiter que du code source et des données fictives. Les clés API de production, les données clients et les documents familiaux n’ont pas besoin de se trouver dans ce même environnement.

Déplacer les fichiers dans un autre dossier ne suffit pas. Si des droits de lecture étendus restent actifs, ces fichiers peuvent toujours être accessibles.

N’incluez que le nécessaire dans la copie de travail

1
Préparez le code source et des données fictives

Utilisez de petites entrées reproduisant le problème plutôt que des données de production.

2
Laissez les valeurs secrètes de côté

Les exemples de configuration doivent contenir uniquement des noms de champs. Vérifiez aussi les journaux, les sauvegardes et l’historique.

3
Vérifiez les accès à l’environnement

Vérifiez si d’autres dossiers, le répertoire personnel, le stockage partagé ou des applications connectées sont accessibles.

Les copies de travail, les comptes utilisateur séparés et les conteneurs exigent aussi de vérifier les dossiers partagés et les identifiants qui leur sont fournis.
Les règles d’exclusion de Git empêchent-elles la lecture ?

.gitignore indique les fichiers non suivis que Git doit ignorer. Il ne supprime pas les droits de lecture du système d’exploitation. Même si un outil de recherche ignore normalement un fichier, cela ne garantit pas que sa lecture via un chemin explicite sera refusée. Ajouter une règle d’exclusion n’affecte pas non plus les fichiers déjà suivis par Git. Documentation Git : portée de gitignore.

Instructions et refus d’accès effectif

Écrire « ne lis pas les secrets » dans AGENTS.md peut fournir des instructions de travail utiles. Cela ne crée pas en soi de restrictions d’accès du système d’exploitation. Combinez les instructions avec un refus d’accès effectif. Consultez les précautions pour saisir des informations dans des outils d’IA pour des exemples d’anonymisation des entrées.

3. Exemple de configuration pour refuser les lectures

Les profils de permissions sont une fonctionnalité bêta. Vérifiez les environnements compatibles et la configuration sélectionnée dans la session actuelle avant de les utiliser.

read : lecture

Autorisation de lire la cible

write : édition

Autorisation d’écrire sur la cible

deny : refus

Refuse à la fois la lecture et l’écriture sur la cible

Attention aux conflits avec les anciens réglages du sandbox
Les profils de permissions peuvent ne pas être utilisés lorsque les anciens réglages restent actifs.

Vérifiez les réglages en conflit et les contrôles administrateur

Ne mélangez pas les anciens réglages : default_permissions et [permissions] ne sont pas destinés à être combinés avec les anciens réglages sandbox_mode ou [sandbox_workspace_write]. Normalement, si la configuration chargée contient sandbox_mode ou si le démarrage utilise --sandbox, l’ancien mécanisme est utilisé. Les contrôles administrateur via allowed_permission_profiles constituent une condition distincte.

Le bloc suivant est une proposition de configuration illustrative qui ajoute le refus des fichiers secrets et l’approbation humaine à l’exemple officiel limité à l’espace de travail. Ne remplacez pas toute votre configuration existante par ce bloc. Vérifiez la compatibilité de la version, les restrictions de l’organisation et les chemins d’exécution nécessaires, puis testez dans un environnement fictif.

Où configurer : réglages utilisateur et projet
Configuration utilisateur

~/.codex/config.toml

Configuration du projet

.codex/config.toml

Leur périmètre et leurs conditions de chargement diffèrent. La configuration du projet n’est chargée que pour les projets de confiance.

Exemple : refuser les fichiers secrets et désactiver le réseau des commandes
default_permissions = "project-private"
approval_policy = "on-request"
approvals_reviewer = "user"

[permissions.project-private]
extends = ":workspace"

[permissions.project-private.filesystem]
":root" = "deny"
":minimal" = "read"

[permissions.project-private.filesystem.":workspace_roots"]
".env" = "deny"
".env.production" = "deny"
"secrets" = "deny"

[permissions.project-private.network]
enabled = false

Quels chemins cet exemple couvre-t-il ?

Appliqué à l’espace de travail actuel et à chaque espace supplémentaire

.envVisé par le refus
.env.productionVisé par le refus
secrets/ et son contenuVisé par le refus
subfolder/.envÀ vérifier séparément
Secrets renommés ou copies dans les journauxÀ vérifier séparément
Ce schéma illustre le périmètre des règles de refus. Il ne montre pas de résultats de refus vérifiés sur une machine réelle.
Hors de l’espace de travail

:root refuse la lecture. Les exceptions comprennent :minimal pour l’exécution et les répertoires temporaires autorisés par le profil hérité.

Dans l’espace de travail

Hérite de l’accès en édition de :workspace et refuse les chemins précis indiqués ci-dessus. Cet exemple ne détecte pas les secrets incorporés dans les sorties.

Noms des profils, espaces de travail multiples et fichiers temporaires

project-private est le nom choisi pour cet exemple. :workspace_roots s’applique à l’espace de travail actuel et aux espaces supplémentaires, en visant les chemins indiqués directement dans chaque racine. secrets vise un fichier ou une sous-arborescence portant ce nom.

Cette configuration n’empêche pas toutes les lectures hors de l’espace de travail. Il faut également éviter de copier des secrets dans le stockage temporaire.

Source : OpenAI : configuration, refus et périmètre des profils de permissions. Cet article ne rapporte pas l’application de l’exemple sur une machine réelle ni la vérification de l’isolation.

4. Motifs .env et lacunes à vérifier

Les noms exacts conviennent aux secrets stockés à des emplacements connus. Avec des motifs, n’oubliez pas que *.env et .env.* sont différents. Ne supposez pas que l’exemple officiel **/*.env refuse aussi .env.production dans les mêmes conditions.

Exemple de règleCible prévueÀ vérifier séparément
.envUn fichier portant ce nom directement à la racine de l’espace de travailSous-dossiers et noms de fichiers avec un suffixe ajouté
.env.productionLe fichier de configuration de production à la racineConfigurations de production sous d’autres noms ou copies
secretsLe chemin portant ce nom à la racine et son contenuCopies ailleurs, dans des journaux ou sauvegardes par exemple
**/*.envFichiers se terminant par .env à différents niveaux de répertoireNoms avec suffixe, profondeur du parcours et modifications après le démarrage

Vérifiez la profondeur des répertoires et les fichiers ajoutés après le démarrage

Sur Linux, WSL et Windows natif, les motifs de refus contenant ** sans restriction peuvent nécessiter une expansion bornée avant le démarrage. La documentation officielle décrit le réglage de glob_scan_max_depth à au moins 1, ou la définition explicite de la profondeur avec des motifs tels que *.env, */*.env et */*/*.env. Si vous utilisez des répertoires plus profonds, vérifiez la couverture jusqu’à cette profondeur.

Certains mécanismes d’application collectent les chemins correspondants avant le démarrage. Vérifiez si les fichiers créés ensuite sont refusés sur le système d’exploitation, la version et l’environnement d’exécution que vous utilisez réellement. Ne considérez pas les motifs de refus comme une règle universelle protégeant nécessairement tous les futurs secrets.

Quelle règle prévaut lorsque les permissions se chevauchent ?

Une règle de chemin plus précise peut remplacer une règle plus générale. Le refus prévaut pour un même chemin, mais une autorisation restreinte peut également être créée à l’intérieur d’un refus général. Vérifiez aussi les couches de configuration supplémentaires et l’héritage des profils parents.

Sources : OpenAI : refuser les lectures avec des chemins et des motifs, ordre de chargement de la configuration. Le fichier du projet .codex/config.toml n’est chargé que dans les projets de confiance. Distinguez ce qui figure dans un fichier de ce qui est actif dans la session actuelle.

5. Ce que la désactivation du réseau des commandes bloque ou non

Désactiver le réseau des commandes restreint l’usage du réseau par les programmes exécutés dans le sandbox concerné. Toutefois, les requêtes de modèles et d’authentification du client Codex sont distinctes des contrôles réseau des commandes. Un interrupteur réseau des commandes désactivé ne prouve pas que le code lu par Codex ne sera pas transmis comme contexte au modèle.

Ce que couvrent les restrictions réseau des commandes

Couvert : dans le sandbox

Activité réseau des commandes, scripts et de leurs processus enfants.

Gestion séparée : autres voies

Modèles et authentification, recherche web, applications connectées, MCP, navigateur et Computer Use, et tâches dans le cloud.

Vérifiez les outils gérés séparément via leurs propres contrôles de connexion, de permissions et d’environnement.

Pour autoriser le réseau tout en limitant les destinations, vous devez activer le proxy réseau et définir des règles de domaine. Une liste de domaines autorisés dans un profil n’active pas ces règles à elle seule.

Réseau des commandesProxyRésultat
DésactivéQuel que soit le réglageLe réseau des commandes n’est pas autorisé
ActivéDésactivéLes connexions directes sont possibles ; les règles de domaine du profil ne s’appliquent pas
ActivéActivéLe proxy applique les règles de domaine et refuse les destinations externes si aucune n’est autorisée

Les secrets peuvent toujours être envoyés à une destination autorisée. Restreindre les domaines ne revient pas à inspecter le contenu envoyé. En approuvant une exécution hors du sandbox, ne supposez pas que les règles de refus actuelles vous protègent encore à l’identique. Vérifiez ce que cette approbation élargit. OpenAI : permissions réseau et exigences du proxy.

6. Variables d’environnement, systèmes d’exploitation et Cloud

Les secrets ne se limitent pas aux fichiers. Si le shell contient une clé API, un processus enfant peut utiliser sa valeur grâce aux variables d’environnement héritées, même si l’accès au fichier est refusé. L’héritage de l’environnement est géré séparément avec shell_environment_policy.

Exclusion automatique des variables : true ou false

true | Par défaut

N’applique pas l’exclusion automatique des variables dont le nom contient KEY, SECRET ou TOKEN

false

Applique cette exclusion automatique

Cette comparaison porte sur les valeurs de ignore_default_excludes. Ce réglage est distinct des règles de refus des fichiers et filtre par nom de variable ; il ne détecte pas tous les secrets.

Cela ne protège pas les variables portant d’autres noms ni les valeurs récupérées ailleurs par les programmes. set est appliqué après l’exclusion et peut rétablir des variables exclues. OpenAI : héritage de l’environnement et ordre de priorité.

Windows : vérifiez aussi l’implémentation du sandbox

Les profils de permissions locaux sont documentés pour macOS, Linux, WSL et Windows natif, mais leurs implémentations diffèrent. Sur Windows, le sandbox avec élévation est présenté comme l’approche plus robuste. Le sandbox sans élévation offre une isolation réseau plus faible et ne peut appliquer certaines politiques d’isolation en lecture et écriture. Selon la documentation, les politiques non prises en charge entraînent un refus d’exécution. Une erreur ne justifie pas de passer à Full access. OpenAI : application selon le système d’exploitation.

Cloud : ne réutilisez pas les réglages locaux tels quels

Vérifiez séparément les réglages de l’environnement Codex Cloud concerné. Ne supposez pas que les profils locaux s’appliquent automatiquement à tout Cloud ou à l’environnement cloud de dot. Ne réutilisez pas sans modification la proposition locale de cet article comme configuration cloud. Consultez Codex Remote, Cloud et conditions de connexion du PC pour les différences entre lieux d’exécution.

7. Vérifier avec des fichiers fictifs

« J’ai demandé de ne pas lire », « j’ai enregistré la configuration » et « la lecture a réellement été refusée » sont des preuves différentes. Il n’est pas nécessaire de tester en faisant lire de vrais secrets à Codex. Ce qui suit est un plan de vérification pour l’utilisateur ou l’administrateur, pas un compte rendu de tests sur cet appareil.

  1. Consignez l’environnement : Notez la version de Codex, le système d’exploitation, le lieu d’exécution et les permissions sélectionnées. Dans la CLI, vérifiez le périmètre de l’espace de travail avec /status et les permissions sélectionnées avec /permissions.
  2. Vérifiez les conflits de configuration : Examinez les réglages utilisateur, ceux du projet de confiance, le profil sélectionné, les options de démarrage et les restrictions administrateur. Ne collez pas des fichiers de configuration complets ni des valeurs secrètes dans la conversation pour le diagnostic.
  3. Préparez des fichiers fictifs : Dans un espace de travail séparé sans secrets, créez des fichiers censés être autorisés et refusés. Utilisez des marqueurs fictifs comme contenu.
  4. Vérifiez l’autorisation et le refus : Par la même voie d’exécution, confirmez que les fichiers autorisés peuvent être lus et que les lectures refusées produisent une erreur. Le choix volontaire de Codex de ne pas lire un fichier ne prouve pas un refus effectif.
  5. Testez différents emplacements : Vérifiez les fichiers fictifs à la racine, dans des sous-dossiers, avec des noms suffixés et créés après le démarrage. N’approuvez pas une action contournant le refus. Si une lecture inattendue réussit, cessez d’utiliser cet environnement et cherchez la cause.
  6. Vérifiez aussi les sorties : Vérifiez si les tests ou compilations affichent des secrets dans les journaux ou transmettent les mêmes informations à d’autres outils MCP, navigateurs ou applications connectées.

Les informations disponibles varient selon la version de la CLI et l’affichage ; vérifiez la sortie réelle plutôt que de vous fier aux noms des commandes. La CLI officielle propose aussi des contrôles propres au système d’exploitation via codex sandbox. Avant de les considérer comme équivalents, vérifiez que les réglages testés avec une commande auxiliaire correspondent à ceux actifs dans votre session habituelle de bureau ou d’IDE. OpenAI : tester le sandbox.

Ajouter des règles de refus ensuite n’annule pas le contenu déjà lu. Vérifiez séparément le stockage des anciennes conversations, journaux et fichiers, ainsi que les réglages d’entraînement. La lecture réussie d’un fichier ne démontre pas à elle seule une divulgation à un tiers. Évaluez séparément ce qui a été lu, sa destination et la nécessité d’intervenir sur les identifiants.

Des utilisateurs ont également demandé des moyens d’exclure les fichiers secrets dans une demande publique concernant Codex. Cela illustre une préoccupation réelle, sans prouver que la fonctionnalité est toujours absente aujourd’hui. Cet article fonde ses affirmations sur la documentation officielle actuelle de Permissions, plutôt que sur d’anciens messages.

Questions fréquentes

Le mode lecture seule empêche-t-il l’envoi de .env ?

Le mode lecture seule n’offre pas cette garantie : il restreint les modifications. Pour éviter que le contenu lisible de .env devienne du contexte pour le modèle, vérifiez séparément le refus de lecture du fichier et un environnement de travail sans secrets.

.gitignore ou AGENTS.md suffisent-ils ?

Ils ne remplacent pas un refus effectif de lecture. Les règles d’exclusion de Git, les instructions de travail et les permissions imposées par le système d’exploitation sont des mécanismes distincts. Vérifiez avec des fichiers fictifs que le refus fonctionne dans l’environnement d’exécution actuel.

Désactiver le réseau fait-il fonctionner Codex entièrement sur l’appareil ?

Non. Les restrictions réseau des commandes ne désactivent pas la communication avec les modèles ou les services d’authentification. Les réglages du navigateur, de MCP, des applications connectées et du cloud sont également distincts.

Cet exemple protège-t-il totalement les secrets sur Windows ?

La protection totale n’est pas garantie. Il faut vérifier la compatibilité de la fonctionnalité bêta, l’implémentation du sandbox du système d’exploitation, les couches de configuration réelles, les chemins et les outils exécutés. L’exemple de cet article n’a pas été appliqué ni testé sur une machine réelle.