Variable Recognition

Last updated: April 13, 2026

Available on: Mac, Windows

Variable Recognition automatically wraps code symbols in backticks when you dictate in supported IDEs. Say a variable, function, or class name out loud, and Flow formats it as inline code — no manual editing needed.


What it is

When you're working in Cursor, Windsurf, or VS Code, Flow reads your code context and sends variable, function, and class names to the transcription service to improve recognition accuracy. In Cursor and Windsurf, Flow also provides file tagging in AI chat.

VS Code receives screen reader mode integration so Flow can read code context, but file tagging and backtick formatting are limited to Cursor and Windsurf.

Variable Recognition is off by default. To enable it, go to Settings → Vibe coding and toggle on Variable Recognition. When enabled, Flow activates Screen Reader Mode in your IDE to read code content.


When to use it

Use this feature when you want to:

  • Dictate commit messages or PR descriptions that reference code symbols

  • Write documentation or notes that mention functions and variables

  • Collaborate with teammates using properly formatted code references


How it works in Flow

Overview

Flow reads the code content from your active editor tab and uses AI to match spoken words to code symbols. When a match is found, the symbol is automatically wrapped in backticks.

Key behaviors

  • Symbol extraction: Flow extracts up to 50 function names, 50 class names, and 100 variable names per code block. Variable names are additionally capped at 20 per block when aggregating across multiple open files. These are combined into a single vocabulary list sent to the transcription service.

  • File name caching: File names from previously opened tabs are cached across dictation sessions, so you can reference files you've worked with recently even if they're not currently active.

  • Screen Reader Mode auto-recovery: If Screen Reader Mode is turned off in your IDE while Variable Recognition is enabled, Flow automatically re-enables it after your next dictation.

  • Supported IDEs: Cursor and Windsurf for full Variable Recognition (backtick formatting and file tagging). VS Code receives screen reader mode integration for code context reading, but backtick formatting and file tagging are not available.

  • Supported languages: JavaScript, TypeScript, Python, Java, Swift, C++, C, Rust, and Go. Code in other languages does not have symbols extracted for vocabulary boosting.

  • Case flexibility: For file tagging, Flow can match spoken filenames by splitting on camelCase boundaries and separators (e.g., saying "my script dot py" can match myScript.py). For variable and function recognition, names are sent as-is to the transcription service, which handles matching.

  • Code context required: The file containing the symbol should be open in your IDE. Flow reads content from visible text areas and caches file names across dictation sessions.

  • Terminal limitation: In the integrated terminal, file tagging autocomplete (@-file linking) is suppressed, though dictated text including recognized variable names is still inserted.

  • Independent settings: Variable Recognition and File Tagging in Chat are independent settings. Variable Recognition defaults to off, while File Tagging defaults to on. You can enable or disable each separately.

  • File extension required for tagging: Only files with extensions (containing a dot in the filename) can be tagged. Extensionless files are not supported for file tagging.

Best practices

  • Keep the relevant code file open in your active tab for best recognition.

  • Say variable names clearly without filler words for more accurate matching.

  • Avoid using Custom Dictionary substitutions alongside File Tagging in Chat — if any substitution triggers during a dictation, file tagging formatting is skipped for that transcript.


Examples

Dictating a function name

You say: "Can you update the clearPasteboard function?"

Flow types: Can you update the `clearPasteboard` function?

Backtick formatting is applied when the transcription service recognizes code symbols from your editor context. Results may vary.

Using natural speech for camelCase

You say: "Check the user settings object"

Flow types: Check the `userSettings` object

Matching quality depends on whether the variable name was successfully extracted from your code.

Tip: Variable Recognition works with constants, class names, and other identifiers — not just functions.


FAQs

Why aren't my variables being formatted with backticks?

Check that Variable Recognition is enabled in Settings → Vibe coding, you're in a supported IDE (Cursor or Windsurf), and the file containing the symbol is open in your active tab.

Does this work with VS Code or VS Code Insiders?

Standard VS Code has limited support — screen reader mode integration only, without backtick formatting or file tagging. VS Code Insiders is not supported.

What is File Tagging in Chat?

File Tagging is a separate feature in Settings → Vibe coding that automatically tags files in your IDE's AI chat (like index.tsx). It's enabled by default and works in Cursor and Windsurf only.

To tag a file, say the full filename with extension (e.g., "myScript.py") — no trigger word needed. To tag a file without saying the extension, use a trigger word: "at", "tag", "tagged", or "@" before the base filename (e.g., "at myScript"). File tagging only works for files with extensions.

If a Custom Dictionary substitution triggers during your dictation, file tagging formatting is skipped for that transcript.


Limitations and notes

  • This feature is available on Mac and Windows only.

  • Recognition accuracy depends on code structure, language support, and speech clarity.

  • If a Custom Dictionary substitution triggers during a dictation, file tagging formatting is skipped for that transcript. Variable name vocabulary sent to the transcription service is not affected.

  • If you have Screen Reader Mode enabled in your IDE but have hidden its status indicator from the bottom bar, Flow may not detect it correctly and may repeatedly toggle the setting after each dictation.