For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme

Autorisations

Configurez les profils d’autorisations de Codex (bêta) pour l’accès au système de fichiers et au réseau

Fonctionnalité en bêta. Les profils d’autorisations sont en cours de développement et peuvent évoluer.

Les profils d’autorisations sont incompatibles avec les anciens paramètres du bac à sable. Configurez soit default_permissions et [permissions], soit sandbox_mode / sandbox_workspace_write. Si sandbox_mode figure dans l’un des fichiers de configuration chargés, si vous passez l’option --sandbox ou si le profil de configuration sélectionné définit sandbox_mode, Codex utilise les anciens paramètres du bac à sable à la place de default_permissions.

Le paramètre géré allowed_permission_profiles fait exception : il impose à Codex d’utiliser les profils d’autorisations. Supprimez les anciens paramètres tels que sandbox_mode et [sandbox_workspace_write] avant de déployer une liste gérée de profils autorisés. Si plusieurs versions de Codex coexistent lors d’un déploiement en entreprise, vous pouvez conserver temporairement l’exigence gérée allowed_sandbox_modes pour assurer la compatibilité jusqu’à ce que tous les clients exécutent Codex 0.138.0 ou une version ultérieure.

Les profils d’autorisations permettent d’appliquer le principe du moindre privilège aux commandes locales que Codex exécute pour vous. Un profil est une politique nommée qui combine des règles d’accès au système de fichiers et au réseau. Les premières définissent ce que les commandes peuvent lire ou écrire, les secondes les destinations qu’elles peuvent atteindre.

Dans un profil, network.enabled = true autorise les commandes à accéder au réseau, mais ne démarre pas le proxy réseau. Pour appliquer les règles du profil relatives aux domaines, définissez également features.network_proxy = true dans config.toml, ou utilisez les exigences [experimental_network] activées et gérées par l’administrateur. Sans proxy actif, les règles du profil relatives aux domaines ne limitent pas l’accès direct au réseau.

Utilisez les profils pour accorder à Codex les accès nécessaires à la discussion en cours sans lui donner un accès étendu à votre machine ou à votre réseau. Par exemple, un profil en lecture seule permet à Codex d’examiner un projet sans le modifier. Un profil autorisant l’écriture peut limiter les modifications à certaines racines de l’espace de travail.

Les profils d’autorisations locaux sont pris en charge sur macOS, Linux, WSL et Windows en mode natif. Consultez la section Portée et application des règles pour connaître les particularités et les limites de chaque plateforme.

Pour les paramètres réseau actuels de Codex Cloud, consultez Connexion aux services. Pour Codex Cloud (ancienne version), consultez Accès à Internet.

Définir et sélectionner un profil

Codex propose trois profils d’autorisations intégrés :

  • :read-only limite les commandes locales à la lecture seule.
  • :workspace autorise l’écriture dans les racines actives de l’espace de travail et dans les répertoires temporaires du système.
  • :danger-full-access lève les restrictions du bac à sable local. Utilisez-le uniquement si vous souhaitez accorder un accès aussi étendu.

Créez un profil nommé sous [permissions.<name>], puis attribuez à la clé de premier niveau default_permissions le nom de ce profil ou celui d’un des profils intégrés ci-dessus. Dans cet exemple, project-edit est le nom d’un profil défini par l’utilisateur et non une valeur intégrée.

Les administrateurs d’entreprise peuvent définir des profils et limiter ceux que les utilisateurs peuvent sélectionner au moyen du fichier géré requirements.toml. Dès que allowed_permission_profiles est présent, tous les profils absents de la liste sont interdits, y compris les profils intégrés omis et ceux ajoutés dans les futures versions de Codex. Consultez Contrôle des profils d’autorisations disponibles pour connaître la configuration gérée recommandée.

Les profils personnalisés utilisent deux paramètres complémentaires :

  • [permissions.<name>.workspace_roots] ajoute les répertoires à considérer comme des racines de l’espace de travail pour ce profil.
  • [permissions.<name>.filesystem.":workspace_roots"] définit les règles du système de fichiers que Codex applique dans chacune des racines effectives de l’espace de travail. Celles-ci comprennent les racines utilisées à l’exécution dans la session en cours et celles définies dans le profil ci-dessus.

