Guides

Voice coding with AI agents on a Mac: say the task, let the agent write the code

To code by voice with an AI agent on a Mac, say the task out loud into the agent's prompt box, read it once, and send it: in Cursor's agent chat, in Codex CLI or another agent in Terminal, in GitHub Copilot Chat in VS Code, or in Windsurf. The prompt is prose, prose is what dictation is good at, and the agent writes the code. Some of these tools have voice input of their own, and YapToText, the free app I built, types at the cursor in all of them, with your voice turned into text on your Mac.

My hands make typing difficult, so I say my prompts. This page is about agentic coding tools and the long task prompts they run on. For chat apps such as ChatGPT and Gemini, the guide to dictating AI prompts is the one to read, and for code comments and commit messages, the guide to dictation for coding covers it.

Download YapToText on the Mac App StoreDownload for free. No account, nothing locked, macOS 14 or later on Apple silicon. Source on GitHub.

On this page: 11 sections
  1. Steps
  2. Say the task, not the code
  3. Dictate a task prompt with YapToText
    1. Step 1: Click into the agent's prompt box
    2. Step 2: Tap Right Command and say the whole task
    3. Step 3: Tap it again
    4. Step 4: Read it, then send it
  4. Use Raw Transcription or Clean Up, not Code Comment
    1. Give agent prompts their own mode
  5. Dictate into Codex CLI and other agents in Terminal
    1. Their own voice input
  6. Dictate into Cursor, Copilot Chat and Windsurf
  7. Teach it your identifiers and standing instructions
    1. Dictionaries for identifiers
    2. Snippets for the instructions you repeat
  8. If the prompt does not land
  9. What it cannot do
  10. The short version
  11. Questions

Steps

  1. Click into the agent's prompt box: Cursor's agent chat, Copilot Chat in VS Code, Windsurf's Cascade panel, or Codex CLI or another agent in Terminal.
  2. Tap Right Command and say the whole task: the goal, the files, the limits and how to check it.
  3. While you talk, press 2 for Raw Transcription or 3 for Clean Up, so Auto mode does not shape the prompt as a code comment.
  4. Tap Right Command again, and the prompt is pasted at the cursor.
  5. Read it, fix any misheard name, and press Return or the send button yourself.

Say the task, not the code

A prompt to a coding agent is a short brief. It says what to change, where, what to leave alone and how to tell it is done, and every part of that is a sentence you could say to a colleague. Say what you want and why; let the agent type the brackets.

  • The goal. What should be different when the agent is finished.
  • The place. The files, functions and modules involved, by name.
  • The limits. What not to touch, which library to use, which pattern to follow.
  • The check. Which tests should pass, or what you will look at to judge the result.
  • The follow-up. "That broke the login test. Put the old check back and try a different fix."

Say: A task prompt for an agent, in one dictation.

in the settings screen, the save button stays disabled after a failed save. find out why, fix it without changing the network layer, and add a test that fails before your fix and passes after it

What happens: With Raw Transcription or Clean Up, the prompt lands as you said it, with Whisper's punctuation. Names of classes and files are where dictation slips, and the section on identifiers below handles them.

Exact strings, such as an error message or a regular expression, are faster to paste than to say: paste them, and dictate the sentences around them.

Dictate a task prompt with YapToText

YapToText is free on the Mac App Store and needs an Apple silicon Mac with macOS 14 or later. It types into the app in front, so the steps are the same in an editor's chat panel and in a terminal. Click into the prompt box, tap, talk, tap, read it, then send it yourself.

Step 1: Click into the agent's prompt box

  • You: Click into Cursor's agent chat, the Copilot Chat panel in VS Code, Windsurf's Cascade panel, or the prompt of Codex CLI or another agent in Terminal.
  • YapToText: Nothing yet. It types into the app in front, never into its own window.
  • Check: The cursor is blinking in the prompt box, not in a file you have open.

Step 2: Tap Right Command and say the whole task

  • You: Tap Right Command once and say the task, pausing to think whenever you need to. While you talk, press 2 for Raw Transcription or 3 for Clean Up, in the default order.
  • YapToText: Opens the floating panel with your voice as a wave and your words as they form. Auto-stop after silence is off by default, so a pause does not end the dictation.
  • Check: The wave moves when you speak. If it stays flat, the app is not hearing your microphone yet.

