Voice prompting for Claude Code and Cursor on a Mac
To dictate prompts into Claude Code, Cursor or another AI coding tool on a Mac, put your cursor in the prompt box, press option+space in YappYapp, say the whole prompt, and press option+space again: the text is pasted at your cursor and nothing is sent until you press Return yourself. Add your function names, file names and tool names to the WORDS tab once, and they come out spelled your way every time.
Why speak your prompts at all
A good prompt for a coding agent is long. It names the files, describes the bug, says what you already tried and what "done" looks like. Typing all of that is the step people skip, so the prompt gets short and the agent guesses. Speaking it makes the context cheap, and you still read every word before sending.
YappYapp transcribes on your Mac with Parakeet or Whisper, so the prompt (which often contains code, client names or unreleased plans) is not uploaded for transcription. The only place your words go is the AI tool you paste them into, under that tool's own terms.
Where the text lands
YappYapp inserts into whatever field has focus when the transcript is ready. Some apps need a real paste rather than a direct text insertion, and the app treats them that way:
- Terminals (Terminal, iTerm2, Ghostty, Warp, kitty, WezTerm, Alacritty) always get a real ⌘V paste, because a direct write can look successful without reaching the shell. This is where Claude Code runs.
- Cursor, VS Code, the Claude desktop app and other Electron or web-based apps also get a real paste, so the editor's own state receives the text.
The recording indicator never takes keyboard focus, so you can click into a terminal prompt at the bottom of the screen while it is showing.
After every paste, the MIC tab tells you what happened: PASTED (with the time it took), PASTED? (⌘V was sent but could not be confirmed), COPIED, or NOT PASTED with the reason. Your previous clipboard comes back after the paste.
YappYapp does not press Return for you. The prompt stays in the Claude Code or Cursor box until you send it.
Teach it your code words
Speech models do not know your codebase: out of the box you get "use effect" or "next auth". Open the WORDS tab and add each term:
- Write it as: the exact spelling, for example
useEffect,pnpm,NextAuth,Supabase,CLAUDE..md - Sounds like: what the model writes instead, for example "use effect", "pee npm".
The spellings are applied after every transcription, with any engine. With Whisper and Qwen3-ASR they are also passed to the model as context before it transcribes (Parakeet takes no prompt, so it relies on the correction step). Avoid short everyday words as "sounds like" spellings, or they will rewrite normal speech.
Learn from my fixes helps in editors: when you retype a name YappYapp got wrong right after it pasted, it learns your spelling and says so, with UNDO. It deliberately skips terminals and password fields, so for Claude Code in a terminal, add words by hand in WORDS.
Snippets are the other half of the WORDS tab. Save a phrase such as "my review checklist" and its stored text (a block of instructions you reuse in every prompt) is inserted when you say it. A phrase needs at least two words. Words and snippets import and export as JSON or CSV, to share one list across a team.
Long prompts without losing the end
Recording stops only when you stop it, or at the limit you set in Setup > Microphone > STOP AUTOMATICALLY AFTER. The default is 5 minutes and the slider goes from 30 seconds to 15 minutes. A countdown shows in the last 10 seconds. Pausing to think does not end the recording.
If you prefer push to talk, Setup > Dictation switches the shortcut from Press to Hold (record while the keys are down) or Both, and can add a single-key trigger such as Right Option.
If a transcription fails, Retry Last Dictation in the menu-bar menu runs the same recording again from memory.
Cleanup: as spoken or tidied
Under Setup > Dictation, cleanup decides how much your words are touched:
- AS SPOKEN (no model): exactly what you said. A safe default for prompts, because nothing is rephrased.
- CLEAN: a small local model removes "um" and "uh", adds punctuation and capitals, and applies "no wait" corrections, keeping your words. If a rewrite adds words or changes the language, YappYapp throws it away and pastes your raw transcript.
Spoken commands help structure a prompt: say "new line" or "new paragraph" as its own phrase, or "scratch that" to drop the last bit. With NUMBERS set to DIGITS, "twenty five" becomes "25", while names like "GPT-5" keep their digits.
App profiles give each app its own settings. A common setup: AS SPOKEN and DIGITS for your terminal, CLEAN for Cursor's chat, and your usual mode for Mail. A profile applies to the app where the dictation ends.
Pick a model
Parakeet Ultra is the default: it covers 25 European languages and picks the language itself. Whisper models are an alternative with more languages, and Whisper uses your WORDS as a prompt. For measured speed on Apple Silicon, see Whisper or Parakeet on a Mac. If you prompt in French or Spanish and want English in the box, the bilingual dictation guide covers the TRANSLATE TO setting.
Getting started
Download YappYapp (free, Apple Silicon, macOS 14 or newer) and follow the setup guide to allow Microphone and Accessibility; Accessibility is what lets it paste into your terminal and editor. Then add your ten most-mangled code words to WORDS, click the prompt box in Claude Code or Cursor, and talk through the task.
FAQ
Does YappYapp send my prompt to Claude or Cursor automatically?
No. It pastes the text at your cursor and stops there. You press Return when the prompt reads right.
Will it type into a terminal password prompt?
No. YappYapp never types into secure input. If Terminal's Secure Keyboard Entry is on, it withholds the text and tells you why; see Apple's page on Secure Keyboard Entry.
Does it work offline?
Transcription does, once a model is downloaded; see the offline dictation guide.