ChatGPT Work et Codex peuvent lancer des agents spécialisés en parallèle, puis réunir leurs résultats dans une seule réponse. Ces workflows de sous-agents peuvent être particulièrement utiles pour les tâches complexes dont plusieurs volets peuvent avancer en parallèle, comme l’exploration du code source ou la mise en œuvre d’une fonctionnalité selon un plan en plusieurs étapes.
Dans les clients Codex locaux, vous pouvez aussi définir des agents personnalisés et adapter les paramètres du modèle et les instructions de chaque agent à sa tâche.
Disponibilité
Dans ChatGPT Work, les comptes éligibles peuvent utiliser des workflows de sous-agents et suivre leur activité.
Les versions actuelles de Codex activent par défaut les workflows de sous-agents. L’activité des sous-agents s’affiche dans l’application de bureau ChatGPT, la CLI Codex et l’extension pour IDE.
Chaque sous-agent effectue ses propres appels au modèle et aux outils. Un workflow de sous-agents consomme donc plus de tokens qu’une exécution comparable avec un seul agent.
Dans ChatGPT Work, demandez à ChatGPT de déléguer les tâches indépendantes à des sous-agents. Ces agents s’exécutent dans l’environnement hébergé de ChatGPT. La discussion affiche leur activité et leurs résultats. Pour la plupart des niveaux d’intelligence, demandez explicitement cette délégation. Avec Ultra, ChatGPT peut déléguer de sa propre initiative si le travail en parallèle apporte un gain appréciable de temps ou de qualité.
Dans une discussion de l’application, demandez à Codex de confier les tâches indépendantes à des sous-agents. Les versions locales actuelles de Codex délèguent les tâches lorsque vous le demandez directement ou lorsque les instructions applicables d’un fichier AGENTS.md ou d’un skill le demandent. L’application affiche le fil de chaque sous-agent. Vous pouvez y consulter son travail et le résumé qu’il renvoie à la discussion principale.
Dans une session CLI interactive, demandez à Codex d’utiliser des sous-agents. Codex peut aussi déléguer des tâches si les instructions applicables d’un fichier AGENTS.md ou d’un skill le demandent. Utilisez /subagents pour consulter les fils des agents et passer de l’un à l’autre pendant l’exécution. Le fil principal rassemble les résultats des sous-agents dans sa réponse finale.
Dans une discussion de l’IDE, demandez à Codex de confier les tâches indépendantes à des sous-agents. Codex peut aussi déléguer des tâches si les instructions applicables d’un fichier AGENTS.md ou d’un skill le demandent. Lorsque l’interface des agents en arrière-plan est disponible, les sous-agents actifs apparaissent au-dessus de la zone de saisie. Dépliez le panneau pour consulter leur état, arrêter tous les sous-agents actifs ou ouvrir le fil de l’un d’eux.
Pourquoi utiliser des workflows de sous-agents ?
Même avec une grande fenêtre de contexte, un modèle a ses limites. C’est dans la discussion principale que vous précisez les exigences, les contraintes et les décisions. Si vous l’encombrez de résultats intermédiaires comme des notes d’exploration, des journaux de tests, des traces de pile ou des sorties de commandes, la session risque de perdre en fiabilité au fil des échanges.
On parle souvent de deux phénomènes :
- Pollution du contexte : les informations utiles se retrouvent noyées dans les résultats intermédiaires.
- Dégradation du contexte : les performances diminuent à mesure que la discussion se remplit de détails moins pertinents.
Pour en savoir plus, consultez l’article de Chroma sur la dégradation du contexte.
Les workflows de sous-agents permettent de traiter ces résultats intermédiaires en dehors du fil principal :
- Gardez l’agent principal concentré sur les exigences, les décisions et les livrables finaux.
- Lancez des sous-agents spécialisés en parallèle pour explorer le code, exécuter des tests ou analyser des journaux.
- Demandez aux sous-agents de renvoyer des résumés plutôt que leurs résultats intermédiaires bruts.
Vous pouvez ainsi gagner du temps lorsque les tâches peuvent avancer indépendamment les unes des autres. Découper un travail de grande ampleur en tâches bien délimitées le rend aussi plus facile à mener. Par exemple, Codex peut décomposer l’analyse d’un document de plusieurs millions de tokens en questions plus ciblées et renvoyer les conclusions essentielles au fil principal.
Pour commencer, utilisez des agents en parallèle pour les tâches qui demandent surtout de lire et d’analyser, comme l’exploration, les tests, le triage ou la synthèse. Prenez davantage de précautions avec les workflows qui comportent beaucoup de modifications : si plusieurs agents modifient le code en même temps, leurs changements peuvent entrer en conflit et nécessiter davantage de coordination.
Terminologie
Codex utilise plusieurs termes liés aux workflows de sous-agents :
- Workflow de sous-agents : Codex lance des agents en parallèle et combine leurs résultats.
- Sous-agent : agent que Codex lance pour lui confier une tâche précise.
- Fil d’agent : fil dans lequel un sous-agent effectue son travail. Les clients compatibles vous permettent d’ouvrir ces fils pour consulter l’avancement ou les résultats.
Déclenchement des workflows de sous-agents
Pour la plupart des niveaux d’intelligence, demandez explicitement à ChatGPT d’utiliser des sous-agents ou de faire travailler des agents en parallèle. Avec Ultra, ChatGPT peut prendre l’initiative de déléguer les tâches indépendantes qui s’y prêtent, sans demande supplémentaire de votre part.
Demandez explicitement à Codex d’utiliser des sous-agents ou de faire travailler des agents en parallèle. Codex peut aussi déléguer des tâches si les instructions applicables du projet ou d’un skill le demandent.
Pour déclencher vous-même un workflow, donnez une instruction directe comme « Lancez deux agents », « Répartissez ce travail entre des agents en parallèle » ou « Utilisez un agent par point ». Un workflow de sous-agents consomme plus de tokens qu’une exécution comparable avec un seul agent, car chaque sous-agent effectue ses propres appels au modèle et aux outils.
Dans votre prompt, précisez comment répartir le travail, si Codex doit attendre tous les agents avant de poursuivre et quel résumé ou résultat vous attendez.
Passez cette branche en revue avec des sous-agents travaillant en parallèle. Lancez un sous-agent pour examiner les risques de sécurité, un autre pour repérer les lacunes dans les tests et un troisième pour évaluer la maintenabilité du code. Attendez que les trois aient terminé, puis résumez leurs constats par catégorie en citant les fichiers concernés.
Choix du modèle et de l’effort de raisonnement
Adaptez le choix du modèle et les paramètres de raisonnement au rôle de chaque agent.
Dans ChatGPT Work, choisissez un modèle et un niveau d’intelligence dans la zone de saisie. Selon le modèle sélectionné, les niveaux proposés peuvent inclure Léger, Moyen, Élevé, Très élevé et Max. Ultra est disponible uniquement pour les comptes éligibles et les modèles compatibles. Ce niveau mobilise l’effort de raisonnement maximal et permet à ChatGPT de confier de sa propre initiative aux sous-agents les tâches qui s’y prêtent.
Aux autres niveaux d’intelligence, demandez explicitement des sous-agents lorsque vous souhaitez déléguer des tâches en parallèle.
Si vous ne configurez ni le modèle du sous-agent ni model_reasoning_effort, le sous-agent hérite du modèle et de l’effort de raisonnement de l’agent parent. Si la demande de lancement ou un paramètre par défaut de [agents] spécifie un modèle sans qu’un effort de raisonnement soit demandé ou configuré, le sous-agent utilise l’effort par défaut de ce modèle. Pour trouver le bon équilibre entre intelligence, rapidité et coût pour chaque tâche, indiquez un modèle ou un effort de raisonnement dans votre prompt, configurez les valeurs par défaut de [agents] dans config.toml ou définissez model et model_reasoning_effort directement dans le fichier de l’agent personnalisé.
Par exemple, utilisez gpt-6-luna pour une analyse rapide ou configurez gpt-6.1-sol avec un effort plus élevé pour les tâches qui exigent un raisonnement plus poussé.
Pour la plupart des tâches dans Codex, commencez par
gpt-6.1-sol si le compte avec lequel vous êtes connecté ou votre espace de travail a accès à ce modèle.
Sinon, choisissez un modèle auquel vous avez accès. Utilisez gpt-6-luna si vous recherchez une option plus rapide et moins coûteuse pour les tâches simples des sous-agents.
Choix du modèle
gpt-6.1-sol: commencez par ce modèle pour les agents chargés de tâches exigeantes. Utilisez-le pour les tâches aux contours incertains qui comportent plusieurs étapes et nécessitent de planifier le travail, d’utiliser des outils, de valider les résultats et de mener le travail à terme en tenant compte d’un contexte étendu.gpt-6-luna: utilisez ce modèle pour les agents qui doivent traiter rapidement des tâches ciblées, bien définies, répétitives ou nombreuses.
Effort de raisonnement (model_reasoning_effort)
Pour GPT-6.1 Sol, utilisez un effort de raisonnement pris en charge par votre client et le modèle sélectionné. Si vous configurez explicitement le modèle, commencez par high pour GPT-6 Luna ou low pour GPT-6 Astra. Adaptez ensuite l’effort à la tâche en choisissant un niveau pris en charge par le modèle.
ultra: choisissez ce niveau pour le raisonnement le plus approfondi si le modèle sélectionné le prend en charge.maxetxhigh: utilisez ces niveaux pour les tâches de raisonnement particulièrement exigeantes si le modèle sélectionné les prend en charge.high: utilisez ce niveau si l’agent doit suivre une logique complexe, vérifier des hypothèses ou examiner des cas limites, par exemple pour une revue de code ou une analyse de sécurité.medium: ce niveau offre un équilibre entre rapidité et profondeur du raisonnement.low: utilisez ce niveau pour une tâche simple où la rapidité prime.
Un effort de raisonnement plus élevé augmente le temps de réponse et la consommation de tokens, mais peut améliorer la qualité des résultats pour les tâches complexes. Pour en savoir plus, consultez les pages Modèles, Principes de configuration et Référence de configuration.
Orchestration et gestion des fils
ChatGPT ou Codex coordonne les agents : il lance les sous-agents, transmet les instructions complémentaires aux agents concernés, attend les résultats et ferme les fils des agents.
Lorsque plusieurs agents travaillent en parallèle, Codex attend que tous les résultats demandés soient disponibles, puis les rassemble dans une seule réponse.
Pour la plupart des niveaux d’intelligence, ChatGPT lance des agents lorsque vous le demandez explicitement. Avec Ultra, ChatGPT peut aussi prendre l’initiative de déléguer des tâches lorsque le travail en parallèle présente un intérêt.
Les versions locales actuelles de Codex lancent des agents lorsque vous le demandez explicitement ou lorsque les instructions applicables du projet ou d’un skill le demandent.
Pour voir comment cela fonctionne, essayez ce prompt sur votre projet :
Je souhaite examiner les points suivants pour la pull request en cours en comparant cette branche à main. Lancez un agent par point, attendez que tous aient terminé, puis résumez le résultat pour chaque point.
1. Problèmes de sécurité
2. Qualité du code
3. Bugs
4. Conditions de concurrence
5. Tests qui échouent de façon intermittente
6. Maintenabilité du code
Gestion des sous-agents
Ouvrez Sous-agents pour consulter les listes Actifs et Terminés, en lecture seule. Sélectionnez un sous-agent qui a terminé son travail pour en consulter les détails et le résultat. La barre latérale de l’interface web affiche l’activité des sous-agents. Elle ne permet pas d’arrêter un sous-agent ni de lui donner de nouvelles instructions.
- Dans le fil principal, ouvrez le fil d’un sous-agent à partir de l’activité affichée pour consulter son travail.
- Demandez directement à Codex de donner de nouvelles instructions à un sous-agent en cours d’exécution, de l’arrêter ou de fermer les fils des sous-agents qui ont terminé leur travail.
- Dans la CLI, utilisez
/subagentspour passer d’un fil d’agent actif à l’autre et consulter le travail en cours. - Demandez directement à Codex de donner de nouvelles instructions à un sous-agent en cours d’exécution, de l’arrêter ou de fermer les fils des agents qui ont terminé leur travail.
- Si le panneau des agents en arrière-plan est disponible, dépliez-le pour consulter leur état, arrêter les sous-agents actifs ou ouvrir le fil d’un sous-agent.
- Demandez directement à Codex de donner de nouvelles instructions à un sous-agent en cours d’exécution, de l’arrêter ou de fermer les fils des sous-agents qui ont terminé leur travail.
Approbations et paramètres du bac à sable
Les sous-agents héritent de la politique de bac à sable en vigueur dans votre session.
ChatGPT Work exécute les sous-agents dans son environnement hébergé. Il ne donne pas accès à un bac à sable Codex local ni au choix du mode d’approbation. Les sous-agents utilisent les outils disponibles dans la discussion parente. Les autorisations relatives aux sites web et aux connecteurs sont propres à chaque outil.
Les sous-agents héritent du mode d’autorisation sélectionné sous la zone de saisie. Choisissez le mode d’autorisation du tour parent avant de demander à Codex de déléguer des tâches.
Dans les sessions CLI interactives, des demandes d’approbation provenant de fils d’agents inactifs peuvent s’afficher même si vous consultez le fil principal. Le panneau d’approbation indique le nom du fil à l’origine de la demande. Appuyez sur o pour ouvrir ce fil avant d’approuver ou de rejeter la demande, ou d’y répondre.
Dans un workflow non interactif, ou chaque fois qu’une exécution ne permet pas d’afficher une nouvelle demande d’approbation, toute action qui exige une nouvelle approbation échoue. Codex transmet alors l’erreur au workflow parent.
Les sous-agents héritent des paramètres de bac à sable et d’approbation en vigueur pour le tour parent, y compris des modifications apportées avec /permissions ou --yolo. Un fichier d’agent personnalisé ne peut pas remplacer ces paramètres.
Les sous-agents héritent du mode d’autorisation sélectionné sous la zone de saisie. Choisissez le mode d’autorisation du tour parent avant de demander à Codex de déléguer des tâches.
Réglez les paramètres de bac à sable et d’approbation dans la session parente. Les instructions d’un agent personnalisé peuvent lui demander de ne pas modifier les fichiers, mais elles ne créent pas de bac à sable distinct en lecture seule.
Agents personnalisés
Codex fournit les agents intégrés suivants :
default: agent généraliste utilisé par défaut.worker: agent chargé de la mise en œuvre et des corrections.explorer: agent qui explore le code source principalement en lisant les fichiers.
Pour définir vos propres agents, ajoutez des fichiers TOML autonomes dans ~/.codex/agents/ pour vos agents personnels ou dans .codex/agents/ pour les agents propres au projet.
Chaque fichier définit un agent personnalisé. Vous pouvez y modifier les paramètres du modèle et les instructions, ou désactiver certaines fonctionnalités prises en charge. Les agents personnalisés héritent des autorisations, du fournisseur et des serveurs MCP de l’agent parent. Leur fichier ne peut pas remplacer ces paramètres.
Chaque fichier d’agent personnalisé autonome doit définir les champs suivants :
namedescriptiondeveloper_instructions
Si le fichier d’un agent personnalisé définit model ou model_reasoning_effort, la valeur du fichier est prioritaire. Avant d’appliquer le fichier, Codex détermine la valeur de chaque paramètre dans l’ordre suivant : la valeur indiquée au lancement, puis la valeur par défaut correspondante dans [agents], puis la valeur de l’agent parent. Si la demande de lancement ou une valeur par défaut de [agents] spécifie un modèle et qu’aucune des deux ne précise l’effort de raisonnement, Codex utilise l’effort par défaut du modèle. Un fichier d’agent personnalisé qui définit uniquement model conserve l’effort déterminé à l’étape précédente. Définissez aussi model_reasoning_effort dans le fichier si le modèle sélectionné ne prend pas en charge cet effort ou si vous souhaitez en utiliser un autre. Les agents personnalisés héritent des skills du parent et peuvent en désactiver individuellement avec skills.config.
Paramètres globaux
Les paramètres globaux des sous-agents se trouvent toujours dans la section [agents] de votre configuration.
| Champ | Type | Obligatoire | Rôle |
|---|---|---|---|
agents.enabled |
booléen | Non | Active ou désactive les outils multi-agents. |
agents.max_concurrent_threads_per_session |
nombre | Non | Limite le nombre de fils d’agents lancés qui peuvent être ouverts simultanément, hors fil principal. |
agents.default_subagent_model |
chaîne | Non | Définit le modèle par défaut des agents lancés. |
agents.default_subagent_reasoning_effort |
chaîne | Non | Définit l’effort de raisonnement par défaut des agents lancés. |
agents.interrupt_message |
booléen | Non | Enregistre un message visible par le modèle lorsque le tour d’un agent est interrompu. |
Remarques :
agents.enabledvauttruepar défaut. Définissez-le surfalsepour désactiver les outils multi-agents.- Si vous ne définissez pas
agents.max_concurrent_threads_per_session, Codex choisit la valeur par défaut. Les configurations existantes peuvent continuer à utiliser l’ancien aliasagents.max_threads. - Les valeurs indiquées au lancement ont priorité sur
agents.default_subagent_modeletagents.default_subagent_reasoning_effort. agents.interrupt_messagevauttruepar défaut. Définissez-le surfalsepour exclure du contexte de l’agent le message d’interruption destiné au modèle.- Si un agent personnalisé porte le même nom qu’un agent intégré comme
explorer, l’agent personnalisé est prioritaire.
Schéma du fichier d’agent personnalisé
| Champ | Type | Obligatoire | Rôle |
|---|---|---|---|
name |
chaîne | Oui | Nom que Codex utilise pour lancer l’agent ou le désigner. |
description |
chaîne | Oui | Description destinée aux utilisateurs qui précise quand Codex doit faire appel à cet agent. |
developer_instructions |
chaîne | Oui | Instructions principales qui définissent le comportement de l’agent. |
Utilisez model, model_reasoning_effort, model_reasoning_summary et model_verbosity pour personnaliser le comportement du modèle. Consultez la référence de configuration pour connaître les valeurs acceptées.
Pour limiter les capacités d’un agent personnalisé, définissez les clés des fonctionnalités prises en charge sur false : features.shell_tool, features.apps, features.plugins, features.memories ou features.request_permissions_tool. Désactivez des skills individuellement avec skills.config ou désactivez les skills intégrés avec skills.bundled.enabled = false. Définissez skills.include_instructions = false pour omettre le bloc d’instructions des skills ajouté automatiquement. Les exigences imposées par la configuration gérée continuent de s’appliquer.
Les autres paramètres de session, notamment sandbox_mode, approval_policy, model_provider et mcp_servers, ne remplacent pas la configuration parente si vous les définissez dans le fichier d’un agent personnalisé. L’offre de service suit également la préférence de la session racine. Configurez les serveurs MCP dans la session parente pour que l’agent puisse les utiliser.
Codex identifie l’agent personnalisé par son champ name. Le plus simple est de donner au fichier le même nom qu’à l’agent, mais c’est le champ name qui fait foi.
Exemples d’agents personnalisés
Les agents personnalisés les plus efficaces ont un rôle précis et une méthode de travail bien définie. Attribuez à chacun une tâche claire, des outils adaptés et des instructions qui l’aident à rester dans son périmètre.
Les exemples utilisent GPT-6.1 Sol si le compte avec lequel vous êtes connecté ou votre espace de travail y a accès. Sinon, choisissez un modèle auquel vous avez accès.
Exemple 1 : revue de code d’une pull request
Cet exemple répartit la revue entre trois agents personnalisés spécialisés :
pr_explorercartographie le code source et recueille des éléments concrets pour la revue.reviewerrecherche les erreurs de logique, les risques de sécurité et les lacunes dans les tests.docs_researchervérifie la documentation des frameworks ou des API à l’aide d’un serveur MCP dédié.
Configuration du projet (.codex/config.toml) :
[agents]
max_concurrent_threads_per_session = 8
[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp".codex/agents/pr-explorer.toml :
name = "pr_explorer"
description = "Read-only codebase explorer for gathering evidence before changes are proposed."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Stay in exploration mode.
Do not edit files.
Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them.
Prefer fast search and targeted file reads over broad scans.
""".codex/agents/reviewer.toml :
name = "reviewer"
description = "PR reviewer focused on correctness, security, and missing tests."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Review code like an owner.
Do not edit files.
Prioritize correctness, security, behavior regressions, and missing test coverage.
Lead with concrete findings, include reproduction steps when possible, and avoid style-only comments unless they hide a real bug.
""".codex/agents/docs-researcher.toml :
name = "docs_researcher"
description = "Documentation specialist that uses the docs MCP server to verify APIs and framework behavior."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Use the docs MCP server to confirm APIs, options, and version-specific behavior.
Return concise answers with links or exact references when available.
Do not make code changes.
"""Cette configuration convient à des prompts comme celui-ci :
Passez en revue les modifications de cette branche par rapport à main. Demandez à pr_explorer de retracer les chemins d’exécution concernés, à reviewer d’identifier les risques concrets et à docs_researcher de vérifier les API du framework dont dépend le correctif.Exemple 2 : débogage d’une intégration frontend
Cette répartition convient aux régressions d’interface, aux parcours qui échouent de façon intermittente dans le navigateur ou aux bugs d’intégration qui touchent à la fois le code de l’application et le produit en cours d’exécution.
Configuration du projet (.codex/config.toml) :
[agents]
max_concurrent_threads_per_session = 6
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
startup_timeout_sec = 20.codex/agents/code-mapper.toml :
name = "code_mapper"
description = "Read-only codebase explorer for locating the relevant frontend and backend code paths."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Map the code that owns the failing UI flow.
Do not edit files.
Identify entry points, state transitions, and likely files before the worker starts editing.
""".codex/agents/browser-debugger.toml :
name = "browser_debugger"
description = "UI debugger that uses browser tooling to reproduce issues and capture evidence."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Reproduce the issue in the browser, capture exact steps, and report what the UI actually does.
Use browser tooling for screenshots, console output, and network evidence.
Do not edit application code.
""".codex/agents/ui-fixer.toml :
name = "ui_fixer"
description = "Implementation-focused agent for small, targeted fixes after the issue is understood."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Own the fix once the issue is reproduced.
Make the smallest defensible change, keep unrelated files untouched, and validate only the behavior you changed.
"""
[[skills.config]]
path = "/Users/me/.agents/skills/docs-editor/SKILL.md"
enabled = falseCette configuration convient à des prompts comme celui-ci :
Cherchez pourquoi l’enregistrement échoue dans la fenêtre modale des paramètres. Demandez à browser_debugger de reproduire le problème et à code_mapper de retracer le chemin d’exécution en cause. Une fois le mécanisme de l’échec compris, demandez à ui_fixer d’appliquer le plus petit correctif possible.