Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Wake WordNew to Visual Studio Code? Get it now.
Wake Word

Wake Word

Analytics in Motion

|
147 installs
| (0) | Free
Say a wake phrase to open Claude Code, the chat panel, the terminal, or any command. Runs locally, no accounts, zero config.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info


Wake Word icon
Wake Word

Voice Activation for Code Editors

Meta Version  Apache 2.0 License  wakeword.io  Analytics in Motion
Registries Visual Studio Marketplace  Open VSX Registry

Say a wake phrase and the right AI assistant opens -- no clicking required.

Say "Hey Claude" and Claude opens. Say "Hey Chat" and the chat panel opens. Say "Hey Computer" and the terminal focuses. The extension handles the routing, pauses its own mic so the assistant can use it, then resumes listening when the voice session ends.

Zero config. No API keys. No accounts. Install and go.

All audio processing happens locally on your machine. Nothing is recorded or transmitted.

https://github.com/user-attachments/assets/fb007095-5c4c-4927-aaa6-fa76550d7cb2

How It Works

  1. Install the extension. The speech model is included, so there is nothing to download.
  2. When your editor opens, the extension starts listening on your microphone
  3. Audio is processed locally -- through voice activity detection and keyword spotting -- and matched against your configured wake phrases
  4. If a phrase is detected, the extension releases the mic and then fires the mapped command
  5. The assistant the route opens takes over the microphone with no contention
  6. Wake word listening resumes after a configurable cooldown, with a live countdown in the status bar (Wake: 30s, Wake: 29s, ...), or, for routes set to manual handoff, when you click the status bar or press the toggle shortcut. Running Wake Word: Enable Listening during a cooldown resumes early

Installation

VS Code

Install directly from the VS Code Marketplace.

Or from the command line (VS Code only):

code --install-extension analytics-in-motion.wake-word

Cursor, Windsurf, and other VS Code forks

Option A: Open VSX Registry -- Search for "Wake Word" in the extensions panel.

Option B: Manual .vsix install -- Download the latest .vsix from GitHub Releases. Open Extensions, click the three-dot menu, select "Install from VSIX".

Prerequisites

The speech engine is packaged with the extension, so there is no runtime to install. Platform Support lists what each platform needs.

Windows needs the Microsoft Visual C++ Redistributable (x64), which most machines already have. Without it, listening fails to start and the status bar shows Wake: Error: install VC_redist.x64.exe from Microsoft's latest supported downloads page and enable listening again.

First Run Consent

The first time the extension tries to listen, a modal dialog explains exactly what happens: continuous microphone use, fully local processing. You must click "Allow Microphone Listening" to proceed.

If you decline, listening does not start. You can enable it any time via the status bar or command palette, which will re-prompt for consent. Reset the consent prompt with Wake Word: Reset Microphone Consent.

Wake Phrase Routing

The core feature. Each spoken phrase maps to a VS Code command.

Default routes

These work out of the box with no configuration:

You say What opens Command
"Hey Claude" Claude Code claude-vscode.focus
"Hey Chat" or "Open Chat" The editor's chat panel workbench.action.chat.open
"Hey Computer" or "Open Terminal" Terminal workbench.action.terminal.focus

The Claude route uses manual handoff (see Handoff mode): after it fires, listening stays paused until you click Wake: Paused in the status bar or press the toggle shortcut. The other two resume after the cooldown.

The Claude route needs the Claude Code extension. Without it, that route is set aside and the other two still work: see Routes whose command is not available.

To stop listening for one of these routes, switch it off: see Switching a route off.

Switching a route off

Switch any route off and back on, a default route or one of your own. Run Wake Word: Switch Routes On or Off, uncheck a route and press Enter. Listening restarts with the routes still checked.

Your choice is saved as a list of route labels. Switching off a default route adds only its label, and the other default routes stay as they are:

{
  "wakeWord.routesSwitchedOff": ["Terminal"]
}

Wake Word: Show Diagnostics lists the routes that are switched off. When every route is switched off, the status bar shows Wake: Routes off. Click it to choose a route to switch back on.

Custom routes

Add your own phrases in settings.json. Any spoken English phrase works:

{
  "wakeWord.routes": [
    {
      "label": "Claude",
      "phrase": "hey claude",
      "command": "claude-vscode.focus"
    },
    {
      "label": "Codex",
      "phrase": "hey codex",
      "command": "chatgpt.newCodexPanel"
    },
    {
      "label": "Search",
      "phrase": "search files",
      "command": "workbench.action.quickOpen"
    },
    {
      "label": "Commands",
      "phrase": "open commands",
      "command": "workbench.action.showCommands"
    }
  ]
}

Detection of uncommon words varies. The speech model works best with common English words, so a phrase built on a product name or other unusual word, such as "hey codex", may be missed more often than the default phrases. If one is, give that route a lower confidenceThreshold, lower wakeWord.confidenceThreshold for every phrase, or add an alias made of common words.

Phrase aliases

The phrase field accepts a string or an array of strings. Use arrays to map multiple trigger phrases to the same command:

