CLI login fails on Android/Termux during token exchange step

Resolved 💬 3 comments Opened Oct 15, 2025 by lubarrolleta Closed Jan 10, 2026
💡 Likely answer: A maintainer (etraut-openai, contributor) responded on this thread — see the highlighted reply below.

Descripción del Bug:
El flujo de autenticación de la CLI (openai login) falla de forma consistente en un entorno de Android con Termux. El proceso se interrumpe después de la redirección a localhost, específicamente durante el paso de intercambio de tokens (token exchange), aunque la conectividad de red es correcta.
Entorno:
Sistema Operativo: Android (especificar tu versión, ej: Android 13)
Aplicación de Terminal: Termux (especificar tu versión)
Versión de la CLI de OpenAI: (ejecuta openai --version para obtenerla)
Red: Probado tanto en Wi-Fi como en datos móviles.
Pasos para Reproducir el Bug:
Instalar la CLI de OpenAI en un entorno de Termux en Android.
Ejecutar el comando openai login.
Copiar la URL de autenticación proporcionada.
Pegar la URL en un navegador en el mismo dispositivo Android e iniciar sesión en la cuenta de OpenAI.
El navegador redirige correctamente a una URL de localhost:[puerto] con un código de autorización.
Observar el terminal de Termux.
Comportamiento Esperado:
La CLI debería recibir el código de autorización, intercambiarlo exitosamente por un token de acceso y finalizar el proceso de login, dejando la sesión autenticada y lista para usar.
Comportamiento Actual (El Bug):
La CLI muestra el error: Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token).
Después del fallo, la CLI entra en un estado inestable. Intentar salir con Ctrl+C a menudo reinicia el intento de login en un bucle.
Intentar ejecutar otros comandos como openai init resulta en un crash de la aplicación, probablemente porque el estado de autenticación está corrupto.
Evidencia de Diagnóstico (Información Adicional):
Este no parece ser un problema de conectividad de red general:
Una prueba manual desde la misma sesión de Termux con curl -v https://auth.openai.com/oauth/token se conecta exitosamente al servidor (recibiendo un error 405, como es de esperar para una petición GET, pero demostrando que la conexión y el handshake TLS funcionan).
Como punto de comparación, los flujos de login de las herramientas CLI de Google Gemini y Anthropic Claude (que utilizan un mecanismo de localhost idéntico) funcionan sin ningún problema en el mismo entorno de Termux.
Esto sugiere fuertemente que el problema reside en la implementación específica de la petición de intercambio de tokens de la CLI de OpenAI en un entorno de Android/Termux.

View original on GitHub ↗

3 Comments

francescom · 10 months ago

I can confirm this behaviour.

In Termux (linux) on Android codex installs fine and easy and seems to work quite ok at the beginning, but in the authentication phase the token exchange fails with error:

Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)

I can summarize the chain of events:

  • You install and start Codex
  • Codex asks you to either login with OpenAI or provide you own token, you choose 1
  • Codex writes in the terminal the URL to login similar to (I have removed some codes):

https://auth.openai.com/oauth/authorize?response_type=code&client_id=...&redirect_uri=http%3A%2F%2Flocalhost%3A1455%2Fauth%2Fcallback&scope=openid%20profile%20email%20offline_access&code_challenge=...&code_challenge_method=S256&id_token_add_organizations=true&codex_cli_simplified_flow=true&state=...&originator=codex_cli_rs

  • you open the url provided carefully (watch out for inserted newlines and other "traps")
  • the url works and now you login in OpenAi in https://auth.openai.com/log-in (I use Google to login)
  • OpenAi asks for 2FA code, I choose email to receive the code
  • I copy and paste the correct code (wrong code gives different results)
  • now browser redirects to a localhost url: http://localhost:1455/auth/callback?code=.......&scope=openid+profile+email+offline_access&state=...
  • The url opens in the browser (so it is not a connection error or server not started)
  • The local server or script (codex) apparently tries to connect to auth.openai.com and fails with the error Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)
  • The termux session never advances and even if the login was successful there is no way to prove it to the local codex (and this in my opinion is the real bug, once you have proved who you are to the page there should always be a way to bring that information to the local script even if localhost was blocked or web coneection locked)
guspix · 10 months ago

Just an FYI: Even after authenticating using the instructions for headless environments, Codex will fail to make requests from Termux if you installed with npm. For Codex to work in termux you have to build it yourself on your device (until it's added to the termux pkg repos). I wrote the instructions that worked for me over here

etraut-openai contributor · 7 months ago

Closing old issue. You can use the headless device login flow.