openai / openai/codex

CLI Voice playback is choppy on macOS in 0.155.1; playout buffers are not configurable

Open
#46,637 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug CLI
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of Codex CLI is running?

codex-cli 0.155.1, installed through Homebrew. This was the latest stable GitHub release when checked on 2026-09-19.
Voice runtime manifest build commit: be2951ea34f0d295ed0becf97079f92fa5f6950e.

What subscription do you have?

Not specified in this report.

Which model were you using?

The Voice backend model has not been confirmed. This report concerns audible Voice playback in the CLI.

What platform is your computer?

macOS 15.8 (24H23), x86_64.
Built-in microphone: 48,000 Hz. Built-in speakers: 44,100 Hz, selected as the default output at inspection time.
The sample-rate difference is an environment detail, not an established cause; the playback pipeline includes resampling.

What issue are you seeing?

During a live Chinese-language Voice conversation in Codex CLI, the assistant's spoken output sounds noticeably choppy / discontinuous.
The user reported this while the session was active. The bundled codex-voice-host process was running as a child of the active CLI.

This is a playback-quality report. There is not yet a measured packet-loss, jitter, or playback-underrun trace, so the cause is not established.

What steps can reproduce the bug?

Observed workflow:

  1. Start a Voice conversation in Codex CLI 0.155.1 on macOS.
  2. Speak and listen to the assistant through the built-in speakers.
  3. Observe discontinuities in the spoken response.

Reproduction frequency and a deterministic network/device trigger have not yet been established.

What is the expected behavior?

Continuous, intelligible speech playback. If playback is starving, diagnostics should help distinguish network delivery, decoding, and local device scheduling problems.

Additional information

Source inspection of the exact installed build found the following potential investigation points; these do not prove the root cause:

  • The GStreamer RTP jitter buffer sets latency to 60 ms, enables drop-on-latency and do-lost, and disables do-retransmission.
  • The Opus decoder enables packet-loss concealment (plc) but disables in-band FEC (use-inband-fec).
  • The device playback queue is capped at sample_rate / 25 samples (approximately 40 ms); the audio sink separately requests a 40 ms ring buffer. These are different buffering stages, not a measured total latency.
  • The output callback substitutes zero-valued samples when no playback sample is available. If this occurs during speech, it can produce audible gaps; no underrun count has been collected for this session.
  • These playout parameters are literals in the implementation and are not exposed through the inspected configuration schema or helper control protocol.

Exact-build source references:

Could the CLI expose privacy-preserving packet/jitter/underrun diagnostics, and consider an adaptive jitter buffer or a bounded user-configurable buffer target for troubleshooting? Increasing buffering may trade responsiveness for smoother playback; it has not yet been tested as a fix here.

Codex doctor report

codex doctor --json was run. Status-only excerpt follows; unrelated account, local configuration, and workspace details are omitted. This is not a full doctor report and does not measure the active Voice media path.

{
  "codexVersion": "0.155.1",
  "overallStatus": "warning",
  "checks": {
    "installation": {
      "status": "ok"
    },
    "config.load": {
      "status": "ok"
    },
    "auth.credentials": {
      "status": "ok"
    },
    "network.env": {
      "status": "ok"
    },
    "network.provider_reachability": {
      "status": "ok"
    },
    "network.websocket_reachability": {
      "status": "ok"
    },
    "updates.status": {
      "status": "ok"
    }
  }
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with codex-rs/voice-host/src/playout.rs, playback.rs, audio_sink.rs, and devices.rs, then reproduce the Voice workflow on macOS while measuring packet, jitter, and underrun behavior. Define whether the work is diagnostics, adaptive buffering, or a bounded configuration option; done requires an agreed scope and evidence that playback quality or troubleshooting improves without exposing private data.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
audio-video-rtc, cli
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.