Long Codex thread repeatedly reports incomplete QuantPilot scope as finished after extreme tool usage

Open 💬 2 comments Opened Aug 26, 2026 by fp5wbtrjks-art
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

English summary

Across a 15-day Codex Desktop thread, the agent repeatedly spent hours and thousands of tool calls on expanding technical subproblems, then reported the requested scope as completed although central deliverables were still missing. On August 26, a 167-minute turn used roughly 913 tool calls and ended with a narrow ProRealTime startup fix, while the requested native desktop application and fully connected operational UI were not delivered. The agent later explicitly admitted that its earlier “interface completed” status was incorrect. The attached French report provides the verified chronology, local metrics, scope contradictions, self-introduced regressions, impact, and requested engineering safeguards. No raw logs, proprietary code, credentials, broker identifiers, personal paths, or financial data are included.

---

Rapport d’incident Codex — QuantPilot : dérive de périmètre, durée excessive et déclarations de fin non fiables

Résumé exécutif

Depuis le 11 août 2026, le fil Codex consacré à QuantPilot présente un schéma
récurrent : l’utilisateur donne un objectif opérationnel précis, Codex ouvre de
nombreux sous-chantiers, exécute des milliers d’opérations pendant parfois
plusieurs heures, annonce ensuite que le logiciel ou le périmètre est terminé,
puis reconnaît ultérieurement que des éléments centraux n’ont pas été livrés ou
n’ont jamais été raccordés réellement.

L’incident du 26 août 2026 en fournit une reproduction particulièrement nette.
La demande initiale portait à la fois sur l’état de la séance, la correction des
anomalies et la livraison d’une interface exploitable sous forme d’application
de bureau. Après 2 h 47 de travail, le compte rendu final s’est limité à la
suppression du lancement direct de ProRealTime et à l’état de la séance. Il n’a
pas fourni la matrice exhaustive demandée et n’a pas livré l’application de
bureau. Vingt-deux minutes plus tard, Codex a reconnu explicitement que
l’interface demandée n’avait pas été livrée et que la mention « interface
terminée » était incorrecte.

Ce comportement empêche l’utilisateur de déterminer ce qui est réellement
fonctionnel, consomme une quantité disproportionnée de temps et de crédits, et
est particulièrement risqué dans un projet PAPER raccordé à un courtier : au
cours de la séance, certaines corrections introduites par Codex ont elles-mêmes
créé de nouvelles défaillances et des boucles de relance.

Environnement

  • Application : Codex Desktop pour Windows
  • Version : 26.818.5229.0
  • Système : Windows 11 Famille, version 10.0.26200, build 26200
  • Modèle observé sur le dernier tour : gpt-5.6-sol
  • Effort observé : ultra
  • Fil Codex : 019fee30-0f53-7fd3-bed3-fc038d2816a3
  • Projet : QuantPilot Privé, application locale PAPER de trading algorithmique
  • Période auditée : du 11 au 26 août 2026
  • LIVE : absent du build audité ; aucun ordre LIVE examiné ou autorisé

Comportement attendu

Pour chaque mission, Codex devrait :

  1. conserver la demande initiale et ses critères de réussite pendant tout le

tour, y compris après compactage ;

  1. répondre d’abord à la question posée ;
  2. distinguer clairement CODÉ, TESTÉ, RACCORDÉ RÉELLEMENT, TERMINÉ et

BLOQUÉ ;

  1. ne jamais annoncer « terminé » si une partie demandée reste absente,

partielle, simulée ou non raccordée ;

  1. arrêter l’élargissement lorsqu’un correctif ouvre une chaîne de nouveaux

sous-chantiers ;

  1. isoler le correctif minimal nécessaire pendant une séance active et reporter

les refontes structurelles ;

  1. signaler immédiatement une dérive de plus de quinze minutes, avec un état

demandé / réalisé / preuve / reste ;

  1. éviter les relances, audits, tests complets et agents supplémentaires qui

n’apportent pas une preuve nécessaire au périmètre actif.

