Skip to content
edict
Guides

Dictate to Cursor, fully offline.

Cursor has its own voice mode now, aimed at the Agent prompt. This is the other way of doing it: one key that types into every part of Cursor, with the speech never leaving your Mac.

To dictate into Cursor without sending audio to a server: run an on-device dictation app and speak wherever you would type. Edict types into the chat, Cmd+K, the editor, and the terminal panel alike, keeps your words verbatim, and connects to Cursor’s agent over MCP by merging ~/.cursor/mcp.json, since Cursor has no CLI to register through. Cursor must be restarted afterwards, because agents read their MCP config at launch.

Last verified 2026-07-25

Cursor’s own voice mode, and where it stops

Cursor added voice in 2.0, described in their changelog as "Control Agent with your voice using built-in speech-to-text conversion", with custom submit keywords you can define. Version 3.1 sharpened it: hold Ctrl+M to speak, a waveform and timer while recording, and the clip transcribed "with batch STT for higher-quality speech-to-text". Their changelogs frame it around the Agent and the Agents Window, and say nothing about where the audio is processed.

Their docs put the microphone in the chat input, which is the same panel the agent lives in. If that is where all your dictation goes, it is a good feature and you do not need this page. Elsewhere it thins out: Cursor’s shortcuts reference lists one voice binding, under General, and none against inline edit or the terminal. So Cmd+K, a comment you are writing in the editor, the terminal panel, and the commit message afterwards are all still typing.

Setting up

  1. 01

    Install Edict. Everything it needs to transcribe is in the bundle, so you can pull the network cable before the first launch and it will still work. macOS will ask for microphone and accessibility access on the way in.

  2. 02

    Open Cursor, put the cursor anywhere you would type, and tap or hold Right Command. Talk, release, and the text lands. The pill names the app it is about to paste into, so you can see it says Cursor before you let go.

  3. 03

    Add your project’s vocabulary to the dictionary in Settings. It is a plain CSV, so library names, internal service names, and colleagues come out spelled your way rather than phonetically.

  4. 04

    Optional: allowlist Cursor for auto-send in Settings, and a finished dictation submits itself rather than waiting for Return.

Connecting Cursor’s agent over MCP

This part differs from every other agent, and the difference is Cursor’s, not ours. Claude Code and Codex both register MCP servers through their own command-line tools. Cursor has no CLI, so Edict writes the registration into ~/.cursor/mcp.json itself, merging with whatever servers you already have there rather than replacing the file.

Open Edict’s Agent pane and press Connect next to Cursor. Then restart Cursor. That last step is the one people skip: agents read their MCP configuration at launch, so a running Cursor will not see a server that appeared underneath it. Edict decides Cursor is present by looking for the ~/.cursor directory, so it appears in the pane whether or not Cursor is running.

Once connected, Cursor’s agent can search your transcript history, pull your last transcript, edit the dictionary, and hand Edict an audio or video file to transcribe on your Mac. Asking it what you said about a refactor last week is a question it can now answer from your own words.

The wrong-window guard

Editors punish this more than terminals do, because there is more to click on. You start describing a change, glance at the file to check a name, and the sentence you were halfway through has nowhere sensible to go. Edict handles it by refusing to guess: when focus has moved during a take, nothing is pasted at all. The text waits on your clipboard and the pill says so, which turns a wrecked paragraph into one keystroke.

Verbatim, which matters more in an editor

Edict does not rewrite what you said. You get your words plus your own dictionary’s spelling fixes, and nothing else. In a chat app a tidy-up model is harmless; in Cursor it is not, because the thing being tidied is an instruction containing identifiers, file paths, and flags that a language model will cheerfully improve into something you did not mean.

The same reasoning covers the rest of the day. Claude Code and Codex both work the same way in a terminal, and the wider case for voice in agent work covers what each agent’s built-in does and where it stops.

Common questions

Does Cursor have built-in voice input?

Yes. Cursor 2.0 added voice control for Agent with built-in speech-to-text, and 3.1 improved it with hold-to-talk on Ctrl+M and batch transcription. Their changelogs describe it around the Agent and Agents Window rather than as a system-wide input, and do not state where the audio is processed.

Can I dictate into Cmd+K and the terminal, not just the chat?

With a system-wide dictation app, yes: it types wherever your cursor already is, so Cmd+K, the editor, and the terminal panel work exactly like the chat input does. That is the practical difference from a voice mode built into one panel.

How do I connect Cursor to Edict’s MCP server?

Open Edict’s Agent pane and press Connect next to Cursor, then restart Cursor. Because Cursor has no command-line tool, Edict merges the server into ~/.cursor/mcp.json directly, leaving any other servers in that file alone. The restart matters: agents read MCP configuration at launch.

Does dictating to Cursor work offline?

Yes, with an on-device app. Edict’s speech models ship inside the app, so it transcribes on your Mac with the network off and Cursor receives the text as ordinary typed input.

Will my prompt get rewritten before Cursor sees it?

No. What you said is what Cursor receives, with your own dictionary applied and nothing else. In an editor that matters more than it does elsewhere, since prompts are full of identifiers and paths that a tidy-up model would helpfully ruin.

Apple Silicon (M1 or newer) · macOS 15 Sequoia or later · 7-day full trial · one-time purchase