Voice dictation for Claude Code on macOS
Talking to Claude Code is faster than typing to it, and not by a small margin: prompts to a coding agent are prose, not code, and prose is the thing speech has always been faster at. The interesting question in 2026 is no longer whether to dictate - it is which part of the loop your dictation covers.
Claude Code already has dictation. Start there.
Claude Code ships a built-in voice mode: run /voice in the session and speak instead of typing. If all you want is to stop typing prompts, try that first. It is free, it is one command, and there is no reason to install anything to find out whether dictating to an agent suits you at all.
Its edges are worth knowing before you decide it is enough:
- It works inside Claude Code's own prompt. Your editor, a terminal, a commit message, Slack - all still typed.
- It needs a Claude.ai account, and is unavailable when Claude Code is pointed at an API key directly, or at Bedrock, Vertex or Foundry.
- It is input only. Everything Claude says back is still something you read, on the screen it is written on.
- It knows about the session you typed it into. If you have three sessions running, it has nothing to say about the other two.
That last pair is the part that matters. The half of the loop that eats time is not composing the instruction - it is coming back, finding the place, reading what happened, and answering the question it stopped on.
Dictating from outside the session
ByteVoice is a system-wide layer rather than an agent feature. Hold fn, speak, and the text lands wherever your cursor is - in Claude Code's prompt, in VS Code, in a terminal, in a browser. One shortcut, no per-app setup, and it does not care which agent (or whether any agent) is on the other side.
The more useful mode is the one where your cursor is not the target at all. Pin a Claude Code session and fn stops following your cursor: what you say goes to that session, from any app, with Claude Code in the background and never brought forward.
Because that is speech going straight into something that edits files and runs commands, nothing sends on its own recognition. The transcript appears with a short countdown - edit it, or press esc:
Yes - cover timeouts and 500s.
Answering, not just asking
Claude Code stops for two things: permission to run something, and genuine questions about how to proceed. Both are pure latency - the agent is idle, and the only thing missing is a decision you already have.
With ByteVoice both surface as a notification over whatever you are doing. A question with defined options arrives with those options as buttons; one click answers it and the turn resumes. A permission request can be resolved by saying "allow" or "deny" - a deliberately tiny vocabulary, kept separate from normal dictation so a spoken "yes" resolves the prompt instead of being sent to Claude as a message.
When a turn finishes, its summary can be read aloud. This is the piece that changes the shape of the day rather than shaving seconds off it: you stop needing to be looking at the session to know what it did.
Getting technical vocabulary right
Generic dictation fails on exactly the words a coding prompt is made of. "Kubernetes", "idempotent", "webhook", "pnpm", "tRPC" - and the ones that are ordinary English until they are not, like a package called "next" or a branch called "main".
Two settings do most of the work here.
Mode. Fast transcribes exactly what you said, as you said it, and returns almost immediately. Best Accuracy adds a cleanup pass that fixes wording and punctuation using the vocabulary below - a little slower, noticeably cleaner on long instructions.
Domain. Picking a field biases transcription toward its vocabulary - Coding, and under it Full Stack, Backend, Frontend, Infra or Data Pipeline, plus Product, Data & ML, Medical and Legal. You can also name your own stack, and the terms for it are generated once and then shared, so the second person to pick "Rust" gets an instant hit rather than a wait.
Setting it up
If Claude Code is not installed yet, the official installer needs no Node:
curl -fsSL https://claude.ai/install.sh | bashThen run claude once to sign in. ByteVoice detects the CLI on its own and offers to add its hooks - that is what lets it see session status rather than just typing into a window.
On the ByteVoice side: sign in, grant Accessibility (how text reaches other apps) and Microphone, then press fn when it asks. The setup screens test each of those rather than asserting them, because the two things that actually break - macOS reserving the Globe key, and keyboards that swallow fn in firmware - are invisible until something does not work.
Which one you need
If you work in a single Claude Code session and mainly want to stop typing prompts, /voice is the right answer and costs nothing. If your time goes to the other half - coming back to sessions, reading what happened, answering prompts, and doing it across more than one agent - that is the gap ByteVoice is shaped around.
Download for macOS, or read how the same loop works across several agents at once.