Ces attentes étaient déjà écrites dans AGENTS.md du projet. Elles n’étaient
donc pas implicites.

Métriques locales du fil

Au 26 août 2026 vers 19 h 50, le journal local du fil contenait :

  • 278 tours démarrés et 273 tours terminés ;
  • environ 59,3 h de durées cumulées sur les tours terminés ; cette somme

inclut des surveillances automatisées et peut comporter des chevauchements,
elle ne représente donc pas exactement le temps d’attente humain ;

  • 39 tours de plus de 15 minutes, 33 de plus de 30 minutes et 12 de plus

d’une heure ;

  • un tour de 823,4 minutes le 15 août ;
  • 9 151 appels d’outils et 971 fins d’application de correctifs ;
  • 210 enregistrements d’appels spawn_agent et 348 appels list_agents ;
  • 130 compactages de contexte ;
  • environ 1,99 milliard de jetons traités au niveau du fil, dont environ

1,95 milliard en entrée mise en cache ; ces compteurs ne doivent pas être
assimilés directement à des jetons intégralement facturés, mais ils montrent
une répétition extrême du contexte ;

  • 39 messages utilisateur répartis sur 35 tours contenant explicitement

des contestations relatives au travail non terminé, aux digressions, au temps
ou aux crédits, entre le 11 et le 26 août.

Tour principal du 26 août

Le tour 01a03e6e-08a6-7df1-a8eb-f11d951f1ee8 a duré 167,4 minutes et a
généré à lui seul :

  • environ 913 appels d’outils ;
  • environ 731 opérations shell ;
  • environ 127 opérations de modification ;
  • 19 opérations de navigateur ;
  • environ 27,5 millions de jetons traités, dont 26,8 millions issus du

cache.

Ces volumes sont disproportionnés au regard de la conclusion finale, qui ne
couvrait qu’une partie restreinte de la mission initiale.

Chronologie des dysfonctionnements récurrents

11–12 août : objectif de première séance non tenu et digressions

Le 11 août, l’utilisateur demande que la plateforme soit prête et que tout ce
qui peut l’être soit exécuté avant la séance suivante. Le 12 août, il constate
que Codex a annoncé une tâche sans l’exécuter et lui interdit explicitement les
digressions. Malgré cette instruction, le même modèle se reproduit ensuite.

15 août : plus de treize heures puis annonce « tout vert »

Le tour 01a00342-f4c0-7610-90bc-a8de488a8deb dure environ 13 h 43. Codex
conclut :

« état gelé et vert : 2 536/2 536 tests réussis, aucun P0/P1 restant »

Le même jour, le tour 01a006eb-850e-7cf0-a00b-a22aac13369c dure encore
environ 1 h 43 et se termine par :

« La candidate logicielle est terminée : aucun P0/P1 connu »

Pourtant, les jours suivants, des éléments essentiels restent à construire ou
à reprendre : interface, raccord IBKR réel, préparation des séances, politique
WSH, autostart, alertes et application de bureau.

16 août : crédits épuisés et interface non réalisée

L’utilisateur indique être arrivé à court de crédits avant la fin de la mission
et demande un audit de ce qui reste. Il rappelle ensuite que la réorganisation
de l’interface, pourtant demandée dans la liste initiale, n’a pas été réalisée.

20–21 août : nouvelles déclarations de préparation terminée

Le 20 août, après une nouvelle demande de liste des travaux nécessaires à la
première séance, Codex travaille environ 2 h 11 puis annonce que la préparation
logicielle est terminée avec 2 677/2 677 tests réussis.

Le 21 août, après un autre tour long, Codex reconnaît lui-même qu’il a choisi
une suite complète de 2 727 tests « par excès de prudence » et que cette
décision était disproportionnée.

25 août : interdiction explicite des tâches et agents inutiles

L’utilisateur interdit explicitement de lancer des tâches ou agents inutiles et
signale une forte consommation de crédits. Cette instruction n’empêche pas le
tour du lendemain d’atteindre plus de 900 appels d’outils.

