Codex Desktop dictation /transcribe 401 with ChatGPT login and Azure provider

Open 💬 2 comments Opened Jun 14, 2026 by renatosneves

Summary

Codex Desktop voice dictation fails with the toast: "Unable to transcribe audio".

The failure occurs while using Codex Desktop logged in with ChatGPT, with the active model provider configured as Azure OpenAI. Azure model calls continue to work; only dictation/transcription fails.

Environment

  • Product: Codex Desktop for macOS
  • App version observed locally: 26.609.30741 / 0.140.0-alpha.2
  • Auth: codex login status reports Logged in using ChatGPT
  • Active model provider: Azure OpenAI via model_provider = "azure"
  • Azure endpoint/model calls continue to work

Steps to reproduce

  1. Configure Codex Desktop/CLI with an Azure OpenAI model provider.
  2. Sign in to ChatGPT successfully with codex login --device-auth.
  3. Confirm codex login status says Logged in using ChatGPT.
  4. In Codex Desktop, use voice dictation from the composer or global dictation.
  5. Stop recording and wait for transcription.

Expected behavior

Codex Desktop should attach the ChatGPT bearer token to the ChatGPT dictation/transcription request and return a transcript.

Actual behavior

Dictation fails with "Unable to transcribe audio".

Observed app logs show the transcription request receives a 401:

POST https://chatgpt.com/backend-api/transcribe -> 401
[electron-fetch-wrapper] desktop_fetch_auth_401 hadToken=false skipRetryReason=no_token_attached target="POST https://chatgpt.com/backend-api/:param" tokenSource=loaded willRetry=false

The important part is tokenSource=loaded but hadToken=false, so the desktop auth bridge appears to be returning/using an empty token for ChatGPT backend requests even though the local ChatGPT login is valid.

Troubleshooting already tried

  • Re-ran ChatGPT device auth login successfully.
  • Confirmed codex login status reports ChatGPT login.
  • Reset/re-granted macOS microphone and speech recognition permissions.
  • Restarted Codex Desktop.
  • Confirmed Azure model calls still go to the Azure endpoint and are unrelated to the dictation failure.

Local workaround that confirmed the likely cause

A local patch to the Codex Desktop auth bridge fixed dictation by falling back to ~/.codex/auth.json tokens.access_token when the app-server returns an empty token for ChatGPT backend requests.

This suggests the bug is in Codex Desktop's token attachment/auth bridge for ChatGPT backend endpoints such as /backend-api/transcribe, especially when the active model provider is Azure.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