Codex Desktop Windows dictation frequently fails with "Unable to transcribe audio" despite working mic

Open 💬 1 comment Opened Jun 4, 2026 by kudlickiandrew012

Summary

Codex Desktop on Windows frequently shows the toast Unable to transcribe audio after dictation. This appears to be a recurring recorder/session failure rather than a microphone, Windows permission, or connectivity problem.

The user reports this happens many times per day and relies heavily on dictation for long prompts. Prior incidents include both:

  • a failed dictation that left recoverable local WebM/Opus blobs, and
  • a failed dictation that left no new blob/transcript at all.

The current latest failure is the no-blob variant.

Environment

  • Product: Codex Desktop on Windows
  • Package: OpenAI.Codex_26.527.3686.0_x64__2p2nqsd0c76g0
  • Codex CLI runtime after update: 0.137.0
  • OS from codex doctor: Windows 10.0.26100 / Windows 11 Core, 64-bit
  • Auth/connectivity: codex doctor reports auth configured, websocket connected, state/log DB integrity OK
  • Doctor summary after update: 17 ok | 1 idle | 2 notes | 0 warn | 0 fail

Latest Observed Failure

Date/time: 2026-06-04, approximately 01:16-01:26 America/New_York

Observed UI symptom:

  • Codex Desktop displayed a toast saying Unable to transcribe audio.

Local checks immediately after the failure:

  • transcription-history.jsonl did not receive a new successful transcript after the failure.
  • The Codex blob_storage directory existed, but recursive file count was 0; no new recoverable audio blob was written for this failed attempt.
  • Windows microphone permission for Codex was Allow under the relevant ConsentStore registry key.
  • FFmpeg DirectShow listed the active microphones, including Microphone (JLab Jbuds Cam Microphone) and Microphone Array (Realtek(R) Audio).
  • A direct FFmpeg test recorded successfully from Microphone (JLab Jbuds Cam Microphone) into a valid WAV:
  • duration: about 1.97 seconds
  • sample rate: 16000 Hz
  • size: 63118 bytes

Prior Related Evidence

  1. Previous recoverable failed dictation
  • A prior failed retry dictation event left recoverable local WebM/Opus blobs.
  • The reconstructed audio was about 1755.356625 seconds, proving Codex had recorded audio locally but failed later in the save/transcribe flow.
  • Full-file transcription exceeded the model duration limit and had to be chunked.
  1. Previous no-blob failed dictation
  • Windows mic permission was allowed.
  • FFmpeg could read the same JLab microphone successfully.
  • No new blob or transcript appeared for the failed attempt.
  • That pointed to a Codex Desktop recorder/session abort before a usable blob/transcript was created.

The latest failure matches the second pattern.

Expected Behavior

When dictation fails to transcribe, Codex Desktop should either:

  1. save the transcript into the input box, or
  2. preserve a local recoverable audio artifact and expose a retry/recover option.

Actual Behavior

Codex Desktop shows Unable to transcribe audio and does not reliably save a transcript or recoverable audio blob.

Working Theory

The failure appears to be inside Codex Desktop's recorder/session lifecycle. The microphone and OS permission are valid, and OpenAI connectivity is healthy. Sometimes audio is recorded locally and can be recovered from blobs; other times the recorder appears to abort before writing any audio artifact.

Local Mitigation Tried

  • Verified Windows mic permission is allowed.
  • Verified the microphone records outside Codex.
  • Verified Codex state/log DBs are healthy via codex doctor.
  • Updated global Codex CLI runtime from 0.135.0 to 0.137.0.
  • Regenerated redacted codex doctor --json locally after the update.

Request

Please investigate Codex Desktop dictation failures where the app aborts before writing a local blob/transcript, despite valid Windows mic permission and successful external microphone capture.

A recoverable local audio fallback would prevent loss of long dictation when transcription fails.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