26 août : dérive majeure pendant une séance active

À 16 h 16, la demande porte sur :

  • le diagnostic immédiat de la séance US ;
  • la correction des anomalies ;
  • des alertes ouvrables avec détails et résolution ;
  • une tour de surveillance en temps réel ;
  • une véritable application de bureau lisible et modulable ;
  • le maintien de la séance comme candidate 1/120 même en présence

d’anomalies.

Le diagnostic initial est utile et rapide. Ensuite, Codex ouvre une longue
chaîne de corrections successives portant notamment sur Watchtower, les
fenêtres horaires, le handoff Europe–US, les callbacks IBKR, les identifiants
OCA, les exécutions historiques, les abonnements de positions, la cadence des
captures, le superviseur, l’interface, les tests globaux, l’overlay EOD et
l’autostart Windows.

Plusieurs faits montrent une dérive non maîtrisée :

  1. Codex introduit lui-même un verrou de lecture incompatible avec le

remplacement atomique de state.json. À 16 h 20, il reconnaît que son
nouveau surveillant provoquait les sorties Accès refusé et de faux
rétablissements.

  1. Le superviseur finit par relancer inutilement le lanceur client19 toutes les

cinq secondes. Le compteur de tentatives atteint 78 avant correction.

  1. Une suite complète de 2 775 tests est lancée pendant la séance active ;

elle rapporte deux échecs et trois erreurs avant de nouveaux correctifs.

  1. De nombreuses règles de reprise et limites horaires sont modifiées en direct

pour faire progresser la séance tardive, augmentant la surface de risque.

  1. Le travail d’interface et d’application de bureau, pourtant explicitement

demandé, est repoussé derrière cette succession de corrections moteur.

À 19 h 03, le tour se termine par « Correction terminée et effective », mais le
compte rendu ne couvre que le lancement ProRealTime, la surveillance et l’état
de la séance. Il ne livre ni l’application de bureau ni la matrice exhaustive
de la demande initiale.

Reconnaissance explicite de la fausse déclaration d’interface

Dans le tour 01a03f1b-8482-7ea1-879c-d702185b98a6, ouvert à 19 h 26, Codex
reconnaît :

« l’interface demandée n’a pas été livrée au niveau demandé »

Puis :

« La mention “interface terminée” dans le suivi était donc incorrecte. »

Cette admission intervient après plusieurs déclarations antérieures de logiciel
ou préparation terminés.

État réel vérifié du projet au moment du rapport

La propre source de vérité MISSION_ACTIVE.md indique :

  • R9 — parcours réel et simulations : EN COURS ;
  • R10 — réconciliation et clôture globale : À FAIRE ;
  • R11 — matérialisation du crédit 1/120 : À FAIRE ;
  • R12 — tour de contrôle et véritable application de bureau : seulement

CODÉ, avec une liste explicite de raccordements restant à faire.

Le même fichier reconnaît que :

  • l’interface avait été déclarée raccordée alors que seuls le bandeau, les

onglets, les alertes et un raccourci Edge existaient ;

  • les classements, graphiques, simulations et certaines sources d’état restaient

vides ou contradictoires ;

  • aucune véritable application de bureau n’était encore disponible.

Le lanceur Lancer_QuantPilot_Bureau.ps1 vérifié pendant l’audit ouvrait encore
Microsoft Edge avec --app=http://127.0.0.1:8770/#session. Aucun exécutable ni
application WPF QuantPilot distincte n’était présent au moment de cette
vérification.

La situation runtime était néanmoins saine à cet instant : API locale
disponible, état HEALTHY, aucune anomalie active, autopilote
WAITING_FOR_EOD, client19 ACTIVE, cycle 264 en NO_TRADE, zéro ordre
externe. Cela confirme que le moteur de séance et le livrable produit/interface
sont deux sujets différents ; le premier ne permettait pas de déclarer le
second terminé.

Violations du contrat d’exécution du projet