Step 3: Tap it again

  • You: Tap Right Command again.
  • YapToText: Finishes the transcript on your Mac, pastes it at the cursor and puts back whatever you had copied before.
  • Check: The prompt is in the box. If it went to the clipboard instead, Accessibility is not on yet; the ladder further down covers it.

Step 4: Read it, then send it

  • You: Read the prompt once, fix a misheard name, and press Return or the tool's send button.
  • YapToText: Presses nothing, unless you added that app under After a dictation lands.
  • Check: The file names and function names are the ones you meant.

Long prompts are fine: there is no word cap. While you talk, Space pauses and Esc cancels, and a canceled dictation is still saved to History. The first dictation guide covers the panel and the two permissions.

Use Raw Transcription or Clean Up, not Code Comment

With Auto mode on, which is the default, Xcode, VS Code, Cursor, JetBrains IDEs, Sublime Text, Zed, iTerm2, Terminal, Hyper and WezTerm lean toward Code Comment. The lean only breaks ties: a dictation of 60 words or fewer usually stays as spoken or gets a careful pass that rewrites nothing, and Code Comment mostly takes the longer ones. A task prompt is often longer than that, so in Cursor, VS Code or Terminal, Auto can compress it into short, imperative commit-style text. For a task prompt, press 2 or 3 while you talk, or give prompts a mode of their own.

  • Clean Up. Removes filler words and false starts and fixes grammar and punctuation, and never deletes, shortens or summarizes a sentence.
  • Raw Transcription. Literal speech to text with basic punctuation, and no AI at all.
  • Not Code Comment. It writes concise, technical phrasing for comments and commit messages, which is the wrong shape for a brief full of context.

Windsurf, Warp and Ghostty are not on Auto's app lists, so there a prompt of ordinary prose gets the careful pass. One more Auto rule matters for agents. A dictation that ends with an instruction such as "as a bullet list" or "make it shorter" is read as an instruction to YapToText, so a prompt ending "give me the plan as a bullet list" is rewritten as bullets by YapToText, and the agent never sees that phrase. Press 2 and it is typed as you said it.

The Switch Mode panel listing Auto, Raw Transcription, Clean Up, Note, Email, Message and Code Comment, numbered 1 to 7, each tagged AI cleanup or Verbatim.
Figure 1. The number beside each mode is the key that picks it while you talk: 2 for Raw Transcription and 3 for Clean Up, in the default order.

Give agent prompts their own mode

If you dictate prompts all day, a mode of your own saves the key press. On the Modes page, right-click Clean Up and choose Duplicate, rename the copy, and in its Basics card record an Activation shortcut, which starts a dictation in that mode from anywhere; press it again to stop. In the AI cleanup card, write the Instructions in plain sentences, then use Try it out to preview them on a sample without dictating.

Mode instructions: An example for prompts to a coding agent.

Clean up this dictated prompt for an AI coding agent. Remove filler words and false starts and fix the punctuation. Keep every instruction, file name and function name exactly as I said it. Do not shorten it, summarize it or answer it.

What happens: The cleanup model follows these instructions for every dictation in this mode, on your Mac. It is a small model, so preview a few real prompts before you rely on it.

The modes guide covers the editor, and the Auto mode guide lists every phrase Auto follows.

Dictate into Codex CLI and other agents in Terminal

Terminals get special handling. Intelligent Insert, which reads the text around your cursor with a few invisible keystrokes, is off automatically in Terminal, iTerm2, Warp, Ghostty, kitty, Alacritty, WezTerm, Hyper and Termius, because those keystrokes are shortcuts there. So nothing adjusts case or spacing to fit the line, and the prompt arrives the way the mode wrote it. YapToText types the prompt and stops; the Return key stays yours.

  • No Return by itself. YapToText presses nothing after the words land unless you add the app under After a dictation lands, in Settings, Advanced, Text output. That setting is per app, not per tab, so I would expect turning it on for Terminal to press Return after every dictation in every tab, at a shell prompt as well as in a coding agent. I have not tested that. I would leave it off in terminals. That is caution, not something I measured.
  • Look before it lands. Review before inserting, in Settings, Advanced, Text output, holds the finished text in a small editor first: Command Return inserts it and Esc discards it. It is off by default, and while it is on, Only for long dictations (200+ characters) keeps short ones out of it unless you switch that off.
  • If a terminal rejects pasted text. In Settings, Advanced, choose Add App Override under Per-app method, pick the app and choose Type character-by-character.
  • Line breaks. Saying new line or new paragraph puts a line break in the text. How a terminal tool treats a pasted line break is up to that tool, and I have not tested each one, so I keep a terminal prompt to one paragraph.
