Use Flow with Cursor, VS Code, and other IDEs

Last updated: September 5, 2026

Available on: Mac, Windows

Dictate code, comments, and prompts into Cursor, VS Code, Windsurf, and their integrated terminals. Flow recognizes variable names from your open editor, lets you tag files by voice in chat panels, and handles long prompts to AI coding CLIs like Claude Code and Codex.


When to use it

Use IDE integration when you want to:

  • Dictate code or comments and have variable names match your existing code.

  • Tag files by voice in Cursor or Windsurf chat panels (e.g., "@main.py").

  • Dictate longer prompts to AI coding assistants like Claude Code and Codex.

  • Write commit messages, documentation, or terminal commands hands-free.


How it works in Flow

Key behaviors

  • Variable recognition: Flow uses variable, function, and class names from your open editor as context to improve transcription, in JavaScript, TypeScript, Python, Java, Swift, C++, C, Rust, and Go.

  • File tagging (Cursor and Windsurf only): In chat panels, say "at," "tag," "tagged," or "@" before a filename to reference it ("Check at main.py" becomes "Check @main.py"). With a trigger word, the base name is enough ("tag myScript" tags myScript.py); without one, say the full filename including the extension. The longest match wins, and you can tag several files in one dictation. Turn it off with the File Tagging toggle in Settings → Vibe coding.

  • File detection: Flow detects files from your open IDE tabs and sidebar file tree. Files must have an extension; filenames starting with numbers are supported. For dot-prefixed files like .env, say "dot" (or "punto" in Spanish) before the filename — if your dictated text already includes the dot character, Flow tags it automatically.

  • Long-dictation chunking in AI coding CLIs: In Claude Code and Codex, Flow splits long dictations into chunks so the full prompt arrives cleanly. Shorter dictations paste normally.

  • Windows IDE terminal paste: In the integrated terminals of Cursor, VS Code, and Windsurf on Windows, Flow pastes with Shift+Insert when Ctrl+V isn't reliable.

  • Dictating with no text field focused: Flow shows your dictated text in a popup and copies it to the clipboard. If the dictation contained only formatting markers, you'll see a "paste failed" notification instead.

  • Smart-formatting notifications: The first time Flow smart-formats something in your IDE, including tagging a file, a full notification explains what happened; afterwards you'll see a smaller confirmation.

Note: File tagging is suppressed in terminal panes within the IDE, and when a custom dictionary substitution occurred in the same dictation.

Best practices

  • Speak variable names phonetically — for userId, say "user I.D." or "user ID."

  • Keep the file you want to tag open in a tab or visible in the sidebar.

  • Close unused editor tabs to keep Flow's context focused and responsive.

  • Use a trigger word ("at," "tag") when filenames are short or ambiguous.


How to set it up

  1. Open the Wispr Flow app.

  2. Go to Settings → Vibe coding.

  3. Click Set up next to Variable recognition (VS Code, Cursor, Windsurf), then:

    1. Open the Command Palette in your IDE (Cmd+Shift+P on Mac, Ctrl+Shift+P on Windows).

    2. Run Toggle Screen Reader Accessibility Mode.

    3. Confirm the Screen Reader Optimized indicator appears in the IDE's bottom status bar.

Nothing changes in your IDE until Screen Reader Optimized mode is on and setup is complete. Each item on the Vibe coding page has its own Learn more → link; see Variable recognition.

Note: Variable recognition is not a toggle — it activates whenever your IDE has Screen Reader Optimized mode on and Flow recognizes the app. File tagging in chat (Cursor and Windsurf) is a toggle, on by default.

Dictate in your IDE

  1. Open your IDE and place your cursor where you want text.

  2. Press your Flow hotkey to start dictating (default: Fn on Mac, Ctrl+Win on Windows).

  3. Release the hotkey to stop. Flow pastes the transcribed text automatically.

Tip: On Mac, if your Fn key is unavailable, Flow uses Ctrl+Option as a backup hotkey.

Dictate into a terminal

Flow inserts text using your system's paste shortcut. Some terminals expect a different shortcut (such as Ctrl+Shift+V), so the paste may not land the first time.

  1. Dictate with Flow as normal.

  2. If text doesn't appear, press Ctrl+Cmd+V (Mac) or Alt+Shift+Z (Windows) to use Paste last transcript.

  3. Try your IDE's integrated terminal — Cursor, VS Code, and Windsurf integrated terminals all support direct paste.

Warning: Flow restores your original clipboard after each paste. On macOS, if a paste fails, your dictated text may no longer be on the clipboard — use Paste last transcript to recover it.


Examples

Dictating with variable recognition

You say: "set user ID to none"

Flow types: set userId to None

Flow matches "user ID" to the userId variable in your open editor.

Tagging a file in Cursor chat

You say: "Check at main.py for errors"

Flow types: Check @main.py for errors

Tagging a file without a trigger word

You say: "open package.json"

Flow types: open @package.json

Tagging multiple files in one dictation

You say: "look at cron.py and vad.py"

Flow types: look at @cron.py and @vad.py

Dictating a commit message

You say: "fix null pointer exception in user auth module"

Flow types: fix null pointer exception in user auth module


FAQs

Why aren't my variable names being recognized?

Work through these checks in order:

  1. Confirm Screen Reader Optimized mode is on (run Toggle Screen Reader Accessibility Mode from the Command Palette).

  2. Grant Accessibility permissions to Wispr Flow on macOS. Without it, dictation reports "Accessibility is not enabled" and no IDE context can be read.

  3. Confirm the variable is visible in the editor — offscreen content is skipped.

  4. Say the variable name clearly, matching its exact spelling.

  5. Restart Flow and your IDE.

On VS Code Insiders, variable recognition isn't supported — use standard VS Code, Cursor, or Windsurf.

Why isn't file tagging (@filename) working?

Keep the file open in a tab or visible in the sidebar, and say "at" clearly before the filename. File tagging works only in Cursor and Windsurf chat panels.

How do I disable Screen Reader Mode?

Flow detects Screen Reader Mode but does not enable or disable it. Open the Command Palette in your IDE (Cmd+Shift+P on Mac, Ctrl+Shift+P on Windows) and run Toggle Screen Reader Accessibility Mode.

Why does Flow feel slow in my IDE?

Close unused editor tabs — Flow reads context from open tabs. If you don't need variable recognition, turn off Screen Reader Optimized mode in your IDE.

My long Claude Code prompt got cut off or collapsed

Flow chunks long dictations for Claude Code and Codex automatically. If you start a new dictation while a previous one is still pasting, wait for the chunking to finish before triggering Flow again.


Limitations and notes

  • Variable recognition and file tagging are available on Mac and Windows only.

  • File tagging works in Cursor and Windsurf chat panels only. Standard VS Code supports variable recognition but not file tagging; VS Code Insiders supports neither.

  • Long-dictation chunking in Claude Code and Codex CLIs is Mac only.

  • Flow preserves your clipboard before pasting and restores it afterwards, except for file contents, PDFs, rich text with attachments (RTFD), and audio data.

  • On macOS, Flow marks dictated text as concealed when pasting, so most third-party clipboard managers will not store it. On Windows, dictated text is not concealed and may appear in Windows clipboard managers.

  • The Paste last transcript shortcut can be customized in Flow's keyboard shortcut settings.


Still need help?

Reach out to our support team if:

  • Vibe coding settings cause crashes or freezes.

  • Variable recognition worked before but stopped.

  • You're hitting an issue specific to a particular IDE.

Include your IDE name and version, your OS, and what you tried. Most IDE issues are resolved in one reply. Visit wisprflow.ai/support to get in touch.