Voice Dictation in VS Code and the Linux Terminal (2026)
VS Code can now take dictation on its own. Since version 1.131 in July 2026 it ships an on-device speech model that fills the chat box, the editor and the integrated terminal, and it does not send audio anywhere. If your whole day happens inside one VS Code window, that may be all you need.
This guide covers what the built-in feature does, checked against VS Code's voice documentation, and then the cases it does not cover: the standalone terminal, the CLI coding agent, the commit message, and every other place a Linux developer types.
What VS Code's built-in dictation does
Straight from the docs, so you can verify each line:
| Surface | How to start | Notes |
|---|---|---|
| Chat and the Agents window | Ctrl+I (⌘I on macOS) |
Inserts text, does not submit. Escape cancels and removes it |
| Editor | Ctrl+Alt+V (⌥⌘V on macOS) |
Dictates at the cursor in the active file |
| Integrated terminal | Command Palette: Voice: Start Dictation in Terminal | No default keybinding. Removes ordinary punctuation, converts spoken symbol names, adjusts initial capitalisation |
The model is Nemotron 3.5, downloaded on first use. After that, recognition runs locally and offline. The agents.voice.language setting takes a language hint or auto, accessibility.voice.speechTimeout stops terminal dictation after a period of silence, and dictation.enabled can be switched off by an organisation policy.
Two platform points matter on Linux. The on-device model needs x64 or Arm64 with glibc 2.34 or later, so musl-based distributions such as Alpine, plus 32-bit and Arm32 machines, fall back to the older VS Code Speech extension. And built-in dictation does work in remote workspaces, Remote SSH, Dev Containers and WSL included, because recognition runs on the local VS Code client rather than the remote host. That is a genuine advantage over agent-side voice features like Claude Code's /voice, which stop working the moment the agent runs somewhere else.
Where it stops
It only types into VS Code. The feature lives in the workbench. GNOME Terminal, Konsole, kitty, Alacritty, WezTerm, a tmux session in any of them, your browser, Slack, the GitHub review box and your email client are all outside it. Every one of those still gets typed by hand.
Terminal mode is built for commands, not prose. Removing punctuation and converting "dash dash force" into --force is exactly right for a shell command. It is exactly wrong for the other thing people now do in the integrated terminal, which is talk to Claude Code, OpenCode, Aider or Codex in full sentences. A three-sentence prompt with its full stops stripped out is a worse prompt.
No cleanup of how you actually talk. The transcript is what you said, including the ums, the restarts and the "wait, no, the other file". An experimental LLM cleanup option exists, but it sends the transcript to Copilot, and it is off by default.
It is one hotkey per surface, and none for the terminal. You start terminal dictation from the Command Palette, or bind it yourself.
Your organisation may have turned it off. dictation.enabled is a managed setting.
None of that makes it a bad feature. It makes it an editor feature, and a terminal-heavy Linux workflow is mostly not inside the editor.
Dictating into any Linux terminal, without a copy-paste step
The alternative is a dictation layer that sits below every application rather than inside one. You press a global hotkey, talk, release, and the text is inserted into whatever window has focus. No dictation window, no transcript to select and copy, no switching back.
Vibe Typer does this on Linux as a single AppImage, and the part that matters for terminal work is how the text goes in. Terminals are the one place a naive Ctrl+V breaks, so its Automatic insertion mode picks the shortcut per app:
- Known standalone terminals get
Ctrl+Shift+V, the plain-text paste terminals expect, becauseCtrl+Vis a control character to them. - Konsole and Yakuake get
Shift+Insert, which KDE terminals handle more reliably. - VS Code and Cursor get
Shift+Inserttoo. Their integrated terminals often readCtrl+Vas an image paste, particularly with a CLI agent running inside, andShift+Insertpastes text everywhere in the app. - On Wayland, any app it cannot identify also gets
Shift+Insert, on the assumption that the focused window might be a terminal.
Your clipboard snapshot is restored afterwards. If you would rather the clipboard were never involved, set that app to Always Type, which simulates real keystrokes. Both are configured per application in paste preferences, so the VS Code editor and a kitty window can behave differently without you thinking about it.
Multi-line prompts survive too. Terminals wrap pasted text in bracketed-paste escape sequences, which is how agent TUIs know to accept a paragraph as one block rather than submitting at the first newline. The details, including the cases that bite over SSH, are in voice dictation over SSH.
Wayland is the thing to check first
Most system-wide Linux dictation tools were built on xdotool, which can inject keystrokes into any X11 window and cannot inject into any Wayland window at all. Ubuntu has defaulted to Wayland since 22.04 and Fedora for longer, so "works on Linux" often quietly means "works on X11". The failure mode is silent: hotkey pressed, nothing typed.
Vibe Typer ships both insertion paths natively and picks the one your session is running. On a Wayland session, the guided first-launch setup installs the helpers it needs and sets device permissions so the global hotkey works system-wide. If you want to test any other tool for this in five minutes, voice typing on Wayland walks through it. Pop!_OS COSMIC has one specific quirk, covered in the COSMIC paste note.
Setting it up for VS Code and the terminal
- Download the AppImage from the downloads page,
chmod +xit, run it and grant microphone access. - Complete the Wayland setup if prompted, then restart when it asks.
- Choose a global hotkey that neither VS Code nor your terminal already claims. Toggle mode suits long prompts; press-and-hold suits quick commands.
- Focus the VS Code editor, its terminal, or a standalone terminal. Press the hotkey, talk, stop.
- Read what landed before you press enter. In a chat box a misheard word is a typo; in an agent prompt it is a diff.
Leave the insertion mode on Automatic unless a specific app misbehaves, then give that one app its own rule. Escape cancels a recording without inserting anything, and the repaste hotkey re-inserts the last transcript if it landed in the wrong window.
Built-in dictation vs a system-wide hotkey
| VS Code built-in dictation | Vibe Typer | |
|---|---|---|
| VS Code editor and chat | Yes | Yes |
| VS Code integrated terminal | Yes, command-tuned, punctuation removed | Yes, full prose or commands |
| Standalone terminals, tmux | No | Yes |
| Browser, Slack, GitHub, email | No | Yes |
| Remote SSH, Dev Containers, WSL | Yes, recognition is local | Yes, the terminal is local |
| Processing | On device, offline after download | Cloud (Groq, Cloudflare Workers AI fallback), audio processed in memory and discarded |
| Filler-word and false-start cleanup | Experimental, via Copilot | Built in (Magic Formatter) |
| Languages | Single language hint or auto | 99 languages, automatic detection |
| Wayland | Yes, inside its own window | Native Wayland and X11 |
| Cost | Included | Free tier, Pro $8/month annual |
The processing row is the honest trade. VS Code keeps audio on your machine. Vibe Typer sends it to a cloud model, processes it in memory, keeps no server-side transcript cache and trains nothing on it, but it is not offline. If audio must never leave the machine, use VS Code's dictation inside the editor and an offline tool like Vocalinux or Handy outside it; the Linux roundup covers those.
The case that decides it: prompts to a CLI agent
Most of the people asking about terminal dictation in 2026 are not dictating git rebase -i. They are dictating three paragraphs to Claude Code, OpenCode or Aider in a terminal pane and want the prompt to arrive as written English.
VS Code's terminal dictation strips the punctuation. Claude Code's own /voice needs a Claude.ai login and a local microphone, so it is unavailable on Bedrock, over SSH and in containers. OpenCode closed its voice input request as not planned. A system-wide hotkey does not care which of those is true. It types into the terminal like a keyboard, and Magic Formatter removes the false starts so the agent gets intent rather than a transcript of you thinking.
Say the constraints out loud while you are at it. "Do not change the user table schema" costs nothing to say and saves a round trip. Add your repository names, service names and CLI flags to the custom dictionary once, since those are the words a general speech model mangles and the words the agent most needs right.
Use both
Nothing stops you. Keep VS Code's dictation for offline editor work if you like it, and bind a global hotkey for the terminal, the agent, the browser and the pull request description. Same key, same behaviour, in the editor and in the ten other places you typed today.
Download Vibe Typer and start on the free plan. Related: Cursor voice input, Claude Code voice typing, OpenCode voice support.
FAQ
Does VS Code have built-in voice dictation?
Yes. Since VS Code 1.131 (July 2026), built-in dictation works in chat (Ctrl+I), the editor (Ctrl+Alt+V) and the integrated terminal (Voice: Start Dictation in Terminal from the Command Palette). It uses an on-device Nemotron model, so after the first download it works offline. Older platforms need the VS Code Speech extension (ms-vscode.vscode-speech) instead.
Does VS Code dictation work in the integrated terminal?
Yes, but it is tuned for shell commands. Terminal dictation removes ordinary punctuation, converts spoken symbol names and adjusts capitalisation, which is what you want for a command and not what you want when dictating a paragraph to a CLI agent running in that terminal.
Does VS Code dictation work over Remote SSH, Dev Containers or WSL?
Yes. VS Code's docs state that built-in dictation works in remote workspaces because speech recognition runs on the local VS Code client. It is not available in VS Code for the Web, on Intel Macs, or on 32-bit, Arm32 and musl-based Linux without the Speech extension.
How do I dictate into a Linux terminal outside VS Code?
Use a system-wide dictation tool. Vibe Typer runs on Wayland and X11, and when you press its hotkey it inserts the transcript into whatever window has focus, including GNOME Terminal, Konsole, kitty, Alacritty and tmux sessions. There is no separate dictation window and nothing to copy.
Can I dictate into a terminal without copy and paste?
You never copy anything by hand. Vibe Typer's Automatic mode inserts through a terminal-safe paste shortcut and restores your clipboard afterwards; Always Type simulates keystrokes and does not touch the clipboard at all. Either way, text lands at the cursor the moment you stop talking.
Why does Ctrl+V paste an image in the VS Code terminal?
Electron editors such as VS Code and Cursor often treat Ctrl+V in the integrated terminal as an image paste, especially with CLI agents running inside it. Vibe Typer sends Shift+Insert to VS Code and Cursor instead, which pastes text correctly across the whole app.
Does voice dictation work on Wayland?
VS Code's built-in dictation does, because it only types into its own window. For system-wide tools it depends on the tool: most rely on xdotool and silently fail on Wayland. Vibe Typer ships native Wayland and X11 insertion paths and picks the right one for your session.
Which is better for dictating prompts to Claude Code or OpenCode?
A system-wide hotkey. VS Code's terminal dictation is built for commands and strips punctuation. Claude Code's own /voice needs a Claude.ai login and a local microphone, and OpenCode has no voice input. Vibe Typer types full, punctuated prompts into any terminal the agent runs in, and Magic Formatter removes the ums and false starts.
Try Vibe Typer free
Voice typing that works in every app on Linux, Windows, and macOS. Free to download: 2,000 words a month, no card.
Download free

