Claude Code et Codex avec /goal : travailler en autonomie
MarkdownLa commande /goal de Claude Code 2.1.139 et Codex CLI permet à un agent IA de travailler de façon autonome pendant des heures. J’explique la configuration, donne des exemples réels et indique combien de tokens cela coûte.
Lire l’article complet
À retenir
La commande /goal est apparue dans Claude Code 2.1.139 (11 mai 2026) et Codex CLI 0.128.0 (30 avril 2026, stable depuis le 21 mai). Vous définissez une fois le critère de fin, puis l’agent enchaîne de lui-même planification, action et vérification jusqu’à ce que le critère soit rempli ou qu’il n’ait plus de tokens. OpenAI a montré publiquement une session de 25 heures utilisant 13 millions de tokens. Cette approche convient aux migrations, aux benchmarks et aux refactorisations assortis de critères mesurables. Elle ne convient pas aux tâches d’interface, aux bases de données de production ni aux demandes vagues comme « améliore ça ».
Vous trouverez des informations sur l’utilisation d’Ailoot dans la documentation.
Qu’est-ce que /goal et pourquoi cette commande est-elle apparue en 2026 ?
À retenir
Avant /goal, chaque tour de l’agent nécessitait un « continue » manuel. Il ouvrait un fichier, le lisait, écrivait quelque chose, s’arrêtait et attendait. La commande /goal définit une fois un critère d’achèvement : l’agent décide lui-même quand la tâche est terminée et ne vous rend la main qu’une fois le travail achevé.
Voici le scénario que nous avons tous connu avant avril 2026 : je confie à Claude la tâche suivante : « migre le projet de Pydantic v1 vers v2 ». Il commence, s’arrête au bout de 30 secondes, je regarde ce qu’il a fait, j’écris « continue », il passe à l’étape suivante, s’arrête, et j’écris de nouveau « continue ». Pour une migration importante, cela signifie 200–300 « continue » manuels. En pratique, je surveille l’agent au lieu d’écrire en parallèle d’autres lignes de code.
Selon l’analyse d’OpenAI, le problème ne venait pas de la « bêtise » du modèle, mais de l’architecture de la boucle. Le modèle ne savait pas quand s’arrêter et levait donc le pied à chaque tour. Donnez-lui un critère de fin, et il décidera lui-même.
C’est ainsi qu’est né /goal : un mécanisme intégré au harness, et non au modèle.
Cette remarque a été faite lors de la conférence Code with Claude, à Londres, les 19 et 20 mai 2026. Elle décrit ce qui s’est réellement passé au cours du mois qui a suivi le lancement de /goal dans les deux outils.
Comment configurer le mode Goal dans Claude Code ?
À retenir
Claude Code 2.1.139 est sorti le 11 mai 2026 avec la commande /goal. Un petit modèle (Haiku par défaut) vérifie le critère après chaque tour. Si le critère n’est pas rempli, Claude effectue un nouveau tour. Le critère peut compter jusqu’à 4 000 caractères, et une session ne peut avoir qu’un seul objectif.
Un exemple minimal tiré de la documentation officielle d’Anthropic :
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
Cette commande lance l’agent en arrière-plan avec un seul objectif. Claude trouve les PR, les compare à CHANGELOG.md, ajoute les lignes manquantes et s’arrête lorsque le critère est rempli.
En mode interactif, saisissez simplement /goal, suivi de la condition :
/goal all pytest tests pass and mypy strict reports zero errors
Voici ce que Claude fait ensuite :
- Après chaque tour, un modèle rapide distinct (Haiku par défaut) reçoit la condition actuelle et l’historique de la conversation
- Ce modèle répond « oui » ou « non », avec une brève justification
- Si la réponse est « non », Claude effectue automatiquement un nouveau tour sans vous rendre la main
- Si la réponse est « oui », l’objectif est effacé et vous reprenez la main
Après chaque tour, un petit modèle rapide vérifie si la condition a été remplie. Si ce n’est pas le cas, Claude lance un nouveau tour sans vous rendre la main.
Les limites strictes dont on ne vous parle que lorsqu’on les rencontre :
/goalne fonctionne que dans les répertoires de travail pour lesquels la boîte de dialogue de confiance a été validée. Sur une nouvelle machine, la commande échouera si Claude n’a pas encore mémorisé ce répertoire- Dans les environnements d’entreprise utilisant
disableAllHooksouallowManagedHooksOnly, la commande n’est pas disponible - La condition peut compter jusqu’à 4 000 caractères
- Un seul objectif peut être actif par session. Une nouvelle commande
/goalréinitialise l’ancien objectif - Avec
--resume, la condition est conservée, mais les compteurs de tours, de temps et de tokens sont réinitialisés
Commandes de contrôle :
/goalsans argument — afficher l’état actuel/goal clear(oustop,off,reset,none,cancel) — effacer l’objectif
Selon Anthropic, le coût de l’évaluateur est « généralement négligeable par rapport à celui du tour principal ». Haiku évalue le critère et le texte de la conversation sans appeler d’outils, donc cette vérification est peu coûteuse ; les tours du modèle principal constituent la partie onéreuse.
Comment configurer /goal dans Codex CLI ?
À retenir
Codex CLI 0.128.0 a ajouté /goal le 30 avril 2026 comme fonctionnalité expérimentale. Le 21 mai, ce mode est devenu stable avec la version 26.519 / npm 0.133.0. Il s’appuie sur deux modèles de prompt : continuation.md (« continuer ») et budget_limit.md (« arrêter »). L’objectif est associé au thread et survit aux redémarrages.
La commande ressemble à celle de Claude :
codex
> /goal all vitest tests pass and there are no eslint errors
Codex offre davantage de commandes de gestion des objectifs :
| Commande | Fonction |
|---|---|
/goal condition | définir un objectif |
/goal | consulter l’état |
/goal pause | mettre en pause |
/goal resume | reprendre |
/goal edit | modifier la condition (avec GA) |
/goal clear | effacer l’objectif |
La principale différence avec Claude est que Codex vérifie lui-même s’il a « terminé », au lieu de faire appel à un modèle distinct. Après chaque tour, Codex insère automatiquement dans le contexte le modèle continuation.md du dépôt openai/codex. Traduction littérale :
« Continue à travailler en direction de l’objectif actif du thread. Ne répète pas les tâches déjà effectuées. Choisis la prochaine action concrète qui rapproche de l’objectif. Ne considère l’objectif comme atteint que lorsqu’un audit montre qu’il l’est réellement et qu’il ne reste aucune tâche nécessaire. »
Lorsque les tokens approchent de leur limite, un second modèle, budget_limit.md, est inséré :
« L’objectif a atteint sa limite de tokens. Ne commence pas de travail conséquent. Termine ce tour dès que possible : résume les progrès utiles, indique le travail restant et les blocages, puis donne à l’utilisateur une prochaine étape claire. »
La logique est la même : « ne mens pas sur ce que tu as fait ». La continuation impose de continuer uniquement si l’objectif n’a pas réellement été atteint. budget_limit impose de s’arrêter, tout en décrivant honnêtement ce qu’il reste à faire.
Contrairement à Claude, Codex associe l’objectif au thread, et non à la session. Par exemple, vous pouvez fermer le terminal puis le rouvrir le matin, et /goal resume reprend le même objectif avec les mêmes informations en mémoire. Cette fonction est utile pour répartir les sessions selon son propre emploi du temps.
Quelle est la différence entre /goal dans Claude Code et /goal dans Codex ?
À retenir
Claude sépare l’auteur du juge : le modèle principal écrit le code, tandis qu’un petit modèle distinct le juge. Codex est un agent unique qui vérifie son propre travail et se rappelle : « ne mens pas sur ce que tu as fait ». Les architectures diffèrent, mais le risque de boucle est le même.
C’est la différence la plus souvent négligée dans les comparaisons. Examinons-la en détail.
| Aspect | Claude Code /goal | Codex /goal |
|---|---|---|
| Version de sortie | v2.1.139, 11 mai 2026 | v0.128.0, 30 avril 2026 (expérimental) → v0.133.0 / 26.519, 21 mai 2026 (stable) |
| Portée de l’objectif | Session | Thread (survit aux redémarrages) |
| Commandes | set, clear (+ alias) | set, view, pause, resume, edit, clear |
| Qui vérifie si c’est « terminé » | Modèle distinct (Haiku par défaut) | Le même agent, au moyen d’un prompt inséré |
| Accès de l’évaluateur aux fichiers | Non ; il juge uniquement à partir du texte de la conversation | Oui ; il peut examiner les fichiers, les tests et les logs |
| Budget | Dans le texte de la condition : « ou arrête-toi après 20 tours » | Limite de tokens intégrée + insertion automatique de budget_limit.md |
| Plafond de dépense strict | Aucun ; limite de l’abonnement uniquement | Aucun ; limite de l’abonnement uniquement |
| Longueur de la condition | Jusqu’à 4 000 caractères | Non précisée |
| Où il fonctionne | Mode interactif, -p, application de bureau, Remote Control | Application, extension IDE, CLI, clients ACP |
La différence conceptuelle est que Claude traite la boucle comme un contrat de qualité (un évaluateur externe), tandis que Codex la traite comme un mécanisme d’exécution (l’agent se gère lui-même).
En pratique, si vous voulez que le critère de fin soit évalué de façon impartiale, choisissez Claude. Si vous voulez que l’agent puisse examiner les fichiers et les logs pendant l’évaluation, choisissez Codex.
Pour en savoir plus sur les outils eux-mêmes, consultez le guide Codex vs Claude Code.
Exemple réel : migrer de Pydantic v1 à v2 en 31 heures
À retenir
Codex /goal a achevé la migration de 14 000 lignes d’un service interne de Pydantic v1 à v2 en 31 heures réelles, réparties sur quatre sessions. Le coût s’élevait à environ 44 $ avec gpt-5.3-codex.
La tâche était formulée ainsi : « migre de Pydantic v1 à v2 ; tous les tests pytest doivent réussir et mypy strict doit signaler zéro erreur. »
Voici ce qui s’est passé :
- Session 1 (8 heures) — Codex a analysé les imports, réécrit les déclarations
BaseModelet configuré mypy - Session 2 (10 heures) — il a réécrit les validateurs et fait échouer environ 200 tests
- Session 3 (7 heures) — il a corrigé les tests et découvert des dépendances circulaires
- Session 4 (6 heures) — il a résolu les erreurs mypy restantes et les régressions
Coût en tokens :
« Temps total écoulé : environ 31 heures réparties sur quatre sessions. Coût total des tokens Codex aux tarifs de gpt-5.3-codex : environ $44. »
Le prix est principalement dû aux tokens de sortie de gpt-5.3-codex, facturés 14 $ par million. Ainsi, 31 heures de travail autonome coûtent à peu près autant que plusieurs semaines d’abonnement ChatGPT Plus.
Ce que l’agent n’a pas fait de lui-même :
- Il n’a pas rédigé la documentation de migration pour l’équipe (Codex n’a pas compris que cela faisait partie de la « migration »)
- Il n’a pas mis à jour les fichiers de configuration pour publier avec la nouvelle version de Pydantic
- Il a manqué une régression en production, découverte seulement un jour plus tard
Autrement dit, /goal a effectué 95 % du travail ; les 5 % restants doivent toujours être faits à la main. C’est normal pour la génération actuelle et ce n’est pas une raison de ne pas l’utiliser.
14 heures pendant la nuit sur un pilote macOS
Quelles tâches se prêtent aux longues exécutions nocturnes
À retenir
Les pilotes, en tant que catégorie de tâches, se prêtent mal au travail interactif, mais sont parfaitement adaptés aux boucles de longue durée.
Les types de tâches pour lesquels cette approche est la plus avantageuse :
- Le travail de bas niveau où une itération et sa vérification prennent quelques minutes (compilation, exécution des tests)
- Les migrations avec des critères formels clairs (types, tests, lint)
- Les benchmarks et optimisations aux résultats mesurables
- La documentation et les journaux des modifications à la structure claire
Claude /goal fait tout aussi bien le travail, mais Codex est plus souvent choisi pour les pilotes parce qu’il vérifie lui-même les fichiers et les logs au lieu de s’en remettre à un juge externe.
Combien cela coûte-t-il et comment éviter de brûler ses tokens pendant la nuit ?
À retenir
/goal n’a pas de plafond de dépenses strict : seules les limites de votre forfait s’appliquent. Une heure réelle avec Codex coûte environ 1,50–3 $ avec gpt-5.3-codex. Claude coûte plus cher à utiliser et moins cher à évaluer. La seule protection consiste à écrire « ou arrête-toi après N tours » dans la condition elle-même.
Chiffres tirés de témoignages publics :
| Session | Durée | Tokens | Coût |
|---|---|---|---|
| Démonstration de l’outil de conception d’OpenAI | 25 heures | 13M | (session interne) |
| Pydantic v1→v2 | 31 heures, 4 sessions | ~3,1M en sortie | ~$44 |
| Système d’entretien vocal | 6 heures 44 minutes au total (41 minutes de calcul) | 6,8 millions en entrée, 94 % mis en cache | - |
| Test rapide de police | 5 minutes | 188 832 | moins de 5 % du quota hebdomadaire |
L’essentiel à comprendre : ni Claude Code ni Codex ne proposent de limite stricte du type « arrête de dépenser à N $ ». Il existe trois protections :
- Limites de l’abonnement — Pro, Max ou Enterprise. Avec le forfait Max d’Anthropic (100 $/mois), une session nocturne de 14 heures reste dans le quota hebdomadaire, avec une bonne marge
- Limite de texte dans la condition — écrivez « ou arrête-toi après 20 tours » directement dans
/goal. Le juge de Claude le lira et clôturera l’objectif - Limite de tokens dans Codex — mécanisme intégré qui insère
budget_limit.mdlorsque les tokens sont épuisés
Ce qui fait grimper la facture pendant la nuit :
- Un critère vague comme « rends-le plus pratique » : l’agent ne s’arrêtera jamais, car l’évaluateur ne sait pas ce que signifie « mieux »
- L’accès à des API externes sans stubs : chaque nouvelle tentative consomme des tokens
- Un contexte long : après 6,7 millions de tokens, la compaction du contexte se déclenche et une partie de la mémoire est perdue
Pour en savoir plus sur la maîtrise des coûts, consultez les guides où vont les tokens de Claude Code et comment ne pas épuiser ses limites.
Quand NE PAS lancer /goal : 5 situations
À retenir
Les critères vagues comme « rends-le plus joli », les modifications d’une seule ligne, les bases de données de production contenant des données utilisateur, les changements critiques pour la sécurité et les tâches dont les dépendances externes sont floues. Dans ces cinq situations, l’agent risque soit de rester bloqué dans une boucle, soit de consommer des tokens pour rien.
La documentation d’OpenAI indique explicitement ce qu’il NE faut PAS faire :
- Modifications d’une seule ligne — utiliser
/goalpour renommer une variable coûte plus cher que de le faire à la main - Objectifs vagues — « améliorer les performances », « rendre le code plus propre », « rendre ça plus pratique ». L’évaluateur n’a aucun critère, l’agent tournera donc indéfiniment en rond
- Bases de données de production contenant des données utilisateur — l’agent pourrait compromettre une migration, et une restauration depuis une sauvegarde coûterait plus que les économies réalisées
- Modifications liées à la sécurité — authentification, chiffrement, traitement des paiements. Une personne doit examiner chaque commit
- API externes sans stubs — chaque panne réseau consomme des tokens et échappe à votre contrôle
Que faire si l’agent reste bloqué ?
À retenir
Un signe de boucle : l’agent modifie le même endroit pendant 3–4 tours, puis annule ses changements. Interrompez-le avec Ctrl+C, consultez le log, puis précisez davantage le critère ou réduisez la tâche à un seul élément. Dans Claude, /goal clear peut aider ; dans Codex, utilisez /goal pause et modifiez la condition.
Comment repérer rapidement une boucle :
- L’agent touche les mêmes fichiers pendant au moins 3 tours et les rétablit ensuite dans leur état précédent
- Les mêmes erreurs apparaissent dans le log, alors qu’il y a déjà répondu
- La condition vous semble remplie, mais l’agent indique « non remplie »
- La consommation de tokens par tour augmente, mais le code ne progresse pas
Que faire ensuite :
- Dans Claude Code :
/goal clear, puis précisez davantage la condition - Dans Codex :
/goal pause, examinez le thread actuel, modifiez la condition avec/goal edit, puis/goal resume - Dans les deux outils : vérifiez que le critère est réellement vérifiable (une commande renvoie le code de sortie 0 ou produit un résultat spécifique)
Souvent, la cause de la boucle tient à la tâche elle-même plutôt qu’à l’agent. La condition « tous les tests réussissent » suppose que les tests puissent réussir. Si le code présente un problème d’architecture profond, l’agent continuera à tourner autour du symptôme.
Critères de fin : la discipline de tâche pour /goal
À retenir
Un bon critère est une commande qui renvoie le code de sortie 0 ou un résultat spécifique. « Tous les tests ont réussi » fonctionne. « Le code est plus propre » ne fonctionne pas. Le mieux est de combiner une vérification formelle avec une métrique mesurable, par exemple des tests et un seuil minimal de couverture.
OpenAI énonce clairement cette règle dans son Codex Cookbook officiel :
Un objectif n’est pas considéré comme terminé simplement parce que le modèle le pense. Il n’est terminé que lorsque le résultat a été vérifié à l’aide de fichiers, de tests, de logs, de benchmarks ou d’autres artefacts concrets.
Modèles de critères qui fonctionnent vraiment :
| Type de critère | Formulation |
|---|---|
| Tests | « pytest tests/ renvoie le code de sortie 0 et la couverture est d’au moins 80 % » |
| Types | « mypy strict ne signale aucune erreur dans src/ » |
| Lint | « eslint . renvoie le code de sortie 0 pour tous les fichiers modifiés » |
| Build | « npm run build se termine avec succès, sans erreur TypeScript » |
| Benchmark | « k6 run perf test indique un p95 inférieur à 200 ms » |
| Diff | « git diff ne montre des modifications que dans les fichiers X, Y, Z » |
| Combinaison | « pytest est vert ET mypy strict ne signale aucune erreur ET ruff check réussit » |
La ligne Combo utilise une combinaison de vérifications : tests, mypy et lint. Si une seule vérification reste rouge, l’objectif n’est pas clôturé. L’évaluateur ne peut pas tricher.
Anti-modèles :
- « Le code est meilleur »
- « La facilité d’utilisation s’est améliorée »
- « Les performances se sont améliorées »
- « La documentation est complète »
La différence entre « ça marche » et « ça ne marche pas » tient à la vérifiabilité. Si un critère ne peut pas être vérifié avec une commande, il ne peut pas être vérifié du tout. C’est aussi ce qu’OpenAI entend par « cohérence à long horizon » : un agent peut réfléchir longtemps, mais ne peut pas décider par lui-même de ce qui est « suffisamment bien ».
Vous pouvez essayer l’idée « un prompt, un résultat » sur un vrai projet : définissez /goal, formulez un critère, lancez la tâche et analysez ce qui n’a pas fonctionné.
Sources
- Documentation Claude Code sur
/goal(Anthropic) - Journal des modifications de Claude Code (Anthropic)
- Journal des modifications d’OpenAI Codex
- OpenAI Codex Cookbook : utiliser les objectifs
- Blog d’OpenAI : exécuter des tâches de longue durée avec Codex (23 février 2026)
- GitHub openai/codex : continuation.md
- GitHub openai/codex : budget_limit.md
Découvrez Ailoot.
Plus de détails
Questions fréquentes : Claude Code et Codex avec /goal : travailler en autonomie
Quel critère d’achèvement est utile pour /goal ?
Nommez un résultat vérifiable : test, contrôle des types, build ou benchmark et résultat attendu. Combinez explicitement les contrôles et précisez les fichiers autorisés ; « améliorer » ne fournit aucun arrêt mesurable.
Que faire si l’agent répète les mêmes modifications ratées ?
Interrompez l’exécution et inspectez le journal. S’il modifie et rétablit toujours les mêmes fichiers, réduisez la tâche ou précisez le critère. Vérifiez que les contrôles demandés peuvent réellement réussir avant de reprendre.