AIFreeAPI Logo

Codex Token Exchange Failed: identifica la fase antes de repetir el login

A
6 min readOpenAI Codex

Una pantalla de éxito en el navegador no prueba que Codex recibió el token. Distingue exchange, callback y refresh antes de reparar el host correcto.

Mapa en español para diagnosticar Codex token exchange failed por fase, host real, reconstrucción de sesión, callback remoto y prueba de recuperación

Token exchange failed y Your access token could not be refreshed pertenecen a la autenticación de Codex, pero aparecen en fases distintas. El primero ocurre mientras Codex intenta convertir el resultado de autorización del navegador en tokens utilizables. El segundo aparece cuando una sesión ya guardada no puede renovarse. OpenAI no publica una matriz exhaustiva que asigne cada texto a una causa única.

El navegador puede mostrar que el acceso terminó aunque el proceso de Codex no haya recibido el callback local, alcanzado el token endpoint o guardado las credenciales. Primero identifica dónde se ejecuta ese proceso y cuál fue el último paso observable; después elige entre reconstruir la sesión, usar device auth, reenviar el puerto o revisar red y TLS.

Usa el final del error para elegir la primera prueba

Conserva el mensaje completo, pero elimina los secretos. La parte final reduce el espacio de diagnóstico:

Señal observableLo que sí establecePrimera comprobación útil
error sending request for url (.../oauth/token), timeout o connection errorLa solicitud del proceso al token endpoint no terminóRed, proxy y TLS desde el host del proceso, no solo desde el navegador
token endpoint returned status 403El endpoint recibió la solicitud y la rechazóGuardar el estado y el contexto saneado; comprobar cuenta, workspace y política sin adivinar una causa regional
El navegador termina y la CLI sigue esperandoEl callback de loopback local puede no haber llegado a CodexConfirmar WSL, SSH, contenedor o extension host remoto
access token could not be refreshedFalló la renovación de una sesión guardadaRevisar auth status en el entorno real y reconstruir credenciales con comandos compatibles
CERTIFICATE_VERIFY_FAILED u otro error CA explícitoEl proceso no confía en la cadena de certificadosUsar un bundle corporativo de confianza solo cuando exista TLS interception conocida

Son límites de diagnóstico, no causas automáticas. Un 403 demuestra rechazo, pero no identifica por sí solo cuenta, región, VPN, suscripción o proxy.

Diagnóstico en español de Codex por señal final del error, host que guarda la sesión, reconstrucción en CLI o App, excepciones de login, prueba pequeña y escalado sin credenciales
Diagnóstico en español de Codex por señal final del error, host que guarda la sesión, reconstrucción en CLI o App, excepciones de login, prueba pequeña y escalado sin credenciales

Protege el estado del proyecto antes de tocar el login

Un error de autenticación no borra automáticamente los archivos que Codex ya ha modificado. El riesgo aparece al repetir la misma tarea en varias ventanas o al eliminar carpetas completas para “limpiar la caché”.

Antes de salir:

  • revisa los cambios sin commit del repositorio;
  • guarda el prompt no enviado y el error completo, sin datos privados;
  • anota la hora y zona horaria, la superficie de Codex, la versión y la ruta del proyecto;
  • registra la última acción que terminó correctamente;
  • detén los intentos duplicados en App, CLI e IDE.

No compartas auth.json, access tokens, refresh tokens, API keys, OTP, cookies ni un HAR sin limpiar. La documentación de autenticación de OpenAI explica que auth.json, cuando se usa almacenamiento en archivo, contiene tokens de acceso y debe tratarse como una contraseña.

Encuentra el host que guarda la sesión

La pantalla visible no siempre coincide con el equipo que ejecuta Codex. Una ventana de VS Code puede usar un extension host por Remote SSH. La terminal puede estar dentro de WSL o de un contenedor. Un agente externo puede conservar un perfil OAuth propio aunque la CLI independiente esté sana.

SuperficieLímite de credenciales que debes revisarLo que no demuestra que esté limpio
Codex App localPerfil activo de la App y almacén localSalir de ChatGPT en otro perfil del navegador
Codex CLIUsuario del sistema y CODEX_HOME de esa shellQue ChatGPT web funcione
Extensión de IDEExtension host local o remotoReinstalar solo la interfaz del editor
WSL, SSH, contenedor o VMHome o keyring dentro de ese entornoSalir en el equipo anfitrión
Harness o gateway externoPerfil de autenticación propioQue la CLI de Codex funcione aparte

OpenAI documenta que la CLI y la extensión de IDE pueden compartir credenciales guardadas. Estas pueden vivir en ~/.codex/auth.json o en el almacén de credenciales del sistema operativo. Por eso conviene usar primero el logout admitido: borrar un archivo supuesto no sirve si el proceso usa un keyring, otro usuario o un host remoto.

Reconstruye la sesión de CLI e IDE

Ejecuta los comandos en el entorno donde vive el proceso que muestra el error. Comprueba primero el método activo:

bash
codex login status