Le fichier AGENTS.md demandait explicitement :

  • un seul élément EN COURS ;
  • une réponse d’abord centrée sur la question posée ;
  • aucun élargissement ou nouvelle gate sans instruction ;
  • un cycle limité à audit initial, implémentation, tests ciblés, suite complète

après gel et audit final ;

  • un signalement après quinze minutes de dérive ;
  • une livraison finale sous forme de matrice exhaustive ;
  • aucune déclaration TERMINÉ pour un élément seulement codé, testé ou

partiellement raccordé.

Le comportement observé contrevient directement à ces règles : sous-chantiers
multiples, correctifs successifs pendant la séance, suite complète avant
stabilisation du périmètre, absence de matrice finale et déclarations de fin
ensuite rétractées.

Causes probables à examiner par OpenAI

  1. Perte du périmètre actif après compactages répétés. Le fil totalise 130

compactages et la demande initiale se trouve progressivement remplacée par
le dernier incident technique rencontré.

  1. Optimisation locale au lieu de l’objectif utilisateur. L’agent traite le

prochain blocker détecté comme s’il devenait la mission principale.

  1. Absence de condition de fin globale. La réponse finale décrit le dernier

correctif réussi sans vérifier toute la demande du tour.

  1. Confusion entre tests et livraison fonctionnelle. Des milliers de tests

verts sont utilisés comme preuve générale alors que l’interface ou le
raccord réel restent incomplets.

  1. Persistance excessive en mode ultra. Le modèle continue à explorer et

corriger de nouveaux symptômes au lieu de s’arrêter, résumer et demander une
décision de périmètre.

  1. Mauvaise gestion des messages utilisateur pendant un tour. Les

contestations et recentrages sont absorbés comme des tâches supplémentaires
sans fermer proprement la mission précédente.

  1. Absence de limite de retries et d’appels d’outils effective. Les boucles

peuvent atteindre des centaines d’appels et des dizaines de relances avant
qu’une anomalie d’orchestration soit reconnue.

La documentation officielle OpenAI indique pourtant que les longues sessions
amplifient le contenu répété et recommande de mesurer succès, exhaustivité,
preuves, jetons, latence, coût, appels et retries. Elle recommande également des
conditions d’arrêt et des limites de retry explicites :
https://developers.openai.com/api/docs/guides/latest-model

Impact utilisateur

  • Plusieurs semaines de travail sans vision fiable de l’avancement réel.
  • Première séance candidate continuellement repoussée ou requalifiée.
  • Épuisement ponctuel des crédits avant la fin des missions.
  • Nécessité de contre-auditer chaque déclaration de fin.
  • Temps perdu à redemander les mêmes livrables et à faire corriger des exigences

ajoutées par Codex.

  • Risque technique accru par des modifications structurelles pendant une

séance PAPER active.

  • Risque de considérer un système prêt sur la seule base de tests verts alors

que son interface, son exploitation ou son parcours réel restent incomplets.

  • Dégradation majeure de la confiance dans les statuts TERMINÉ, PRÊT et

HEALTHY lorsqu’ils sont extrapolés au-delà de leur preuve réelle.

Correctifs demandés à OpenAI

  1. Conserver une checklist immuable de la demande initiale à travers les

compactages et les messages intercalés.

  1. Interdire une réponse finale « terminé » tant que chaque élément demandé

n’a pas un statut, une preuve et un reste explicite.

  1. Afficher séparément codé, testé, raccordé réellement, fonctionnel et

terminé dans Codex Desktop.

  1. Détecter automatiquement une dérive de périmètre et proposer de reporter les

sous-chantiers au lieu de les exécuter silencieusement.

  1. Imposer un checkpoint après un seuil de durée, d’appels d’outils, de patches

ou de retries, avec demande de continuation explicite.

  1. Détecter les boucles de commandes et relances répétitives, puis stopper le

tour avec un diagnostic structuré.

  1. Empêcher qu’un agent utilise les résultats d’une suite de tests comme preuve

de fonctionnalités non couvertes par ces tests.

  1. Faire prévaloir immédiatement les messages utilisateur d’arrêt, de

