· reAPI Team
stream disconnected before completion: stream closed before response.completed
Codex a atteint la fin du flux sans accepter sa fin. Avant de réessayer, vérifiez le message complet, l’événement final, le délai et le protocole du point d’accès.

« stream disconnected before completion: stream closed before response.completed » signifie que Codex a atteint la fin d’un flux de réponse sans accepter d’événement de fin. Le message indique où le traitement s’est arrêté, pas quelle machine en est responsable. Dans le lecteur SSE de Codex examiné le 22 octobre 2026, il s’agit du cas de repli à la fin du flux ; les erreurs de transport, les délais d’inactivité et les erreurs serveur déjà reçues suivent des chemins distincts.[1]
Lisez le suffixe complet avant de modifier les réglages. Un flux fermé nécessite une trace des événements ; un délai d’inactivité, des mesures temporelles ; une limite de débit, l’identification de la ressource limitée. Si vous évaluez reAPI, consultez d’abord la documentation des requêtes GPT-6 Astra : elle décrit Chat Completions. Une requête Chat Completions réussie ne prouve pas la compatibilité avec le protocole Responses de Codex.[2][3]
Commencez ici
- Conservez l’erreur complète, la version du client, l’horodatage et l’identifiant de requête avant de réessayer. Excluez identifiants secrets et prompts privés des rapports partagés.
- En cas de fermeture prématurée, cherchez un événement terminal valide et accepté dans les données SSE reçues. Le succès HTTP ou la présence de texte ne suffisent pas.[1]
- Pour
idle timeout waiting for SSE, mesurez l’intervalle entre événements. Le contrôle d’inactivité documenté est distinct du nombre de tentatives pour les requêtes et les flux.[2] - Pour une limitation temporaire, suivez l’indication du service et réduisez la charge concernée. Les problèmes de quota ou de facturation exigent plutôt une action sur le compte.[4]
stream disconnected before completion: stream closed before response.completed
Le code source permet une réponse plus précise que « votre connexion Internet est en panne ». La boucle SSE lit les événements, désérialise leur JSON et transmet ceux qu’elle reconnaît au gestionnaire Responses. Lorsque ce dernier renvoie une réponse terminée, la boucle se conclut correctement. Si l’entrée se termine d’abord, elle renvoie une erreur de réponse mémorisée lorsqu’il en existe une ; sinon, elle produit le message de flux fermé.[1]
Ces distinctions sont utiles pour examiner une trace :
| Observation | Ce qu’elle établit | Étape suivante du diagnostic |
|---|---|---|
| Du texte est arrivé, puis le flux s’est terminé | Une partie de la sortie a atteint le client | Chercher l’événement terminal et son corps JSON |
| Succès HTTP, sans fin acceptée | La requête HTTP a réussi à cette couche | Examiner les événements plutôt que considérer la tâche comme terminée |
| Une charge utile ressemble à un événement de fin | Des octets évoquant une fin sont arrivés | Vérifier le type d’événement, les champs obligatoires et le parseur du client installé |
| Une erreur serveur mémorisée précède EOF | Le service a fourni une erreur | Diagnostiquer celle-ci avant de traiter la fermeture comme une panne réseau distincte |
Il s’agit d’interprétations du parseur examiné, pas de résultats d’un appel réel à reAPI. L’article utilise la révision immuable c2d5ea52, pour permettre la comparaison avec votre client installé sans supposer que toutes les versions de Codex se comportent de la même manière.[1]
Les données mal formées méritent un contrôle spécifique. Dans cette révision, un événement dont la désérialisation JSON initiale échoue est journalisé puis ignoré. Une fin reconnue avec un objet de réponse invalide emprunte un autre chemin d’erreur. Trouver response.completed dans un journal ne prouve donc pas que Codex l’a accepté. Inversement, un flux fermé ne prouve pas à lui seul que le serveur a omis l’événement : comparez ce que le serveur a envoyé avec ce que le client a reçu.[1]
Pour un endpoint personnalisé, vérifiez le protocole documenté avant d’augmenter les tentatives. La référence actuelle indique responses comme valeur prise en charge pour wire_api et décrit WebSocket comme une capacité distincte du fournisseur. Accepter du JSON Chat Completions au format OpenAI ne suffit pas à constituer un endpoint Responses fonctionnel.[2]
Notre séquence de reproduction proposée reste limitée : une requête textuelle, puis la même en streaming, puis l’interaction avec l’outil qui avait échoué. Gardez endpoint, clé et modèle constants. Notez ce qui change à chaque étape : c’est une méthode de diagnostic, pas une garantie que tous les fournisseurs prennent en charge les trois tests. S’ils engendrent des frais d’utilisation, n’exécutez que les tests approuvés pour ce compte.
stream disconnected before completion: transport error: network error: error decoding response body
Cette requête de recherche décrit une erreur de transport ou de lecture du corps de réponse. Le lecteur SSE de Codex peut remonter une erreur du flux entrant avant de recevoir le prochain événement utilisable. Cela diffère du chemin normal de fin du flux décrit plus haut.[1]
Traitez chaque composant comme une piste d’enquête, pas comme une cause prouvée. Notez l’hôte final de l’endpoint, la version du client, le statut HTTP s’il est disponible, le temps écoulé et l’arrivée éventuelle d’événements. Comparez ensuite une seule modification contrôlée à la fois : autre chemin réseau autorisé ou même endpoint hors du client concerné. Une visite réussie d’un site dans le navigateur ne teste pas le flux authentifié précis qui a échoué.
L’aide d’OpenAI recommande de contrôler les réglages réseau, le proxy, les certificats SSL et les règles du pare-feu pour les erreurs de connexion API. Ce sont des vérifications à effectuer, pas un diagnostic de cette chaîne exacte dans votre environnement.[5] Gardez la vérification des certificats activée. Si une organisation gère le réseau, utilisez sa configuration approuvée plutôt qu’un contournement de proxy sans rapport avec le problème.
Pour transmettre l’incident à l’opérateur d’une passerelle, incluez une structure de requête expurgée et le dernier type d’événement reçu. Une capture affichant seulement « disconnected » retire la distinction dont l’opérateur a besoin. Gardez la trace originale localement ; partagez une version réduite sans en-têtes d’autorisation, entrées privées ni sorties des outils.
stream disconnected before completion: idle timeout waiting for sse
Un délai d’inactivité signifie que l’attente du prochain événement SSE a dépassé l’intervalle configuré. Ce n’est pas la même chose qu’une réponse globalement longue : une réponse qui continue à produire des événements n’a pas le même profil temporel qu’un flux silencieux.[1]
La référence de configuration vérifiée le 22 octobre 2026 sépare trois réglages :[2]
| Réglage du fournisseur | Portée documentée |
|---|---|
stream_idle_timeout_ms | Attente inactive d’événements SSE, en millisecondes |
stream_max_retries | Nombre de nouvelles tentatives après interruption SSE |
request_max_retries | Nombre de nouvelles tentatives des requêtes HTTP |
Augmenter l’intervalle d’inactivité change la durée d’attente du client. Cela ne force pas un endpoint incompatible à émettre des événements Responses et ne restitue pas des octets perdus. Augmenter les tentatives change leur nombre, pas la cause du premier échec.
Mesurez avant d’ajuster les valeurs. Notez le début de la réponse, l’arrivée de chaque événement et le signalement de l’erreur. Si la limite observée correspond au timeout du client, examinez-la avec le comportement documenté du service. Si la connexion ferme plus tôt, enquêtez plutôt sur cette fermeture. N’attribuez pas un délai universel à tous les modèles, réseaux et passerelles à partir d’un seul tour échoué.
rate limit exceeded: upstream rate limit exceeded, please retry later
Ce message signale une limite quelque part sur le chemin de la requête. Son libellé seul n’identifie ni le compte, ni la ressource limitée, ni l’heure de réinitialisation. Ne déduisez pas un fournisseur précis du mot « upstream » et ne supposez pas qu’acheter davantage de crédits résout toute réponse de limitation.
La documentation de l’API directe OpenAI distingue les limites de requêtes et de tokens, les surcharges temporaires et les conditions de quota ou de dépenses. Elle documente les en-têtes de limitation et précise que Retry-After, lorsqu’il accompagne une condition temporaire, donne une attente minimale. Elle avertit aussi que les situations de compte nécessitant une action ne se résolvent pas par de nouvelles tentatives.[4] Ce sont les règles documentées d’OpenAI ; utilisez celles et les en-têtes de l’endpoint que vous appelez réellement.
| Preuve issue de l’endpoint réel | Réponse adaptée |
|---|---|
| Limite temporaire avec indication de reprise | Attendre au moins la durée indiquée, puis réessayer selon une politique bornée |
| Débit de requêtes épuisé | Réduire le débit des processus partageant cette limite |
| Débit de tokens épuisé | Examiner la demande de tokens, pas seulement le nombre de requêtes |
| Condition de quota, facturation ou plafond de dépenses | Résoudre le problème de compte avant de rejouer la charge |
| Message générique sans ressource identifiée | Relever l’identifiant de requête et demander à l’opérateur d’identifier la contrainte |
OpenAI recommande un délai exponentiel avec une composante aléatoire lorsqu’aucune indication adaptée n’est fournie, et précise que les requêtes échouées peuvent compter dans les limites. Tenez compte des nouvelles tentatives du SDK avant d’ajouter une boucle applicative.[4] Une politique doit avoir une condition d’arrêt ; elle ne doit pas transformer une tâche refusée en une série illimitée de requêtes.
Pour une tâche d’agent, inspectez également ce qui a déjà eu lieu. Lisez le diff de l’arbre de travail et l’historique des outils avant de demander à l’agent de répéter une opération interrompue. L’échec de la réponse finale ne prouve pas l’échec de toutes les actions précédentes. Cette vérification est un conseil opérationnel contre les doublons, pas l’affirmation que Codex annule automatiquement les actions externes.
Why does my Codex stream disconnect before completion and the stream closed before the response is completed?
Dans le chemin SSE examiné, le client a atteint la fin de l’entrée sans renvoyer correctement la fin de réponse et sans disposer d’une erreur mémorisée plus précise. Comparez la trace reçue à celle du service pour déterminer si l’événement terminal était absent, invalide ou perdu en chemin. Le message seul ne tranche pas entre ces explications.[1]
Why does Codex keep disconnecting?
Des échecs répétés demandent une comparaison reproductible : gardez version du client, modèle et endpoint constants, capturez l’erreur complète et changez une condition à la fois. Distinguez d’abord fermeture prématurée, erreur de transport, délai d’inactivité et refus du service. Augmenter les tentatives avant cette distinction peut simplement répéter l’échec sans fournir de preuves utiles.
codex request timed out
Identifiez le composant qui a signalé le timeout. La configuration des fournisseurs Codex expose un intervalle d’inactivité SSE, tandis qu’un client API peut aussi signaler un délai de requête dépassé. La documentation OpenAI énumère des facteurs réseau et serveur à examiner ; elle ne fait pas d’un timeout la preuve d’une cause précise.[2][5]
resume stream unavailable
N’y voyez ni une garantie de reprise de la réponse, ni une preuve de perte de tout le travail terminé. Enregistrez version et erreur complète, préservez la conversation et inspectez les actions d’outils déjà accomplies. Les sources examinées ne définissent pas de commande de récupération universelle pour cette chaîne exacte ; aucune n’est donc prescrite ici.
Si vous comptez changer de modèle ou d’endpoint, le guide de migration GPT-6 Astra explique comment séparer découverte des modèles, changements de protocole et validation des outils. La page du modèle présente l’offre reAPI actuelle. Ni le nom d’un modèle ni son prix ne remplacent une vérification réussie de compatibilité Codex de bout en bout.
Sources vérifiées le 22 octobre 2026
- OpenAI. Codex Responses SSE implementation, révision
c2d5ea52e1b7ab11ee2d71dc44ea1ef00f9c8eb3. Code et tests associés. - OpenAI. Configuration Reference, protocole fournisseur, délais et nouvelles tentatives. Référence de configuration.
- reAPI. Documentation des requêtes GPT-6 Astra. Contrat de requête publié ; documentation d’implémentation examinée localement, sans test réel de génération.
- OpenAI. Rate limits, en-têtes de réponse et recommandations de reprise. Limites API.
- OpenAI. Error codes, erreurs de connexion API et de délai dépassé. Aide sur les erreurs API.