Claude Code /voice vs a Dictation App: What the Docs Say
Claude Code's /voice streams audio to Anthropic and needs a Claude.ai login; a system-wide Mac dictation app keeps recognition local. Where each one stops.
You typed /voice in Claude Code, it worked, and now you are wondering whether you still need a separate dictation app. The answer depends on where your audio goes, how you log in, and where else you want to talk.
This is a scope and data-flow comparison, not a speed one. Everything about /voice below comes from Anthropic’s voice dictation doc, read on 2026-09-18. That page changes; check it yourself.
What /voice is, according to the doc
Run /voice in the Claude Code CLI and the prompt box takes speech. Hold Space to record (the default), or run /voice tap to tap once, speak, and tap again to send. The transcript lands at the prompt cursor, so typing and speaking mix in one message.
The doc says, as of 2026-09-18:
| Audio | Streamed to Anthropic’s servers for transcription. In the doc’s words, “Audio is not processed locally.” |
| Account | A Claude.ai account is required. Not available when Claude Code is configured with an Anthropic API key directly, Amazon Bedrock, Google Cloud’s Agent Platform, or Microsoft Foundry. |
| Microphone | A local microphone is required, so it does not work in cloud sessions or SSH sessions. |
| Metering | Does not consume Claude messages or tokens and does not count toward /usage. |
| Language | Twenty dictation languages are listed. Chinese is not among them. An unsupported language setting falls back to English. |
| Recognition hints | Your project name and git branch name are added automatically; transcription is tuned for terms like regex, OAuth, JSON and localhost. |
| Take length | Tap mode stops after 15 seconds of silence or two minutes total. |
One inconsistency: the doc also says Chinese transcripts count words for tap-mode auto-submit, though Chinese isn’t in the supported list. Try a sentence yourself before relying on it.
Where /voice is better
If you only ever talk to Claude Code, /voice has four advantages a system-wide app cannot copy:
- Zero setup. No extra download, no Accessibility permission, no trigger key to pick. One slash command and a microphone prompt.
- No extra metering (see the table above).
- Branch-aware hints. ListenIn does not read your repository and does not do this. It has a personal dictionary you fill yourself instead.
- Auto-submit. Tap mode submits once the transcript hits three words; hold mode does the same with
"autoSubmit": truein settings. ListenIn’s AI Command mode does the same with its “Press Return automatically” switch, on by default — turn it off to read the prompt first.
Where /voice stops
The same doc draws the edges clearly, and they are structural, not bugs:
- Auth mode. Anything but a Claude.ai login turns it off, and an organization policy can too.
- Remote work. SSH and cloud sessions have no local microphone. The VS Code extension has the same limit in Remote SSH, Dev Containers, and Codespaces.
- One prompt box. The transcript goes into Claude Code’s input, nowhere else — not Cursor’s chat, a browser PR description, Slack, or a commit message.
- Language. No Chinese in the supported list as of today. If you think in Chinese and name things in English, see Speaking Chinese to Claude Code.
- One take. 15 seconds of silence or two minutes total ends a tap-mode recording. A long brief is several takes.
Why a system-wide app is structurally different
ListenIn is a menu-bar app. It listens to the local microphone and pastes at whatever text cursor your Mac currently has. That one design choice explains every difference above:
- Any auth mode. ListenIn never talks to Claude Code, it pastes text — whether Claude Code is signed in with Claude.ai, an API key, or Bedrock is irrelevant.
- SSH is not special. ListenIn pastes into the local terminal window like any ⌘V; where the shell runs is the terminal’s business. The doc’s local-microphone rule never comes up.
- Any app. The same trigger key works in Cursor, VS Code, Xcode, a browser chat, a PR form, or mail — details on the voice coding page.
- One take. ListenIn sets no per-dictation time limit.
The cost is two-fold. First, ListenIn needs one Accessibility grant to paste into other apps — the flip side of /voice’s zero setup. Second, with Secure Keyboard Entry on, ListenIn cannot paste into the terminal and offers a copy card instead; details in Terminal dictation and Secure Keyboard Entry.
What ListenIn is not: a coding agent. It does not read your repo, run commands, or approve changes — it prepares the instruction and hands it to the agent.
Data flow, side by side
Claude Code /voice (doc, 2026-09-18) | ListenIn | |
|---|---|---|
| Audio | Streamed to Anthropic’s servers; not processed locally | Stays on the Mac. Apple’s speech engine with on-device recognition forced, on both the macOS 26 engine and the classic one |
| Text | Transcript lands in the Claude Code prompt | Recognized text goes to a cleanup pass: ListenIn’s built-in service, a provider under your own key, or local Ollama |
| Account | Claude.ai login required | None. The free plan needs no account |
| Works in | Claude Code CLI and VS Code extension, local machine only | Any text cursor on the Mac, including a terminal with a remote shell |
Two footnotes on the ListenIn column. First, “audio stays on the Mac” has a cost: on macOS 14–15, an undownloaded language pack fails recognition outright rather than quietly falling back to Apple’s cloud — deliberate; see the language-pack fix. Second, “text-only cleanup” still means text leaves the Mac by default; the security page lists exactly what each mode sends, never audio. For zero cloud end to end, pick “Ollama (local)” under Models and turn on Offline Mode (walkthrough).
Output shape: what lands in the prompt
/voice inserts what you said, as text. The doc describes coding-vocabulary tuning, not restructuring.
ListenIn’s cleanup is a separate pass over the transcript, with one rule: reordered, never invented. It removes fillers and false starts, repairs sound-alike errors, and formats — it does not add content or answer the question you dictated.
With “Write prompts in AI coding tools” on, dictation aimed at Claude Code, Cursor, VS Code, Xcode, or a common terminal (Terminal, iTerm2, Warp, Ghostty, kitty) is rewritten as a prompt: goal first, steps numbered, constraints in their own block.
A real case from ListenIn’s regression set, cmd-struct-02 (raw transcript in the speaker’s Chinese; gist: “data-migration plan — prep: back up the database, export the schema, check disk space; run it: script, logs; verify: row counts”):
我们要做一个数据迁移的计划呃第一大块是准备工作里面包括先备份数据库还有把那个 schema 导出来然后还要检查磁盘空间第二大块是执行迁移就是跑那个脚本然后看日志第三大块是验证就是对一下行数嗯就这些
The assertion: the output must contain 1., 2., 3. and schema, and drop the fillers 嗯 and 就这些. An example that satisfies it (illustrative, not a captured product run):
Data migration plan:
1. Prep: back up the database, export the schema, check disk space
2. Run: run the script, watch the logs
3. Verify: check the row counts
The companion case cmd-gate-01 checks the opposite: a one-sentence input must not gain numbering, and must stay under 40 characters — padding it into a list is the same mistake as leaving a long one unstructured.
Three related pieces:
- Cleanup strength is yours to pick: Verbatim (punctuation only), Standard (remove fillers, fix slips), or Refined (restructure & bullets).
- Ask Anything works on a selection: select text, press its key, say “shorten this,” and the selection is replaced. Handy for a prompt you already typed.
- AI Command is a second key: dictate with it and the cleaned prompt lands in the Target app you chose.
Gotcha: [Pasted text #N]
A structured prompt is multi-line. Claude Code’s terminal configuration doc (also read 2026-09-18) says a paste of more than 800 characters or three lines collapses to a placeholder such as [Pasted text #1 +120 lines]. The full content still sends on submit — nothing is lost, but you cannot eyeball it first.
The doc gives no way to expand the placeholder in place; its own advice for large input is to write it to a file and have Claude read it. To read the prompt first, dictate it into a scratch file, then paste — or trust it and press Enter, and the full message appears in the conversation.
Which one
If you only talk to Claude Code, sign in with Claude.ai, work on the local machine, and dictate in English, /voice may be all you need — no extra cost on top of your plan, built in, and branch-aware.
Pick a system-wide app when any of those stops being true: an API key or Bedrock, an SSH box, Cursor next to Claude Code, Chinese in your sentences, or an audio boundary you can point to. The comparison page covers how ListenIn stacks up against other dictation apps.
Try it on your own Mac
Free tier, no account. Audio never leaves your Mac.