{
  "label": "Claude",
  "phrase": ["hey claude", "open claude"],
  "command": "claude-vscode.focus"
}

Phrase warnings

When listening starts, Wake Word checks your phrases. Anything likely to detect poorly is written to the Wake Word output channel, with one notification pointing at it:

  • A single word, such as "search". Single words cause more false positives than a two-word phrase such as "hey search".
  • A phrase shorter than four characters.
  • A common word on its own, such as "stop", "okay", or "hello".
  • The same phrase on two routes. Only the first of those routes can fire.
  • A phrase contained in another route's phrase, such as "claude" and "hey claude". The shorter one may trigger when the longer one is spoken. Aliases on the same route are not compared, because they run the same command.

Warnings never block a phrase. They are shown once per session, and again when you change your routes' phrases.

Routes whose command is not available

When listening starts, Wake Word checks that each route's command exists in your editor. A route whose command is not available, such as the default Claude route when Claude Code is not installed, is not listened for. A notification names the route, its command, and the extension to install. It appears once, not every time the editor starts, and Wake Word: Show Diagnostics lists these routes under "Set aside". Wake Word checks the commands of the routes that are switched on, so switching a route off also ends the notification about its command: switch off the Claude route if you work without Claude Code.

Install or enable the extension a route needs and the route is listened for again, without restarting the editor. If none of your routes' commands are available, the microphone is not opened, and the status bar shows Wake: No commands until one is.

Per-route cooldown

Override the global cooldown for individual routes with cooldownSeconds:

{
  "label": "Terminal",
  "phrase": "hey computer",
  "command": "workbench.action.terminal.focus",
  "cooldownSeconds": 10
}

Per-route threshold

Override the global trigger threshold for one route with confidenceThreshold. Lower detects more easily, at the cost of more false triggers. Use it for a phrase the speech model finds hard, without making your other phrases trigger more readily:

{
  "label": "Claude",
  "phrase": "hey claude",
  "command": "claude-vscode.focus",
  "confidenceThreshold": 0.03
}

The range is 0.01 to 0.9, the same as wakeWord.confidenceThreshold. It applies to every phrase on the route, and a route without it uses the global setting.

Handoff mode

handoff chooses how listening comes back after a route fires:

  • "timer" (default): listening resumes after cooldownSeconds.
  • "manual": listening stays paused until you click the status bar, press the toggle shortcut, or run Wake Word: Enable Listening. Use this for assistants whose voice sessions run longer than the cooldown, so Wake Word does not restart under them and compete for the microphone.
{
  "label": "Claude",
  "phrase": "hey claude",
  "command": "claude-vscode.focus",
  "handoff": "manual"
}

The status bar shows Wake: Paused while a manual route waits. The default Claude route uses manual handoff.

Multiple windows

Only the editor window you are using listens. When a window loses focus, Wake Word pauses there and releases the microphone, and the window you switch to starts listening, usually within a fraction of a second. While another application has focus, nothing listens. A window you are not using shows Wake: Unfocused in the status bar.

A wake phrase that hands the microphone to an assistant keeps it handed over whichever window you move to. Until the cooldown ends, or, for a manual handoff, until you resume in the window that handed over, the window you are in shows Wake: Other window and does not open the microphone.

To keep one window listening while you work elsewhere, turn off wakeWord.pauseOnFocusLoss. The first window to start listening then keeps the microphone, and the others show Wake: Other window. When that window closes, crashes, or has listening disabled, another takes over within about ten seconds.

Windows of different editors, such as VS Code and an editor built on it, do not share the microphone. With wakeWord.pauseOnFocusLoss on, only one of them listens all the same, because only one window has focus at a time.

Remote windows

Wake Word works in remote windows: SSH, WSL, dev containers, and Codespaces opened in the desktop editor. It runs on your own machine, beside your microphone, and the commands it runs reach extensions on the remote side, such as Claude Code installed there. It does not run in the editor in a web browser, which cannot run its speech engine.

Status bar

Status bar Meaning
Wake: Starting Loading the speech model and opening the microphone. Wake phrases are not heard yet
Wake: Listening Listening for wake phrases
Wake: Confirm Confirmation mode heard a phrase once, and is waiting to hear it again
Wake: Active, Wake: 30s, Wake: Paused A wake phrase handed the microphone to the assistant it opened
Wake: Unfocused Paused because the window is not focused: the window you are using listens instead. Focusing this window resumes it
Wake: Restarting The speech engine stopped and is being restarted
Wake: Calibrating A Wake Word: Calibrate run is listening
Wake: Error Listening stopped; the tooltip says why. Click to try again
Wake: Off Not listening. Click, or press the toggle shortcut, to start
Wake: Other window Another window of the same editor has the microphone: it is still pausing, or a wake phrase handed it to an assistant there. This window listens as soon as it is released
Wake: No commands None of the routes' commands are available in this editor
Wake: Routes off Every route is switched off. Click it to choose the routes to listen for

Settings