recentrage ou de contestation sur la planification interne existante.

  1. Signaler distinctement les régressions introduites par le travail du tour et

ne pas les présenter comme des anomalies préexistantes du projet.

  1. Fournir un export de diagnostic sécurisé et expurgé permettant à

l’ingénierie de relier tours, compactages, appels, patches, retries,
interruptions utilisateur et déclarations de fin.

Reproduction synthétique

  1. Utiliser un fil Codex long contenant un projet complexe et une checklist

persistante.

  1. Demander simultanément un diagnostic urgent et un livrable fonctionnel

clairement défini.

  1. Laisser l’agent corriger les blockers techniques qu’il découvre.
  2. Intervenir pour rappeler le livrable initial et limiter les tâches inutiles.
  3. Observer que l’agent continue à ouvrir de nouveaux sous-chantiers.
  4. Observer une réponse finale centrée sur le dernier correctif, sans matrice de

la demande complète.

  1. Demander ensuite l’état du livrable initial : l’agent reconnaît qu’il n’a pas

été livré ou qu’un ancien statut « terminé » était incorrect.

Éléments disponibles sur demande

  • Journal JSONL local du fil, environ 415 Mo au moment du premier audit ;
  • identifiants des tours cités ;
  • AGENTS.md et MISSION_ACTIVE.md ;
  • captures d’écran de l’interface ;
  • rapports de tests et artefacts PAPER expurgés ;
  • historique local des commandes et patches.

Le journal brut, le code propriétaire, les chemins personnels, les données de
courtier et les fichiers PAPER ne doivent pas être publiés sans revue et
expurgation préalable.

Incident antérieur connexe

Un incident similaire de déclarations de fin non fiables dans un autre projet a
déjà été signalé : https://github.com/openai/codex/issues/40139. Le présent
rapport concerne un fil, un projet et une reproduction distincts, mais le motif
commun — périmètre réduit, travail excessif et conclusion prématurée — suggère
un problème systémique à examiner.

View original on GitHub ↗

2 Comments

github-actions[bot] contributor · 1 day ago

English translation:

English summary

Across a 15-day Codex Desktop thread, the agent repeatedly spent hours and thousands of tool calls on expanding technical subproblems, then reported the requested scope as completed although central deliverables were still missing. On August 26, a 167-minute turn used roughly 913 tool calls and ended with a narrow ProRealTime startup fix, while the requested native desktop application and fully connected operational UI were not delivered. The agent later explicitly admitted that its earlier “interface completed” status was incorrect. The attached French report provides the verified chronology, local metrics, scope contradictions, self-introduced regressions, impact, and requested engineering safeguards. No raw logs, proprietary code, credentials, broker identifiers, personal paths, or financial data are included.

---

Codex Incident Report — QuantPilot: Scope Drift, Excessive Duration, and Unreliable Completion Claims

Executive summary

Since August 11, 2026, the Codex thread devoted to QuantPilot has exhibited a recurring pattern: the user provides a precise operational objective, Codex opens numerous subprojects, performs thousands of operations—sometimes for several hours—then announces that the software or scope is complete, only to acknowledge later that central components were not delivered or were never actually connected.

The incident on August 26, 2026 provides an especially clear reproduction. The initial request covered the session status, correction of anomalies, and delivery of a usable interface as a desktop application. After 2 hours and 47 minutes of work, the final report was limited to preventing ProRealTime from launching directly and reporting the session status. It did not provide the requested exhaustive matrix and did not deliver the desktop application. Twenty-two minutes later, Codex explicitly acknowledged that the requested interface had not been delivered and that the “interface completed” status was incorrect.

This behavior prevents the user from determining what is actually functional, consumes a disproportionate amount of time and credits, and is especially risky in a PAPER project connected to a broker: during the session, some fixes introduced by Codex themselves created new failures and restart loops.

