Codex Voice Input on Mac: Dictation, Setup and Fixes
Use native dictation or Ducduc for Codex on Mac. Set up reviewable prompts, preserve technical terms, and fix shortcut or text-insertion failures.
Reviewed October 25 against public ListenIn 0.3.8/build 45 (October 17). Ducduc is the new brand; newer local builds are not this download. Article language does not imply app UI or recognition-language support. Check the public release
Quick answer
For Codex voice input on Mac, use Dictate in the desktop composer if available, or focus the composer and start Ducduc. Stop, review the words and constraints, then send. Ducduc’s optional prompt cleanup organizes spoken requirements; automatic formatting depends on the detected app or supported website.
To enter a Codex prompt by voice on Mac, use Dictate in the desktop composer if it is available, or focus the composer and start a separate dictation app such as Ducduc. Stop recording, check the text, then send it. Choose live voice chat when you want a spoken conversation that can steer work as it happens.
This guide covers the desktop composer and the terminal route separately. A spoken coding prompt still needs the change you want, the context that matters, and the boundaries you want preserved; dictation cannot supply requirements you never stated.
Ducduc is a Mac dictation app: it recognizes speech on-device, cleans up the recognized text, and inserts it into the focused field when safe. Its optional prompt mode uses the captured app or supported website context. Automatic prompt formatting depends on the host being recognized; a different app or wrapper may use ordinary cleanup instead. Ordinary dictation does not inspect your repository or execute the prompt. The separate AI Command mode can be configured to submit automatically, so use ordinary dictation for the review-first steps below.
Choose dictation or a live voice conversation
OpenAI’s dictation instructions describe selecting Dictate in the desktop composer, speaking, then reviewing and editing the transcript before sending. For a conversation, its voice guide describes Start voice chat in a supported task. These are different actions. If the voice-chat control is missing, check app and host updates, account rollout and workspace availability; its absence alone does not establish that dictation is unavailable. Official documentation was rechecked October 25, 2026.
| Your task | Starting point |
|---|---|
| Talk back and forth about a running task | The coding tool’s live voice feature, where available |
| Read and edit the exact instruction before sending | Native dictation or a system-wide dictation app |
| Use one dictation shortcut across Codex, email and notes | A system-wide Mac app such as Ducduc |
| Keep both speech recognition and cleanup on your Mac | Ducduc Offline Mode with downloaded speech resources, a downloaded local Ollama model and Ollama cloud features disabled |
A local dictation pipeline does not make the destination coding agent local. Once you send the prompt, Codex processes it under its own settings and data policies. Local versus cloud dictation explains that boundary.
Set up Ducduc for the Codex composer
- Install Ducduc on macOS 14 or later. Complete its microphone, speech recognition and Accessibility setup. On macOS 14–15, check that the requested dictation language is downloaded.
- In Ducduc Settings → Dictation, enable Write prompts in AI coding tools. This setting selects instruction cleanup in recognized coding apps. Cleanup strength for ordinary apps is a separate choice.
- Check your configured trigger in the same tab. The default is fn/Globe, but a fresh install can choose Right Command if macOS already owns fn. Do not assume the key printed in a guide is the key on your Mac.
- Open a Codex task and click its composer. Tap the trigger, speak your instruction, then tap again to stop. If you configured a hold interaction, use that instead.
- Read the inserted text. Correct identifiers or missing details, then send it yourself.
For a first check, dictate “Summarize this task; do not edit any files” and inspect the composer without sending it. A successful test means the text reached the intended field, retains the no-edit constraint, and is still waiting for your send action. Test with a harmless request before a task involving production data. The purpose is to check focus and text delivery, not to ask the coding agent to perform extra work. If fn opens emoji or switches languages, follow the shortcut conflict guide.
Organize meaning before choosing paragraphs or lists
The prompt cleanup rules illustrated by the archived October 17 check put the goal first, merge repeated requests, and keep reasons and constraints beside the action they explain. A simple request can remain one sentence. Multiple independent requirements may use a list. Neither format should add tests, tools, file paths or implementation choices you did not speak.
On October 17, 2026, we sent the following synthetic transcript to the production cleanup endpoint in command mode. Below is the unedited response from that one text-only check. The request settings, timestamp and output are archived. It tests cleanup, not speech recognition, app detection, latency or repeatability.
Synthetic transcript input:
那个设置里按钮太小了,然后点起来容易点错,我想让它更容易点击,但是别把整个页面都改了。
Actual cleanup response:
设置里的按钮太小,容易点错;希望提升可点击性,但不要改动整个页面。
This response keeps the small-button problem, the requested clickability improvement and the scope limit. It does not invent a minimum button size or a redesign plan. A genuine question such as “I am not sure whether this is a cache problem; investigate first and do not clear the cache” must remain uncertain. Cleanup should not turn it into “clear the cache.”
Before sending your own result, check three things: did the requested change survive, did the scope limit survive, and did the text keep any uncertainty about the cause? Then check exact identifiers separately. For example, cacheKey and cache key may look similar in prose but refer to different things in a repository. Type or paste a precise identifier when necessary.
The result still depends on the recognizer and cleanup model. Compare the original and final text in Dictation History if a term or constraint looks wrong. Choosing a cleanup strength explains what to check.
If Codex gets a copy card instead of inserted text
A copy card means Ducduc kept the result but could not establish safe automatic insertion. A visible caret alone is not proof that the app exposes a writable Accessibility element.
| Check | Next step |
|---|---|
| Accessibility permission is missing | Grant it to the installed Ducduc copy, then retry |
| You changed app, field or selection during recording or cleanup | Focus the intended composer again and use Copy, then paste manually |
| The field is secure, or Terminal uses Secure Keyboard Entry | Keep the security protection; use manual copy and paste where appropriate |
| The app does not expose enough field information | Use the copy fallback rather than repeatedly dictating the same text |
Clicking Copy puts the result on the clipboard and replaces the recovery card with a short Copied toast. It does not submit the prompt. Do not press Enter until you have checked where the text landed.
For Codex CLI inside Terminal, iTerm2 or another terminal, delivery depends on the terminal and its secure-input state. Terminal dictation troubleshooting covers that route separately.
Desktop apps and browser fields have different detection limits
Ducduc captures the target when recording starts. Native coding apps are recognized by their app identity. Where the focused field’s Accessibility ancestors expose a web URL, Ducduc can recognize supported AI sites and distinguish some web mail, chat and document contexts. Search and password fields are excluded from automatic agent routing.
It does not read your prompt body or repository to decide the style. Browser support depends on the Accessibility information the browser exposes; an unknown site or unavailable URL falls back to the app-level context. A browser tab containing a coding-related title is not sufficient evidence by itself.
Keep English identifiers and Chinese requirements together
You can dictate Chinese instructions containing English terms such as token, cache and unchanged. Use the Personal Dictionary for project vocabulary and explicit replacements for a repeated, unambiguous error. Spell or edit exact paths and symbols when speech leaves ambiguity.
Start with the mixed Chinese–English guide if the raw transcript already has the wrong English word. Prompt formatting cannot reconstruct an identifier that was never reliably recognized.
What stays local, and what needs the network?
Speech recognition runs on the Mac. Built-in cleanup sends the recognized text to Ducduc’s service; BYOK sends it to your selected provider. Offline Mode can keep cleanup on the same Mac when Ollama uses a downloaded local model and its cloud features are disabled; a localhost address alone does not prove local inference. Raw dictation and short bypassed inputs follow their own path, so use the mode-by-mode security table for the full boundary.
To try the composer workflow, download Ducduc, choose your trigger and dictate one short, non-sensitive instruction. Use the Ollama setup guide if local cleanup is the requirement. Then test the composer with networking disconnected. A successful offline dictation test verifies that dictation run, not the behavior of Codex after you send the prompt.
A short check before relying on a coding prompt
Try this constructed test, without sending it: “Check the button spacing, but do not modify code. Send me the findings first. Friday—actually, Monday, after I approve the test results.” This is an acceptance phrase, not a measured recognition result.
- Words: verify project names and English terms against what you actually said. If the original transcript is already wrong, changing prompt formatting does not establish an ASR fix.
- Meaning: the final text must retain the no-code-change boundary, the requested findings, Monday and the approval condition. A cleaner sentence that loses any of them is not a successful cleanup.
- Delivery: confirm the text reached the intended composer and is still unsent. If a copy card appears, paste once into that field instead of starting another recording and risking duplicate text.
This check separates transcription, text organization and insertion. It does not establish a latency target or an accuracy rate. If native Dictate already meets your needs, use it; consider Ducduc when you want the same reviewable-input workflow in several Mac apps.
Try it on your own Mac
Try your own vocabulary and editor, then compare the raw transcript and cleaned text in History.
Published by the maker of Ducduc. Third-party information follows the sources and dates stated in this guide. Authorship, sources and examples