El resultado indica si hay credenciales y qué modo de autenticación está activo. Puede revelar que el usuario esperaba acceso con ChatGPT pero la shell usa una API key, o que el IDE remoto corre con otro usuario del sistema. Un status correcto no prueba todavía que una solicitud real funcione.

Elimina las credenciales guardadas mediante la ruta compatible y vuelve a entrar:

bash
codex logout codex login

En el navegador, confirma la cuenta de ChatGPT y el workspace previstos. Después ejecuta de nuevo codex login status.

La documentación oficial de autenticación describe codex login, codex login status y codex logout. Reinicia completamente el IDE después del nuevo login: un extension host que ya estaba abierto puede conservar estado antiguo aunque la caché compartida haya cambiado.

En Codex App, abre el menú del perfil, confirma la cuenta o el estado de API key y cierra sesión dentro de la App. Sal por completo, vuelve a abrirla e inicia sesión con el método previsto. Cerrar chatgpt.com en un navegador no demuestra que el almacén local de la App se haya vaciado.

Una API key tampoco es una reparación universal del login de ChatGPT. Se factura por la cuenta de Platform y algunas funciones que dependen del workspace o de servicios cloud pueden no estar disponibles. Primero decide qué ruta de autenticación necesitabas recuperar.

Flujo en español para completar una reautenticación segura de Codex: fase, host, método, device code o SSH, CA corporativa, comandos CLI y señal de éxito con una tarea real
Flujo en español para completar una reautenticación segura de Codex: fase, host, método, device code o SSH, CA corporativa, comandos CLI y señal de éxito con una tarea real

Cuando el nuevo inicio de sesión no termina

Si las credenciales antiguas ya se borraron pero el navegador no devuelve el control a Codex, el problema ha cambiado de fase.

En una CLI remota o sin interfaz, el endpoint de callback local puede no estar disponible. Cuando la cuenta o el workspace lo permiten, usa device code:

bash
codex login --device-auth

Abre el enlace, inicia sesión e introduce el código de un solo uso. No se lo envíes a nadie. Si la opción está desactivada, debe habilitarla el usuario en su seguridad o el administrador del workspace.

Si mantienes el flujo normal del navegador y la CLI corre en un host accesible por SSH, el callback oficial predeterminado usa el puerto 1455 de loopback local. Crea el túnel desde tu equipo y ejecuta el login en esa misma sesión SSH:

bash
ssh -L 1455:[::1]:1455 user@remote codex login

No expongas el puerto 1455 a Internet ni lo añadas mecánicamente si Codex ya corre en local. El túnel solo corrige la ruta del callback; no repara un 403 del endpoint ni un fallo de certificado.

En una red corporativa con proxy TLS o autoridad raíz privada, la guía oficial ofrece CODEX_CA_CERTIFICATE para un bundle PEM de confianza. Además, una ejecución directa de codex login escribe codex-login.log en el directorio configurado. Ese log ayuda a separar callback, certificado y login del navegador, pero hay que eliminar tokens, correos, identificadores de workspace y rutas privadas antes de compartirlo.

Un entorno administrado puede obligar a usar ChatGPT o API key y limitar ChatGPT a un workspace concreto. Si una cuenta recién elegida se rechaza o sale de inmediato, deja de rotar archivos locales y pide al administrador que revise membership, provisioning, método permitido y workspace esperado.

Workload identity es otra excepción. Si el entorno del proceso entrega la identidad, OpenAI indica que codex login y codex logout se rechazan. La reparación corresponde al proveedor de identidad, la regla de federación o el runtime.

Comprueba una tarea, no solo la pantalla de login

Una recuperación completa tiene tres señales:

  1. codex login status muestra el método previsto.
  2. App o IDE muestra la cuenta y el workspace correctos cuando esa información está disponible.
  3. Una tarea pequeña termina en el mismo proyecto y entorno que falló.

Empieza con una acción de lectura, como resumir un archivo no sensible. No reanudes inmediatamente una escritura grande. Si la prueba funciona, revisa los cambios existentes y continúa la tarea original.

Si aparece un error distinto, cambia también el diagnóstico. HTTP 429 pertenece a los límites de Codex; una conexión, herramienta o proceso bloqueado pertenece al diagnóstico de timeout; una solicitud de teléfono, MFA o device verification pertenece a la guía de verificación de Codex.

Escala sin entregar secretos

Si el login nuevo se completó en el host correcto y el mismo error vuelve, prepara un paquete mínimo:

  • error redactado, hora y zona horaria;
  • App, CLI o IDE y versión;
  • sistema operativo y contexto local, WSL, SSH, contenedor o VM;
  • método activo, sin token ni identificador completo de cuenta;
  • resultado del logout y del nuevo flujo de navegador o dispositivo;
  • resultado de una prueba pequeña;
  • extracto saneado de codex-login.log solo si falló el login nuevo.

No adjuntes auth.json, tokens, API keys, OTP, cookies, un HAR completo ni capturas con secretos. La recuperación no termina cuando reaparece el formulario de acceso, sino cuando las credenciales nuevas del host correcto están asociadas a la cuenta y al método previstos y pueden completar una tarea acotada de Codex.