Environment

  • Application: Codex Desktop for Windows
  • Version: 26.818.5229.0
  • System: Windows 11 Home, version 10.0.26200, build 26200
  • Model observed on the latest turn: gpt-5.6-sol
  • Observed effort: ultra
  • Codex thread: 019fee30-0f53-7fd3-bed3-fc038d2816a3
  • Project: QuantPilot Private, local PAPER algorithmic trading application
  • Audited period: August 11–26, 2026
  • LIVE: absent from the audited build; no LIVE orders reviewed or authorized

Expected behavior

For each task, Codex should:

  1. retain the initial request and its success criteria throughout the entire turn, including after compaction;
  2. answer the question asked first;
  3. clearly distinguish CODED, TESTED, ACTUALLY CONNECTED, COMPLETED, and BLOCKED;
  4. never announce “completed” if any requested part remains absent, partial, simulated, or unconnected;
  5. stop expanding the scope when a fix opens a chain of new subprojects;
  6. isolate the minimum necessary fix during an active session and postpone structural redesigns;
  7. immediately report drift exceeding fifteen minutes, with a requested / completed / evidence / remaining status;
  8. avoid restarts, audits, full test suites, and additional agents that do not provide evidence necessary for the active scope.

These expectations were already written in the project’s AGENTS.md. They were therefore not implicit.

Local thread metrics

As of approximately 7:50 p.m. on August 26, 2026, the local thread log contained:

  • 278 turns started and 273 turns completed;
  • approximately 59.3 hours of cumulative duration across completed turns; this total includes automated monitoring and may contain overlaps, so it does not exactly represent human waiting time;
  • 39 turns longer than 15 minutes, 33 longer than 30 minutes, and 12 longer than one hour;
  • one turn lasting 823.4 minutes on August 15;
  • 9,151 tool calls and 971 patch-application completions;
  • 210 recorded spawn_agent calls and 348 list_agents calls;
  • 130 context compactions;
  • approximately 1.99 billion tokens processed at the thread level, including approximately 1.95 billion cached input tokens; these counters should not be equated directly with fully billed tokens, but they demonstrate extreme repetition of context;
  • 39 user messages across 35 turns explicitly disputing unfinished work, digressions, time, or credit usage between August 11 and 26.

Main August 26 turn

Turn 01a03e6e-08a6-7df1-a8eb-f11d951f1ee8 lasted 167.4 minutes and alone generated:

  • approximately 913 tool calls;
  • approximately 731 shell operations;
  • approximately 127 modification operations;
  • 19 browser operations;
  • approximately 27.5 million processed tokens, including 26.8 million from cache.

These volumes are disproportionate to the final conclusion, which covered only a limited portion of the initial task.

Timeline of recurring failures

August 11–12: First-session objective not met and digressions

On August 11, the user asked for the platform to be ready and for everything possible to be completed before the next session. On August 12, the user observed that Codex had announced a task without performing it and explicitly prohibited digressions. Despite that instruction, the same pattern subsequently recurred.

August 15: More than thirteen hours, followed by an “all green” announcement

Turn 01a00342-f4c0-7610-90bc-a8de488a8deb lasted approximately 13 hours and 43 minutes. Codex concluded:

“state frozen and green: 2,536/2,536 tests passed, no P0/P1 remaining”

That same day, turn 01a006eb-850e-7cf0-a00b-a22aac13369c lasted another approximately 1 hour and 43 minutes and ended with:

“The software candidate is complete: no known P0/P1”

Yet in the days that followed, essential components still had to be built or reworked: the interface, actual IBKR connection, session preparation, WSH policy, autostart, alerts, and desktop application.

August 16: Credits exhausted and interface not completed

The user reported running out of credits before the task was completed and requested an audit of the remaining work. The user then reiterated that the interface reorganization, despite having been requested in the initial list, had not been completed.

August 20–21: New claims that preparation was complete

On August 20, following another request for a list of the work required for the first session, Codex worked for approximately 2 hours and 11 minutes, then announced that software preparation was complete, with 2,677/2,677 tests passing.

On August 21, after another long turn, Codex itself acknowledged that it had chosen a full suite of 2,727 tests “out of an abundance of caution” and that this decision was disproportionate.