Setting Default Description
wakeWord.routes [] Wake phrase routing table. Uses defaults if empty.
wakeWord.routesSwitchedOff [] Labels of the routes to switch off, the default routes included, which stay in place. Wake Word: Switch Routes On or Off sets it
wakeWord.cooldownSeconds 30 Seconds to pause after handoff before resuming. Routes with handoff: "manual" wait for you instead
wakeWord.enableOnStartup true Start listening when the editor opens
wakeWord.showNotificationOnDetection true Show notification when wake phrase is heard
wakeWord.pauseOnFocusLoss true Listen only in the focused editor window: pause when the window loses focus and resume when it is focused again. When off, the first window to start listening keeps the microphone until listening stops there
wakeWord.confidenceThreshold 0.05 Trigger threshold (0.01 to 0.9) for wake phrase detection. Lower detects more easily, higher gives fewer false positives
wakeWord.confirmationMode false Require the wake phrase twice within 5 seconds before triggering. Reduces false positives in noisy environments.
wakeWord.audioDevice "" Microphone to use: a case-insensitive substring of the device name (e.g. "USB") or a device index. Empty for the system default.

Choosing a microphone

wakeWord.audioDevice selects the input device. Use any case-insensitive substring of the device name as it appears in your system sound settings, or the device's index number:

{
  "wakeWord.audioDevice": "Headset"
}

Changing it restarts the engine. If the value matches no device, or more than one, the error notification says so and names the value. Wake Word: Show Diagnostics lists your input devices with their names and index numbers.

Commands

Every command is in the Command Palette under Wake Word. Toggle Listening also has a shortcut, Shift+Alt+W (Ctrl+Cmd+W on macOS), which works from the editor, the terminal, and an assistant's panel, and from a foot pedal that sends a key combination. Change it in Keyboard Shortcuts.

Command What it does
Wake Word: Enable Listening Start listening, or resume after a handoff
Wake Word: Disable Listening Stop listening and release the microphone
Wake Word: Toggle Listening The status bar click: turn listening off or on, or resume after a manual handoff
Wake Word: Switch Routes On or Off Choose which routes are listened for, the default routes included
Wake Word: Calibrate Listen for 15 seconds and report each phrase heard, without running any route
Wake Word: Show Diagnostics Write a report to the Wake Word output channel, with Show Log, Copy to Clipboard, and Report Issue
Wake Word: Open Settings Open the Settings editor at Wake Word's settings
Wake Word: Reset Microphone Consent Forget the consent given, so the next start asks again

Common command IDs

Useful values for the command field in your routes. Command IDs listed are for VS Code. Cursor and other editors may use different IDs for the same features.

Assistant / Feature Command ID
The editor's chat panel workbench.action.chat.open
Claude Code claude-vscode.focus
VS Code Speech dictation workbench.action.editorDictation.start
Command Palette workbench.action.showCommands
Focus Terminal workbench.action.terminal.focus
Quick Open workbench.action.quickOpen
Toggle Sidebar workbench.action.toggleSidebarVisibility
New File workbench.action.files.newUntitledFile

Troubleshooting

Problem What to do
The status bar shows Wake: Error Hover over it for the reason, or open the Wake Word output channel. Fix what it names, then click the status bar to try again
Nothing is heard Run Wake Word: Show Diagnostics: it lists your input devices and marks the one in use. Choose another with wakeWord.audioDevice, then run Wake Word: Calibrate to see what is heard
macOS: nothing is heard Allow your editor in System Settings > Privacy & Security > Microphone, then quit and reopen it
Windows: nothing is heard In Settings > Privacy & security > Microphone, turn on microphone access and "Let desktop apps access your microphone"
Windows: Wake: Error as soon as listening starts Install the Microsoft Visual C++ Redistributable (x64), then enable listening again
A Bluetooth headset sounds worse while listening Keeping its microphone open switches the headset to its lower-quality call mode. Set wakeWord.audioDevice to your computer's built-in microphone
A remote window (SSH, WSL, dev container) Wake Word runs on your own machine, beside the microphone. If it was installed on the remote host, open it in the Extensions view and choose Install Locally
The shortcut does nothing in the terminal Add wakeWord.toggle to terminal.integrated.commandsToSkipShell in your settings
Reporting a problem Run Developer: Set Log Level, choose Wake Word, then Debug, and repeat what went wrong: the output channel now shows the engine's detail. Then run Wake Word: Show Diagnostics and choose Report Issue: the report is copied and a new issue opens for you to paste it into, check, and submit

The log and the report never contain audio or anything you said, and device names that look like a person's are shortened in the report.

Privacy

All speech recognition runs locally on your machine. No audio data ever leaves your device. Nothing is recorded, stored, or transmitted. Wake Word makes no network requests: the speech model comes with the extension.

Dependencies

The speech engine is built on two open source projects, both packaged with the extension.

Project What it does Links
decibri Microphone capture, signal conditioning, and voice activity detection GitHub / decibri.com
sherpa-onnx Open-vocabulary keyword spotting GitHub

Platform Support

Platform Status Needs
Windows 10/11 (x64) Supported Visual C++ Redistributable
macOS 14+ (Apple silicon) Supported nothing
Linux (x64, ARM64) Supported glibc 2.28+, ALSA

License

Apache 2.0

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft