# Voice Dictation in VS Code and the Linux Terminal (2026)

Canonical: https://vibetyper.com/blog/vscode-voice-dictation-linux-terminal
Description: VS Code now ships on-device dictation for the editor, chat and terminal. What it covers, where it stops, and how to dictate into any Linux terminal.
Published: 2026-09-16T04:00:00.000Z
Updated: 2026-09-16T04:00:00.000Z
Tags: vscode, terminal, linux, voice-typing, dictation, developers, wayland, claude code

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](https://code.visualstudio.com/docs/configure/accessibility/voice), 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](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-speech). 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](/blog/claude-code-voice-typing).

## 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](/downloads) 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, because `Ctrl+V` is a control character to them.
- Konsole and Yakuake get `Shift+Insert`, which KDE terminals handle more reliably.
- VS Code and Cursor get `Shift+Insert` too. Their integrated terminals often read `Ctrl+V` as an image paste, particularly with a CLI agent running inside, and `Shift+Insert` pastes 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](/docs/text-insertion-and-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](/blog/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](/blog/voice-typing-wayland-linux) walks through it. Pop!_OS COSMIC has one specific quirk, covered in [the COSMIC paste note](/docs/popos-cosmic-paste-behavior).

## Setting it up for VS Code and the terminal

1. Download the AppImage from the [downloads page](/downloads), `chmod +x` it, run it and grant microphone access.
2. Complete the Wayland setup if prompted, then restart when it asks.
3. Choose a global hotkey that neither VS Code nor your terminal already claims. Toggle mode suits long prompts; press-and-hold suits quick commands.
4. Focus the VS Code editor, its terminal, or a standalone terminal. Press the hotkey, talk, stop.
5. 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](/docs/supported-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](/blog/best-ai-voice-typing-apps-linux) 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](/docs/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](/downloads) and start on the free plan. Related: [Cursor voice input](/blog/cursor-ai-voice-typing), [Claude Code voice typing](/blog/claude-code-voice-typing), [OpenCode voice support](/blog/opencode-voice-typing-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.