Les profils suivent également le modèle habituel de configuration par couches. Une couche de priorité supérieure peut ajouter ou remplacer des entrées sous le même nom de profil sans avoir à redéfinir tout le profil.

Par exemple, la configuration de l’organisation et celle de l’utilisateur peuvent enrichir le même profil indépendamment l’une de l’autre :

# /etc/codex/config.toml
[permissions.server.workspace_roots]
"~/code/server" = true
# ~/.codex/config.toml
[permissions.server.workspace_roots]
"~/code/mobile-app" = true

Lorsque server est actif, le profil effectif comprend les deux racines de l’espace de travail.

default_permissions = "project-edit"

[features]
network_proxy = true

[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = true

[permissions.project-edit.filesystem]
":minimal" = "read"

[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"

[permissions.project-edit.network]
enabled = true

[permissions.project-edit.network.domains]
"api.openai.com" = "allow"
"objects.githubusercontent.com" = "allow"
"*.github.com" = "allow"
"tracking.example.com" = "deny"

Ce profil :

  • Autorise la lecture des chemins strictement nécessaires à l’exécution des outils de développement courants.
  • Applique les mêmes règles aux racines de l’espace de travail de la session en cours et à celles définies dans le profil.
  • Maintient en lecture seule, sous chaque racine, les paramètres liés à l’IDE tels que .devcontainer/.
  • Interdit l’accès aux fichiers d’environnement qui correspondent au motif glob.
  • Autorise l’accès au réseau uniquement dans les limites des règles configurées pour les domaines.

Dans un profil actif, les interdictions qui ciblent des chemins précis restent en vigueur même si un chemin plus général est accessible en lecture ou en écriture. Par exemple, un profil peut autoriser l’écriture dans les racines de l’espace de travail tout en attribuant à un chemin .env correspondant au motif la valeur deny.

Étendre un profil

Utilisez extends lorsqu’un profil reprend l’essentiel d’un profil intégré ou d’un autre profil nommé. Privilégiez l’extension d’un profil intégré pour conserver ses protections de base. Par exemple, si vous étendez :workspace, les chemins .git, .agents, .codex et .aws de la racine de l’espace de travail restent en lecture seule, sauf si vous remplacez explicitement ces règles. Définissez le profil parent une seule fois, puis ajoutez ou remplacez uniquement les règles qui diffèrent.

default_permissions = "project-edit"

[features]
network_proxy = true

[permissions.project-edit]
description = "Project editing with OpenAI API access."
extends = ":workspace"

[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"

[permissions.project-edit.network]
enabled = true

[permissions.project-edit.network.domains]
"api.openai.com" = "allow"

Ce profil reprend les règles de :workspace, maintient l’interdiction d’accès aux fichiers .env correspondant au motif et autorise les requêtes vers api.openai.com. Un profil peut étendre :read-only, :workspace ou un autre profil nommé. Il ne peut pas étendre :danger-full-access. Codex refuse également les profils parents inconnus et les cycles d’héritage.

Spécification de la configuration

Entrée Type / valeurs Valeur par défaut Détails
default_permissions Nom de profil (chaîne) Aucune Indique le nom du profil d’autorisations que Codex applique par défaut. Ce nom doit correspondre à un profil défini sous [permissions] ou à un profil intégré tel que :workspace. Définissez-le explicitement pour obtenir un comportement prévisible. Les exigences gérées ne peuvent l’omettre que si elles autorisent explicitement à la fois :workspace et :read-only. Dans cette configuration, Codex utilise les anciens paramètres du bac à sable, sauf si le paramètre géré allowed_permission_profiles lui impose d’utiliser les profils d’autorisations.
[permissions.<name>] Table Aucune Définit un profil nommé. default_permissions sélectionne le profil par défaut. Les autres paramètres relatifs aux profils d’autorisations utilisent également le nom du profil.
permissions.<name>.description Chaîne Aucune Fournit une description du profil destinée aux utilisateurs. Un profil n’hérite pas de la description de son parent via extends.
permissions.<name>.extends Nom de profil (chaîne) Aucune Crée ce profil à partir d’un autre profil nommé ou du profil intégré :read-only ou :workspace. Codex refuse :danger-full-access, les profils parents inconnus et les cycles d’héritage.
[permissions.<name>.workspace_roots] Table Aucune Ajoute des racines de l’espace de travail définies dans le profil. Les règles du système de fichiers :workspace_roots s’y appliquent comme aux racines utilisées à l’exécution dans la session en cours.
permissions.<name>.workspace_roots."<path>" Booléen false Ajoute le chemin aux racines de l’espace de travail du profil si la valeur est true. Les entrées dont la valeur est false restent inactives.
[permissions.<name>.filesystem] Table Aucune Associe les chemins du système de fichiers à des droits d’accès ou à des tables de droits par sous-chemin. Si la table du système de fichiers est absente ou vide, l’accès au système de fichiers reste restreint et Codex émet un avertissement au démarrage.
permissions.<name>.filesystem.glob_scan_max_depth Nombre Aucune Limite la profondeur de recherche des chemins correspondant aux motifs glob d’interdiction de lecture sur Linux, WSL et Windows en mode natif lorsque Codex en dresse la liste avant le démarrage du bac à sable. Une valeur plus élevée peut prolonger cette recherche au démarrage. Utilisez une valeur d’au moins 1 si un motif ** de profondeur illimitée doit être développé à l’avance sur une profondeur limitée.
[permissions.<name>.filesystem]."<path>" read, write ou deny Aucune Définit l’accès direct à un chemin pris en charge. deny interdit l’accès et l’emporte sur les entrées write ou read de même spécificité. Codex refuse les règles d’écriture directe que l’environnement d’exécution actif ne peut pas faire respecter.
[permissions.<name>.filesystem."<path>"]."<subpath>" read, write ou deny Aucune Accorde l’accès à un descendant de <path>. Utilisez . pour le chemin de base. Les autres sous-chemins doivent être relatifs et désigner des descendants. Ils ne peuvent contenir aucun composant . ou ...
[permissions.<name>.network] Table Aucune Configure l’accès des commandes au réseau et la politique qu’applique le proxy réseau lorsqu’il est actif. Activez features.network_proxy, sauf si les exigences réseau gérées par l’administrateur démarrent le proxy.
permissions.<name>.network.enabled Booléen false Active l’accès au réseau pour les commandes exécutées avec ce profil. Ce paramètre ne démarre pas le proxy réseau. Sans proxy actif, les commandes peuvent se connecter directement sans restriction de domaine.
[permissions.<name>.network.domains] Table Aucune Associe des motifs de noms d’hôte à allow ou deny. Les règles s’appliquent uniquement lorsque le proxy réseau est actif. En l’absence d’entrées allow, le proxy actif bloque les requêtes vers les domaines. Les interdictions l’emportent sur les autorisations.
permissions.<name>.network.domains."<pattern>" allow ou deny Aucune Accepte les noms d’hôte exacts, *.example.com pour les sous-domaines, **.example.com pour le domaine racine et ses sous-domaines, et * comme caractère générique global réservé aux autorisations. Pour normaliser les motifs d’hôte, Codex supprime les espaces de début et de fin, convertit les lettres en minuscules et retire le point final, les numéros de port et les crochets.
[permissions.<name>.network.unix_sockets] Table Aucune Définit les exceptions à la liste des sockets Unix autorisés. Utilisez-les uniquement pour des intégrations locales telles que Docker.
permissions.<name>.network.unix_sockets."<path>" allow ou deny Aucune Ajoute le chemin absolu d’un socket Unix à la liste effective des sockets autorisés avec allow, ou le refuse avec deny. Les entrées interdites sont exclues de la liste effective.
permissions.<name>.network.proxy_url URL (chaîne) http://127.0.0.1:3128 Adresse d’écoute du proxy HTTP utilisée pour HTTP_PROXY, HTTPS_PROXY, les variables de proxy WebSocket et les variables d’environnement de proxy des outils concernés.
permissions.<name>.network.enable_socks5 Booléen true Active l’écoute SOCKS5 utilisée pour ALL_PROXY et les variables de proxy FTP.
permissions.<name>.network.socks_url URL (chaîne) http://127.0.0.1:8081 Adresse d’écoute SOCKS5.
permissions.<name>.network.enable_socks5_udp Booléen true Active la prise en charge d’UDP via SOCKS5 lorsque l’écoute SOCKS5 est activée.
permissions.<name>.network.allow_upstream_proxy Booléen true Permet au proxy réseau du bac à sable de tenir compte des paramètres de proxy amont HTTP(S)_PROXY et ALL_PROXY pour les requêtes sortantes.
permissions.<name>.network.allow_local_binding Booléen false Désactive la protection des réseaux locaux et privés si la valeur est true. Si la valeur est false, les hôtes locaux indiqués littéralement, tels que localhost ou 127.0.0.1, doivent figurer explicitement dans la liste des hôtes autorisés. Les noms d’hôte qui se résolvent en adresses IP locales ou privées restent bloqués.
permissions.<name>.network.dangerously_allow_non_loopback_proxy Booléen false Permet au proxy d’écouter sur des adresses autres que celles de bouclage. Pour le développement local courant, laissez ce paramètre indéfini.
permissions.<name>.network.dangerously_allow_all_unix_sockets Booléen false Contourne la liste des sockets Unix autorisés sur les plateformes où le proxy prend en charge ces sockets. Cette exception ouvre un accès local étendu.

Autorisations du système de fichiers

Les entrées du système de fichiers prennent la valeur read, write ou deny :

Accès Signification
read Autorise les commandes à lire les fichiers et à lister le contenu des répertoires sous le chemin indiqué. Elles ne peuvent pas y créer, modifier, renommer ni supprimer de fichiers.
write Autorise les commandes à lire et à modifier les fichiers sous le chemin indiqué, y compris à en créer, à en renommer et à en supprimer lorsque le système d’exploitation le permet.
deny Interdit la lecture et l’écriture sous le chemin indiqué. Utilisez cette valeur pour exclure un sous-chemin d’une autorisation read ou write plus générale.

Les entrées les plus spécifiques l’emportent sur les entrées plus générales. Si deux entrées ciblent le même chemin, deny l’emporte sur write, et write l’emporte sur read.

Cet ordre de priorité permet de définir d’abord une zone de travail étendue, puis d’en exclure les fichiers ou répertoires qui doivent rester inaccessibles en lecture :

[permissions.project-edit.filesystem]
":minimal" = "read"

[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"

Dans cet exemple, la racine de l’espace de travail reste accessible en écriture, .devcontainer/ reste en lecture seule et les commandes exécutées dans le bac à sable ne peuvent pas accéder aux fichiers d’environnement correspondant au motif.

Un chemin plus spécifique peut également rétablir l’accès à une sous-arborescence au sein d’une arborescence interdite :

[permissions.project-edit.filesystem]
"~/Documents" = "deny"
"~/Documents/codex" = "write"

Formes de chemins prises en charge :

Chemin Signification Sous-chemins pris en charge
:root Racine du système de fichiers . uniquement
:minimal Chemins de la plateforme et de l’environnement d’exécution nécessaires aux outils courants . uniquement
:workspace_roots Racines de l’espace de travail de la session en cours et racines activées dans le profil Oui
:tmpdir Emplacement indiqué par $TMPDIR, s’il est défini . uniquement
:slash_tmp Répertoire /tmp, s’il existe . uniquement
/absolute/path Chemin absolu propre à la plateforme, par exemple /path sur macOS, Linux ou WSL, ou C:\path sur Windows en mode natif Oui
~/path Chemin situé dans le répertoire personnel de l’utilisateur actuel Oui

Sur Windows en mode natif, les chemins relatifs au répertoire personnel peuvent également utiliser des barres obliques inverses, comme dans ~\work.

Utilisez :root uniquement si le profil doit expressément accorder un accès étendu en lecture :

[permissions.audit.filesystem]
":root" = "read"

Utilisez des entrées imbriquées sous :workspace_roots pour définir l’accès à des sous-chemins relatifs à chaque racine de l’espace de travail :

[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"          # each workspace root
"docs" = "read"        # each workspace-root docs directory
"generated" = "deny"   # each workspace-root generated directory

Les sous-chemins imbriqués doivent rester dans leur racine de l’espace de travail. Codex refuse les chemins qui remontent vers un répertoire parent, tels que ../other-repo.

Interdire la lecture à l’aide de chemins exacts ou de motifs glob

Utilisez deny pour les fichiers ou les sous-arborescences que Codex ne doit pas lire, même si une règle plus générale du profil autorise l’accès au répertoire qui les contient. Les chemins exacts conviennent aux emplacements fixes tels que ~/.ssh. Les motifs glob sont plus adaptés lorsqu’un profil doit couvrir un ensemble de fichiers sensibles dont l’emplacement varie d’un dépôt à l’autre.

Lorsqu’un motif glob figure sous :workspace_roots, Codex l’interprète par rapport à chaque racine effective de l’espace de travail. Par exemple :

[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"

Cette règle interdit la lecture des fichiers .env correspondant au motif sous chacune des racines de l’espace de travail utilisées à l’exécution ou définies dans le profil. Utilisez-la pour conserver les droits d’écriture habituels dans l’espace de travail tout en empêchant la lecture des fichiers d’environnement, des secrets générés et des autres fichiers susceptibles de contenir des identifiants.

Sur Linux et WSL, ainsi que sur Windows en mode natif avec MXC ou elevated, Codex recense les fichiers correspondant aux motifs glob d’interdiction de lecture au démarrage de chaque processus dans le bac à sable. Les fichiers correspondants créés ensuite ne sont pas ajoutés à la liste d’interdiction de ce processus et restent lisibles si ses autres autorisations le permettent. Par exemple, un shell, un script, un outil de surveillance ou un serveur de développement qui reste actif peut lire un fichier .env correspondant au motif si ce fichier a été créé après le démarrage du processus.

Cette liste est valable pendant toute la durée de vie du processus dans le bac à sable. Sa portée ne s’étend pas à toute la session Codex. Lorsque vous démarrez un nouveau processus dans le bac à sable via Codex, les fichiers correspondants sont de nouveau recensés. Si vous continuez à utiliser un processus déjà actif, sa liste d’interdiction n’est pas actualisée. Ne comptez pas sur un motif glob pour empêcher ce processus de lire des fichiers créés après son démarrage. Consultez la section Compatibilité de MXC sur Windows pour connaître les limites propres à Windows.

Les motifs glob deny sont pris en charge pour interdire la lecture. Les motifs glob read ou write sont moins portables dans les bacs à sable sur Linux, WSL et Windows en mode natif. Privilégiez si possible les chemins exacts ou les règles portant sur une sous-arborescence, comme "docs/**" = "read".

Sur Linux, WSL et Windows en mode natif, un motif ** qui interdit la lecture sans limite de profondeur peut nécessiter une recherche à profondeur limitée avant le démarrage du bac à sable. Définissez glob_scan_max_depth lorsque vous utilisez un motif de profondeur illimitée tel que "**/*.env" = "deny" :

[permissions.project-edit.filesystem]
glob_scan_max_depth = 3

[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"

glob_scan_max_depth doit valoir au moins 1. Une valeur plus élevée augmente la profondeur de recherche avant le démarrage du bac à sable, ce qui peut allonger le démarrage sur Linux, WSL et Windows en mode natif. Si vous préférez éviter ce développement préalable à profondeur limitée, indiquez explicitement les profondeurs voulues avec des motifs tels que *.env, */*.env et */*/*.env.

Ajoutez au profil des racines d’espace de travail réutilisables si les mêmes règles doivent s’appliquer au-delà de la racine de la session en cours :

[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = true

Lorsque ce profil est actif, Codex applique les règles :workspace_roots aux racines de l’espace de travail utilisées à l’exécution dans la session en cours et à chacune des racines activées dans le profil.

Sur Windows en mode natif, les chemins comportant une lettre de lecteur, tels que D:\work, et les chemins UNC, tels que \\server\share, sont pris en charge comme chemins absolus.

Autorisations réseau

L’accès au réseau et le filtrage réseau se configurent séparément. Définissez permissions.<name>.network.enabled = true pour autoriser les commandes à accéder au réseau et activez features.network_proxy pour faire appliquer les règles du profil relatives aux domaines :

[features]
network_proxy = true

[permissions.project-edit.network]
enabled = true

[permissions.project-edit.network.domains]
"example.com" = "allow"      # exact host
"*.example.com" = "allow"    # subdomains only
"**.example.com" = "allow"   # apex and subdomains
"ads.example.com" = "deny"   # deny wins over allow

Le comportement dépend des deux paramètres :

  • Réseau désactivé : les commandes ne peuvent pas accéder au réseau, que le proxy soit activé ou non.
  • Réseau activé, proxy désactivé : les commandes accèdent directement au réseau sans restriction. Les règles du profil d’autorisations relatives aux domaines ne sont pas appliquées.
  • Réseau activé, proxy activé : les commandes passent par le proxy, qui applique les règles du profil relatives aux domaines. Si aucun domaine n’est autorisé, le proxy actif bloque les destinations externes.

L’ajout de [permissions.<name>.network.domains] ou la définition de permissions.<name>.network.enabled = true n’active pas features.network_proxy. Les administrateurs peuvent aussi activer le proxy à l’aide de [experimental_network] dans requirements.toml. Consultez la section Configuration gérée.

Lorsqu’il est actif, le proxy réseau du bac à sable écoute par défaut sur des adresses locales :

[permissions.project-edit.network]
enabled = true
proxy_url = "http://127.0.0.1:3128"
enable_socks5 = true
socks_url = "http://127.0.0.1:8081"
enable_socks5_udp = true

Conservez les paramètres d’écoute par défaut, sauf si vous intégrez le proxy à un environnement d’exécution particulier. Les clés réseau dangerously_* permettent de contourner certaines restrictions dans des environnements spécialisés. Évitez de les utiliser pour le développement local courant.

Réseaux locaux et privés

Lorsque le proxy réseau est actif, Codex protège par défaut les réseaux locaux et privés contre les attaques par réassociation DNS et les accès accidentels aux services locaux. Pour autoriser expressément une destination locale indiquée littéralement, ajoutez le nom d’hôte exact ou l’adresse IP exacte à la liste des hôtes autorisés :

[permissions.project-edit.network.domains]
"localhost" = "allow"
"127.0.0.1" = "allow"

Définissez allow_local_binding = true uniquement si le profil doit permettre d’atteindre des hôtes autorisés dont les noms se résolvent en adresses locales ou privées :

[permissions.project-edit.network]
enabled = true
allow_local_binding = true

[permissions.project-edit.network.domains]
"localhost" = "allow"

Sockets Unix

L’accès aux sockets Unix via le proxy permet à des outils tels que Docker de contourner certaines restrictions locales. Utilisez cette possibilité avec parcimonie :

[permissions.project-edit.network.unix_sockets]
"/var/run/docker.sock" = "allow"
"/tmp/old.sock" = "deny"

Utilisez deny pour interdire un chemin de socket, même si une entrée héritée l’autorise. Les chemins interdits sont exclus de la liste effective des sockets autorisés.

Lorsque les sockets Unix sont activés, limitez l’écoute du proxy aux adresses de bouclage.

Migrer depuis les anciens paramètres du bac à sable

Les profils d’autorisations remplacent l’ancienne combinaison de sandbox_mode et de sandbox_workspace_write lorsque vous souhaitez définir dans un même profil réutilisable les règles du système de fichiers et du réseau. Pour chaque session, choisissez un seul des deux systèmes.

Points de départ recommandés :

  • Pour un workflow en lecture seule, utilisez le profil intégré :read-only ou définissez un profil personnalisé qui autorise la lecture uniquement là où elle est nécessaire.
  • Pour modifier des fichiers dans l’espace de travail, utilisez le profil intégré :workspace ou définissez un profil personnalisé qui autorise l’écriture via :workspace_roots. N’y ajoutez que les chemins temporaires ou de cache dont le workflow a besoin.
  • Pour exécuter des commandes localement sans restriction, utilisez :danger-full-access uniquement si vous souhaitez accorder l’accès local le plus étendu possible.

Les profils définissent les autorisations locales par défaut d’une session. Les exigences gérées par l’organisation peuvent imposer des restrictions supplémentaires que la configuration de l’utilisateur ne doit pas assouplir. Consultez la section Configuration gérée pour connaître les contraintes que l’administrateur impose au système de fichiers et au réseau.

Portée et application des règles

Accès à l’ordinateur local avec Work Cloud et politiques des environnements

Vérifiez la politique de chaque environnement dans lequel Work Cloud accède à l’ordinateur local :

  • Exigences de l’entreprise : pour le mode Work avec accès local et pour les dots, lorsque la gestion des politiques est activée, les règles globales prises en charge régissent l’orchestrateur cloud partagé. Les exigences applicables à l’exécution locale régissent l’ordinateur connecté.
  • Exécution dans le cloud : les conteneurs cloud du mode Work utilisent les politiques existantes de Work Cloud.
  • Ordre de priorité des politiques locales : les exigences MDM et les anciennes exigences relatives aux appareils gérés priment sur Agent Security. Les exigences définies dans le fichier système de l’appareil ont une priorité inférieure à celle d’Agent Security.
  • Priorité des politiques : une politique de priorité supérieure l’emporte même si une politique de priorité inférieure est plus spécifique. Au sein d’une même politique, les règles dérogatoires de l’environnement propres à un système d’exploitation priment sur celles qui s’appliquent à tous les systèmes d’exploitation. Les règles globales viennent en dernier.

Certaines exigences suivent des règles de fusion propres à chaque champ. Consultez la Configuration gérée et la Référence de configuration pour connaître les champs pris en charge et les limites à l’exécution. Ne présumez pas que Work Cloud prend en charge les profils d’autorisations Codex présentés ici.

Les profils d’autorisations définissent les limites dans lesquelles les commandes locales peuvent s’exécuter dans le bac à sable. Utilisez-les conjointement avec les politiques d’approbation et les contrôles distincts de la recherche web, des connecteurs, des serveurs MCP, du navigateur intégré, de la fonctionnalité Utilisation de l’ordinateur et de Codex Cloud.

Ce que contrôlent les profils

  • Exécution de commandes locales : les profils d’autorisations régissent les commandes exécutées dans le bac à sable sur votre machine. Les connecteurs, les serveurs MCP, les interfaces de navigation ou d’utilisation de l’ordinateur, les paramètres des environnements Codex Cloud et les élévations de privilèges approuvées disposent de leurs propres contrôles.
  • Écriture dans le système de fichiers : un profil autorisant l’écriture peut apporter des modifications persistantes. Traitez avec précaution les écritures dans les scripts, les étapes de compilation, les hooks des gestionnaires de paquets, les fichiers de démarrage du shell et les répertoires partagés. D’autres outils ou utilisateurs pourront ensuite exécuter ces fichiers hors du bac à sable d’origine.
  • Destinations sortantes : les règles relatives aux domaines limitent les destinations du trafic des commandes exécutées dans le bac à sable uniquement lorsque le proxy réseau est actif. Elles ne garantissent pas la fiabilité d’une destination autorisée. Les règles d’autorisation qui utilisent des caractères génériques conservent une portée étendue.
  • Services locaux : un proxy réseau actif bloque par défaut les destinations des réseaux locaux et privés. Ajouter localhost, des adresses IP privées ou des sockets Unix à la liste des autorisations, ou définir allow_local_binding = true, ouvre explicitement l’accès à des services locaux.

Ce qui échappe au contrôle du proxy réseau

Le proxy réseau filtre uniquement le trafic des commandes locales exécutées dans le bac à sable. Il n’applique pas la liste des domaines autorisés du profil aux fonctionnalités suivantes :

  • Recherche web : l’outil de recherche hébergé dispose de ses propres paramètres d’accès. Utilisez web_search et, pour les clients gérés, allowed_web_search_modes pour le contrôler. tools.web_search.allowed_domains filtre les résultats de recherche sans agir sur l’accès des commandes au réseau.
  • Applications et connecteurs : les outils qui s’appuient sur des connecteurs utilisent leurs propres connexions côté service, les autorisations de leur espace de travail et les paramètres de l’application ou de l’outil.
  • Serveurs MCP : les serveurs MCP locaux et distants utilisent leur propre processus ou mécanisme de transport. Contrôlez-les à l’aide de la configuration mcp_servers et des listes gérées de serveurs autorisés.
  • Navigateur et Utilisation de l’ordinateur : la navigation et les actions effectuées sur l’ordinateur disposent de leurs propres contrôles d’activation et d’approbation.
  • Trafic des services Codex : les requêtes du client destinées aux modèles, à l’authentification et aux autres services utilisent les paramètres HTTP et de proxy système distincts du client.
  • Codex Cloud : ces tâches utilisent les paramètres réseau de leur environnement. Codex Cloud (ancienne version) dispose de paramètres d’accès à Internet distincts.

Pour restreindre ces fonctionnalités, configurez chacune d’elles directement. La liste des destinations réseau autorisées pour les commandes ne constitue pas une politique réseau globale couvrant toutes les actions de Codex.

Application des restrictions selon la plateforme

  • Sur macOS, Codex utilise les profils de bac à sable Seatbelt. Si le bac à sable de la plateforme ne peut pas faire respecter la politique sélectionnée, Codex refuse d’exécuter la commande au lieu de l’exécuter hors du bac à sable sans avertissement.
  • Sur Linux et WSL, Codex utilise bubblewrap et seccomp pour appliquer les restrictions du système de fichiers. L’ancienne option Landlock ne peut pas isoler les sockets Unix d’app-server. Codex la refuse donc pour les politiques qui restreignent l’accès au système de fichiers. Désactivez features.use_legacy_landlock lors de la mise à niveau. Les hôtes qui bloquent les opérations requises par bubblewrap ne peuvent pas appliquer ces politiques.
  • Sur Windows, MXC utilise l’isolation des processus pour appliquer les autorisations du système de fichiers et du réseau. Vérifiez la compatibilité de MXC avant de l’activer. L’ancien mode de repli elevated s’appuie sur des comptes dédiés au bac à sable aux privilèges réduits, des restrictions d’accès au système de fichiers et des règles de pare-feu. L’ancien mode de repli unelevated offre une isolation réseau plus faible et ne peut pas appliquer toutes les exceptions qui distinguent lecture et écriture. Codex refuse donc les politiques non prises en charge. Utilisez WSL si vous avez besoin du modèle de bac à sable de Linux.

Conseils d’utilisation

Choisissez le profil le plus restrictif qui permette de mener la tâche à bien, en particulier si vous autorisez l’écriture ou l’accès sortant au réseau. Adaptez la politique d’approbation, la gestion des secrets et les règles d’autorisation à ce niveau d’accès.

Profils courants

Lecture seule avec une liste de domaines réseau autorisés

default_permissions = "readonly-net"

[features]
network_proxy = true

[permissions.readonly-net.filesystem]
":minimal" = "read"

[permissions.readonly-net.filesystem.":workspace_roots"]
"." = "read"

[permissions.readonly-net.network]
enabled = true

[permissions.readonly-net.network.domains]
"api.openai.com" = "allow"

Accès aux fichiers limité à l’espace de travail

Ce profil d’autorisations permet à Codex d’écrire dans les répertoires de votre espace de travail tout en lui interdisant de lire le reste du système de fichiers, à quelques exceptions près définies par :minimal.

default_permissions = "workspace-only"

[permissions.workspace-only]
# By extending the :workspace profile, you get Codex's safeguards to ensure
# paths such as .git/, .agents/, .codex/, and .aws/ within a workspace root
# are read-only while the rest of the folder is writable.
extends = ":workspace"

[permissions.workspace-only.filesystem]
# By default, deny read access to all files on disk.
":root" = "deny"

# Though in practice, a software agent needs to be able to read folders that
# contain common tools, such as `/usr/bin`, to get work done, so grant access
# to a "minimal" set of files and folders, as determined by Codex.
":minimal" = "read"

# By extending the :workspace profile, :tmpdir and :slash_tmp are "write" by
# default, though you can deny access to them altogether, if desired.
":tmpdir" = "deny"
":slash_tmp" = "deny"

Écriture dans l’espace de travail sans accès au réseau

default_permissions = "project-edit"

[permissions.project-edit.filesystem]
":minimal" = "read"

[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"

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

Écriture dans l’espace de travail avec accès au Web public

default_permissions = "workspace-net"

[features]
network_proxy = true

[permissions.workspace-net.filesystem]
":minimal" = "read"

[permissions.workspace-net.filesystem.":workspace_roots"]
"." = "write"

[permissions.workspace-net.network]
enabled = true

[permissions.workspace-net.network.domains]
"*" = "allow"

Utilisez la règle d’autorisation globale "*" uniquement si vous souhaitez autoriser l’accès au réseau public. Des règles d’interdiction permettent de restreindre la portée d’une liste d’autorisations étendue.