CLI Voice playback is choppy on macOS in 0.155.1; playout buffers are not configurable
Nobody has claimed this yet.
- 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:
- Start a Voice conversation in Codex CLI 0.155.1 on macOS.
- Speak and listen to the assistant through the built-in speakers.
- 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
latencyto 60 ms, enablesdrop-on-latencyanddo-lost, and disablesdo-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 / 25samples (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:
- Jitter buffer and Opus decoder
- Playback queue bound
- Audio sink ring-buffer settings
- Silence substitution in the device callback
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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