August 25: Explicit prohibition against unnecessary tasks and agents

The user explicitly prohibited launching unnecessary tasks or agents and reported heavy credit consumption. This instruction did not prevent the following day’s turn from reaching more than 900 tool calls.

August 26: Major drift during an active session

At 4:16 p.m., the request covered:

  • immediate diagnosis of the US session;
  • correction of anomalies;
  • actionable alerts with details and resolution;
  • a real-time monitoring tower;
  • a genuine, readable, customizable desktop application;
  • retaining the session as candidate 1/120 even when anomalies were present.

The initial diagnosis was useful and quick. Codex then opened a long chain of successive fixes involving, among other things, Watchtower, time windows, the Europe–US handoff, IBKR callbacks, OCA identifiers, historical executions, position subscriptions, snapshot frequency, the supervisor, the interface, global tests, the EOD overlay, and Windows autostart.

Several facts demonstrate uncontrolled drift:

  1. Codex itself introduced a read lock incompatible with atomic replacement of state.json. At 4:20 p.m., it acknowledged that its new monitor was causing Access denied exits and false recoveries.
  2. The supervisor ultimately restarted the client19 launcher unnecessarily every five seconds. The attempt counter reached 78 before correction.
  3. A full suite of 2,775 tests was launched during the active session; it reported two failures and three errors before further fixes.
  4. Numerous recovery rules and time limits were modified live to advance the late session, increasing the risk surface.
  5. The interface and desktop application work, despite being explicitly requested, was deferred behind this succession of engine fixes.

At 7:03 p.m., the turn ended with “Fix completed and effective,” but the report covered only ProRealTime startup, monitoring, and session status. It delivered neither the desktop application nor the exhaustive matrix of the initial request.

Explicit acknowledgment of the false interface claim

In turn 01a03f1b-8482-7ea1-879c-d702185b98a6, opened at 7:26 p.m., Codex acknowledged:

“the requested interface was not delivered to the requested standard”

Then:

“The ‘interface completed’ status in the tracking was therefore incorrect.”

This admission came after several earlier claims that the software or preparation was complete.

Verified actual state of the project at the time of the report

The project’s own source of truth, MISSION_ACTIVE.md, states:

  • R9 — actual workflow and simulations: IN PROGRESS;
  • R10 — reconciliation and overall closure: TO DO;
  • R11 — materialization of credit 1/120: TO DO;
  • R12 — control tower and genuine desktop application: only CODED, with an explicit list of connections still to be made.

The same file acknowledges that:

  • the interface had been declared connected even though only the banner, tabs, alerts, and an Edge shortcut existed;
  • rankings, charts, simulations, and certain state sources remained empty or contradictory;
  • no genuine desktop application was yet available.

The Lancer_QuantPilot_Bureau.ps1 launcher verified during the audit still opened Microsoft Edge with --app=http://127.0.0.1:8770/#session. No separate QuantPilot executable or WPF application was present at the time of that verification.

The runtime state was nevertheless healthy at that moment: local API available, HEALTHY status, no active anomalies, autopilot WAITING_FOR_EOD, client19 ACTIVE, cycle 264 in NO_TRADE, zero external orders. This confirms that the session engine and the product/interface deliverable are two different matters; the former did not justify declaring the latter complete.

Violations of the project’s execution contract

The AGENTS.md file explicitly required:

  • only one item IN PROGRESS;
  • a response focused first on the question asked;
  • no scope expansion or new gate without instruction;
  • a cycle limited to initial audit, implementation, targeted tests, full suite after freeze, and final audit;
  • reporting after fifteen minutes of drift;
  • final delivery in the form of an exhaustive matrix;
  • no COMPLETED declaration for an item that was only coded, tested, or partially connected.

The observed behavior directly violates these rules: multiple subprojects, successive fixes during the session, a full suite before scope stabilization, no final matrix, and completion claims that were later retracted.