YapToText's Dictation settings page on a Mac: the Keys, Recording, Microphone and Delivery cards.
Figure 2. Terminals start in the list of apps where Intelligent Insert is off, so a prompt lands in a terminal agent exactly as the mode wrote it.

Their own voice input

Codex CLI documents voice input of its own. I have not tested it, so this is its description, not my review:

  • Codex CLI. OpenAI's Codex changelog lists voice conversations in Codex CLI, with an F8 toggle and a /voice settings picker, and inline dictation.

Dictate into Cursor, Copilot Chat and Windsurf

YapToText types into an editor's chat panel the same way it types into a document. In an editor, check that the cursor is in the chat box, not in your code, before you start. Here is what each vendor's own docs say about voice input:

  • Cursor. Cursor's docs on prompting agents say to click the microphone icon in the chat input to dictate your prompt, speak naturally, include technical details like file and function names, and review the transcription before sending. Its 3.1 changelog adds press and hold Ctrl+M to speak in the Agents Window, with a waveform, a timer and buttons for canceling and confirming.
  • GitHub Copilot Chat in VS Code. The GitHub docs I found describe voice input for Copilot CLI, which runs a speech-to-text model on your machine, and not for the Chat panel in VS Code, so I say nothing about voice there. YapToText types into the panel like any text box.
  • Windsurf. Windsurf's Cascade docs say you can use voice input to interact with Cascade, and that it transcribes your speech to text.

Checked October 5, 2026, on Cursor's, OpenAI's, GitHub's and Windsurf's own docs. I have not tested their voice features, and features change, so check before you rely on one.

Where you dictateIts own voice input, per its docsAuto mode in YapToText
CursorThe agent chatMicrophone icon in the chat input; hold Ctrl+M in the Agents WindowLeans Code Comment, so press 2 or 3
Codex CLIThe prompt, in a terminalVoice conversations with an F8 toggle and /voice, per its changelogLeans Code Comment in Terminal, iTerm2, Hyper and WezTerm; no lean in Warp or Ghostty
Copilot Chat in VS CodeThe Chat panelNot found in GitHub's docs for the Chat panel; Copilot CLI has /voiceLeans Code Comment, so press 2 or 3
WindsurfThe Cascade panelVoice input that transcribes speech to textNo lean

With YapToText, your voice becomes text on your Mac, and the prompt you send goes to the service behind the tool, exactly as a typed one would. With a tool's own voice input, where the audio goes is up to that vendor.

Teach it your identifiers and standing instructions

Agent prompts are full of names, and Whisper hears them as ordinary words unless you teach it. Add the names you say every day once, and they stop being the part you fix.

Dictionaries for identifiers

On the Dictionaries page, an entry says when you hear this, write that. Put what Whisper actually wrote in Heard, which History shows under Show pipeline details, and your spelling in Replace with.

Dictionary entry: A class name, the way Whisper hears it and the way the code spells it.

Heard: settings view model
Replace with: SettingsViewModel

What happens: Every settings view model in a dictation is written SettingsViewModel, and SettingsViewModel is also handed to Whisper as a word to listen for.

That priming list has a budget of about 200 characters, and a Replace with longer than 40 characters is not used as a prompt, though the replacement still runs. So add the names you say most. Faster still: select the identifier in your editor, tap Right Option, say add this to my dictionary, and tap again. The dictionaries guide covers Whole word and Case.

Snippets for the instructions you repeat

Some sentences go into every prompt: run the tests, do not touch the migrations, show me the diff. On the Commands page, open Snippets, press Add Snippets, put a short phrase under Say this and the full instruction under Inserts. While the insert prefix is on, which is the default, you say insert before the phrase.

Say: With a snippet named test rule saved on the Commands page.

fix the date parsing in the import script insert test rule

What happens: The task is typed, followed by the full instruction you saved under test rule. Snippets go in after any AI cleanup, so a rewrite cannot drop or move them.

