What variant of Codex are you using?
App (macOS desktop); also relevant to the CLI / input protocol (codex-cli 0.146.0)
What feature would you like to see?
I work with a lot of audio attachments in Codex ( embeds render as an inline audio player). Two gaps make that workflow painful:
1. No playback speed control in the inline audio player
The player today has only: play/pause, a scrubber, elapsed/total time, and a … menu:
♪ growing-live.mp3
MP3 audio ▶ …
●────────────────────── 0:00 / 1:32
There is no way to speed the audio up or slow it down. Listening back to long recordings, meeting captures, or generated audio at 1× only is slow, and for reviewing many clips in a row it's the single biggest time sink. Every other audio player I use daily (podcast apps, browser <video>/<audio> menus, Slack voice clips, YouTube) offers this.
Requested:
- A speed control on the player — at minimum
1× / 1.25× / 1.5× / 1.75× / 2×, ideally 0.5×–3×.
- Put it in the existing
… menu if the inline player is too small for a dedicated button.
- Remember the last selected speed across clips and across sessions, so a whole review pass doesn't require re-selecting it per file.
- While there: ±10s skip and a keyboard shortcut for play/pause would round it out.
2. Audio sources are local-file only — please allow HTTP(S) URLs
Today audio input has to be a local file. In the code, UserInput::LocalAudio { path } is read off disk and inlined as a base64 data: URL (codex-rs/protocol/src/local_media.rs), and the code-mode docs state it outright: "audio_url should be a base64-encoded data: URL" (codex-rs/code-mode-protocol/src/description.rs). Nothing accepts https://…/clip.mp3.
I tested this explicitly with two HTTP audio endpoints, and Codex made no request to either one — the reference is simply never fetched.
Requested:
- Accept
http(s) URLs wherever a local audio file is accepted today:  in a message, attachments, and the audio input in the protocol/SDK.
- Fetch and render remote audio in the inline player (streaming rather than fully downloading, where possible).
- Keep it bounded and predictable: honor the existing 50 MB audio cap, enforce a content-type check and a timeout, and surface a clear error when a fetch fails instead of silently rendering a dead player.
- If fetching remote media needs to stay opt-in for network/safety reasons, gate it behind a config flag rather than dropping the URL.
Why it matters: audio I want Codex to work with usually already lives behind a URL (recording services, object storage, CI artifacts, shared links). Having to download every clip to disk first, purely to hand it to Codex, is friction with no upside — and once it's inlined as a data URL it also bloats the conversation.
Additional information
Related but distinct:
Happy to add the screenshot of the current player and the exact HTTP test setup in a comment if useful.
What variant of Codex are you using?
App (macOS desktop); also relevant to the CLI / input protocol (codex-cli 0.146.0)
What feature would you like to see?
I work with a lot of audio attachments in Codex (
embeds render as an inline audio player). Two gaps make that workflow painful:1. No playback speed control in the inline audio player
The player today has only: play/pause, a scrubber, elapsed/total time, and a
…menu:There is no way to speed the audio up or slow it down. Listening back to long recordings, meeting captures, or generated audio at 1× only is slow, and for reviewing many clips in a row it's the single biggest time sink. Every other audio player I use daily (podcast apps, browser
<video>/<audio>menus, Slack voice clips, YouTube) offers this.Requested:
1×/1.25×/1.5×/1.75×/2×, ideally0.5×–3×.…menu if the inline player is too small for a dedicated button.2. Audio sources are local-file only — please allow HTTP(S) URLs
Today audio input has to be a local file. In the code,
UserInput::LocalAudio { path }is read off disk and inlined as a base64data:URL (codex-rs/protocol/src/local_media.rs), and the code-mode docs state it outright: "audio_urlshould be a base64-encodeddata:URL" (codex-rs/code-mode-protocol/src/description.rs). Nothing acceptshttps://…/clip.mp3.I tested this explicitly with two HTTP audio endpoints, and Codex made no request to either one — the reference is simply never fetched.
Requested:
http(s)URLs wherever a local audio file is accepted today:in a message, attachments, and the audio input in the protocol/SDK.Why it matters: audio I want Codex to work with usually already lives behind a URL (recording services, object storage, CI artifacts, shared links). Having to download every clip to disk first, purely to hand it to Codex, is friction with no upside — and once it's inlined as a data URL it also bloats the conversation.
Additional information
Related but distinct:
Happy to add the screenshot of the current player and the exact HTTP test setup in a comment if useful.