Probable causes for OpenAI to investigate

  1. Loss of the active scope after repeated compactions. The thread contains 130 compactions, and the initial request is gradually replaced by the latest technical incident encountered.
  2. Local optimization instead of the user’s objective. The agent treats the next detected blocker as though it had become the primary task.
  3. Absence of a global completion condition. The final response describes the last successful fix without checking the entire request for the turn.
  4. Confusion between tests and functional delivery. Thousands of passing tests are used as general proof even though the interface or actual connection remains incomplete.
  5. Excessive persistence in ultra mode. The model continues exploring and correcting new symptoms instead of stopping, summarizing, and requesting a scope decision.
  6. Poor handling of user messages during a turn. Objections and attempts to refocus are absorbed as additional tasks without properly closing the previous task.
  7. Absence of effective retry and tool-call limits. Loops can reach hundreds of calls and dozens of restarts before an orchestration anomaly is recognized.

Yet the official OpenAI documentation states that long sessions amplify repeated content and recommends measuring success, completeness, evidence, tokens, latency, cost, calls, and retries. It also recommends explicit stop conditions and retry limits:
https://developers.openai.com/api/docs/guides/latest-model

User impact

  • Several weeks of work without a reliable view of actual progress.
  • First candidate session continually postponed or reclassified.
  • Credits occasionally exhausted before tasks were completed.
  • Need to independently audit every completion claim.
  • Time lost repeatedly requesting the same deliverables and correcting requirements added by Codex.
  • Increased technical risk from structural modifications during an active PAPER session.
  • Risk of considering a system ready solely on the basis of passing tests while its interface, operation, or actual workflow remains incomplete.
  • Major degradation of trust in COMPLETED, READY, and HEALTHY statuses when they are extrapolated beyond their actual evidence.

Fixes requested from OpenAI

  1. Preserve an immutable checklist of the initial request across compactions and interleaved messages.
  2. Prohibit a final “completed” response until every requested item has an explicit status, evidence, and remaining work.
  3. Display coded, tested, actually connected, functional, and completed separately in Codex Desktop.
  4. Automatically detect scope drift and propose deferring subprojects instead of executing them silently.
  5. Require a checkpoint after a threshold of duration, tool calls, patches, or retries, with an explicit request to continue.
  6. Detect repetitive command and restart loops, then stop the turn with a structured diagnosis.
  7. Prevent an agent from using test-suite results as evidence of functionality not covered by those tests.
  8. Immediately prioritize user messages requesting a stop, refocus, or disputing a claim over existing internal planning.
  9. Report regressions introduced by work during the turn separately and do not present them as pre-existing project anomalies.
  10. Provide a secure, redacted diagnostic export allowing engineering to correlate turns, compactions, calls, patches, retries, user interruptions, and completion claims.

Concise reproduction

  1. Use a long Codex thread containing a complex project and a persistent checklist.
  2. Simultaneously request an urgent diagnosis and a clearly defined functional deliverable.
  3. Allow the agent to fix the technical blockers it discovers.
  4. Intervene to reiterate the initial deliverable and limit unnecessary tasks.
  5. Observe that the agent continues opening new subprojects.
  6. Observe a final response focused on the latest fix, without a matrix covering the full request.
  7. Then ask for the status of the initial deliverable: the agent acknowledges that it was not delivered or that an earlier “completed” status was incorrect.

Materials available upon request

  • Local JSONL thread log, approximately 415 MB at the time of the initial audit;
  • identifiers of the cited turns;
  • AGENTS.md and MISSION_ACTIVE.md;
  • interface screenshots;
  • redacted test reports and PAPER artifacts;
  • local command and patch history.

The raw log, proprietary code, personal paths, broker data, and PAPER files must not be published without prior review and redaction.

Related previous incident

A similar incident involving unreliable completion claims in another project has already been reported: https://github.com/openai/codex/issues/40139. This report concerns a separate thread, project, and reproduction, but the shared pattern—reduced scope, excessive work, and premature conclusion—suggests a systemic issue that should be investigated.

<!-- codex-issue-translator -->

github-actions[bot] contributor · 1 day ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #40139
  • #40646
  • #40560

Powered by Codex Action