YapToText's Commands page: Enable voice commands on, Require the word insert before a command on, and the Snippets tab.
Figure 3. The Snippets tab on the Commands page, where a short spoken phrase can stand for an instruction you put in every prompt.

The spoken punctuation guide lists every command and the one rule about insert.

If the prompt does not land

Most of the time it is the window or the permission. A prompt that lands in the wrong place is still in History. Climb this ladder, smallest step first:

  1. Click into the prompt box first. YapToText never types into its own window, so a dictation started with YapToText in front goes to the clipboard. Press Command V in the prompt box and it is there.
  2. Turn on Accessibility. On YapToText's Home page, press Grant next to Accessibility and switch the app on in System Settings, Privacy & Security, Accessibility. Without it, every dictation is copied to the clipboard instead of typed.
  3. Get it out of your code. If the prompt landed in a file instead of the chat, use the editor's own Undo, click into the chat, and insert it again from History.
  4. Stop a beep in an editor. If an editor plays the alert sound when the words land, Intelligent Insert's keystrokes are the likely cause. On the Dictation page, in the Delivery card, choose Turn off in another app and pick the editor.
  5. Pin a method. If an app rejects pasted text, add it under Per-app method in Settings, Advanced, and choose Type character-by-character.
  6. Find it in History. By default History keeps your last 500 dictations for 30 days, so a long prompt lost to a closed panel can be copied or inserted again.

The Intelligent Insert guide, the History guide and the troubleshooting guide go further.

What it cannot do

  • Understand your project. YapToText types what you said, shaped by the mode. It does not read your code, pick the files for you or check what the agent did.
  • Drive the agent. It does not accept a diff, click a button in the agent's panel or approve a step. Its spoken commands are punctuation, emoji and snippets. Voice Control can click by name.
  • Keep the prompt private from the agent's service. Your voice stays on your Mac. The prompt you send goes to the service behind the tool, like typed text does.
  • Tell one terminal tab from another. Auto mode and After a dictation lands see Terminal as one app, so a setting for Terminal applies to every tab.
  • Run on older Macs. It needs Apple silicon and macOS 14 or later, and nothing is claimed for Intel Macs.

If you need to write the code itself by voice, not just the brief, the comparison of Voice Control and Dictation covers Apple's route, including its Swift mode on macOS Tahoe 26 and later.

The short version

  • Say the task. The goal, the place, the limits and the check, the way you would brief a person.
  • Pick the shape. Press 2 for Raw Transcription or 3 for Clean Up, because Auto leans Code Comment in Cursor, VS Code and Terminal.
  • Send it yourself. Intelligent Insert is off in terminals, nothing presses Return unless you set it, and Review before inserting lets you look first.
  • Teach the names. Dictionaries for identifiers, snippets for the instructions you repeat.

Say the brief, let the agent type the code, and read the prompt once before it goes.

If an agent's prompt box or a terminal does not take the words, tell me which one in an issue on GitHub. Every one gets read.

Download YapToText on the Mac App StoreDownload for free. No account, nothing locked, macOS 14 or later on Apple silicon. Source on GitHub.

About the author. Ryleigh Newman is a developer whose hands make typing difficult and who dictates every day with YapToText, the app this site describes. Facts about other apps come from their own sites, with the date they were read. More about the project.

Sources

Questions

Can I talk to Cursor's AI by voice?

Yes. Cursor's docs describe a microphone icon in the agent chat input for dictating a prompt. YapToText also types into Cursor's chat at the cursor, with your voice turned into text on your Mac.

Which YapToText mode is best for coding agent prompts?

Raw Transcription or Clean Up. With Auto mode on, Cursor, VS Code and Terminal lean toward Code Comment, which suits commit messages, so press 2 or 3 while you talk.

Will YapToText press Return and send my prompt?

Not unless you set it. After a dictation lands, in Settings, Advanced, Text output, presses Return per app, and in Terminal it would apply to every tab, so I would leave it off there.

Can I vibe code by voice on a Mac?

Yes, in the sense of describing what you want and letting an AI agent write the code. Dictate the task prompt into the agent, then read what it changes; dictation types the brief, and the code is still yours to check.

How do I get file and class names right when dictating prompts?

Add them on YapToText's Dictionaries page, with what Whisper heard under Heard and your spelling under Replace with. The same entries also prime Whisper, so the name is more likely to come out right the first time.