|
| You say | What opens | Command |
|---|---|---|
| "Hey Copilot" | GitHub Copilot Chat | workbench.action.chat.open |
| "Hey Claude" | Claude Code | claude-vscode.focus |
| "Computer" | Terminal | workbench.action.terminal.focus |
Custom routes
Add your own phrases in settings.json. Any spoken English phrase works:
{
"wakeWord.routes": [
{
"label": "Copilot",
"phrase": "hey copilot",
"command": "workbench.action.chat.open"
},
{
"label": "Claude",
"phrase": "hey claude",
"command": "claude-vscode.focus"
},
{
"label": "Search",
"phrase": "search files",
"command": "workbench.action.quickOpen"
},
{
"label": "Commands",
"phrase": "open commands",
"command": "workbench.action.showCommands"
}
]
}
The speech engine uses Windows built-in dictation with prefix matching against your configured phrases.
The handoff
When a wake phrase is detected:
- The extension immediately kills the speech engine process, releasing the mic
- The target VS Code command fires (opening the assistant)
- The assistant's voice mode takes over the microphone with no contention
- After
wakeWord.cooldownSeconds(default: 30), wake word listening resumes - Status bar shows "Wake: Active" during handoff, then returns to "Wake: Listening"
This ensures only one thing uses the mic at a time.
Settings
| Setting | Default | Description |
|---|---|---|
wakeWord.routes |
[] |
Wake phrase routing table. Uses defaults if empty. |
wakeWord.cooldownSeconds |
30 |
Seconds to pause after handoff before resuming |
wakeWord.enableOnStartup |
true |
Start listening when VS Code opens |
wakeWord.showNotificationOnDetection |
true |
Show notification when wake phrase is heard |
Commands
- Wake Word: Enable Listening -- start the detector
- Wake Word: Disable Listening -- stop the detector
- Wake Word: Toggle Listening -- toggle on/off (also via status bar click)
- Wake Word: Reset Microphone Consent -- clear consent and re-prompt
Common command IDs
Useful values for the command field in your routes:
| Assistant / Feature | Command ID |
|---|---|
| GitHub Copilot Chat | 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 |
How It Works (Technical)
The extension spawns a background PowerShell process that uses System.Speech.Recognition.SpeechRecognitionEngine to listen for wake phrases. This is the same speech engine built into Windows that powers Cortana and Windows Speech Recognition.
The process flow:
- Extension builds a dictation-based recognition loop with prefix matching for the configured wake phrases
- The recognition script is passed to PowerShell via an encoded command
- PowerShell loads
System.Speech, sets up a dictation grammar, and callsRecognize()in a loop - Recognised text is matched against wake phrase prefixes; a match writes to stdout
- The extension reads stdout and fires the corresponding VS Code command
- On pause (handoff), the PowerShell process is killed to release the microphone
- On resume, a new PowerShell process starts
Zero runtime npm dependencies. Zero model downloads. The speech engine ships with Windows.
Privacy
All speech recognition runs locally via Windows built-in System.Speech.Recognition. No audio data leaves your machine. The microphone stream is processed in memory by the Windows speech engine and never written to disk.
Platform Support
| Platform | Status |
|---|---|
| Windows 10/11 | Supported |
| macOS | Planned |
| Linux | Planned |
Compatibility
| Editor | Install method |
|---|---|
| VS Code | Marketplace or code --install-extension analytics-in-motion.wake-word |
| Cursor | Open VSX or .vsix from GitHub Releases |
| Windsurf | Open VSX or .vsix from GitHub Releases |
| Other VS Code forks | .vsix from GitHub Releases |
License
Apache 2.0