microsoft / microsoft/vscode

Voice/dictation (Cmd+I) never activates the speech provider extension — startup race condition breaks onSpeech activation

Open
#332,385 1 comment 0 reactions 1 assignee Claimed by @meganrogge View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

Type: Bug

Environment

VS Code: 1.134.0 (stable, not Insiders)
OS: macOS (Darwin 25.6.0)
GitHub Copilot Chat (bundled): 0.62.0
ms-vscode.vscode-speech: 0.16.0
Steps to reproduce

Fresh launch of VS Code.
Focus the Chat input, press Cmd+I to start voice dictation (or invoke "Chat: Start Voice Chat").
Expected behavior
VS Code fires the onSpeech activation event, activating ms-vscode.vscode-speech (which declares "activationEvents": ["onSpeech"]), and voice dictation starts.

Actual behavior
ms-vscode.vscode-speech never activates via onSpeech. Voice input consistently fails with:

[chat-stt] failed to start transcription Timed out connecting to the voice service.
The extension only ever activates if its own vscode-speech.openSettings command is run manually — never through the voice-trigger path. Reproduced on 8/8 consecutive restarts in one session.

Suspected root cause
At every startup, this error fires ~1 second before GitHub Copilot Chat activates:

[error] Unable to create workbench contribution 'chat.contextContributions'.
[createInstance] _St depends on UNKNOWN service chatSessionRoutingProviderService.
Timeline from logs:

19:28:09.119 chat.contextContributions fails — chatSessionRoutingProviderService not yet registered
19:28:10.166 GitHub.copilot-chat activates (activationEvent: onStartupFinished)
This looks like a race: core tries to resolve chatSessionRoutingProviderService before Copilot Chat (which presumably registers it) has activated. The contribution fails once and is never retried, which appears to also break whatever mechanism is responsible for firing onSpeech on demand — leaving no speech provider registered for the rest of the session, so voice requests fall through to a different path that times out trying to reach a remote voice service.

Already ruled out: VPN/proxy/network (general connectivity fine, no proxy configured, no VPN client connected), stale extensions (Copilot Chat is bundled/version-locked to VS Code core at 0.62.0, already current), VS Code updates (already on latest — "no updates available").

Extension version: 0.16.0
VS Code version: Code 1.134.0 (Universal) (110a328ea54b42367b803ec53ee0bf52ef26b419, 2026-08-18T18:24:44Z)
OS version: Darwin arm64 25.6.0
Modes:

System Info

|Item|Value|
|---|---|
|CPUs|Apple M2 Pro (10 x 2400)|
|GPU Status|2d_canvas: enabled
GPU0: VENDOR= 0x106b [Google Inc. (Apple)], DEVICE=0x0000 [ANGLE (Apple, ANGLE Metal Renderer: Apple M2 Pro, Version 26.6.2 (Build 25G83))], DRIVER_VENDOR=Apple, DRIVER_VERSION=26.6.2 *ACTIVE*
Machine model name: Mac
Machine model version: 14.9
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: enabled_on
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgpu: enabled
webnn: disabled_off|
|Load (avg)|2, 3, 3|
|Memory (System)|16.00GB (0.08GB free)|
|Process Argv|--crash-reporter-id 7d692a69-1514-4328-b8db-0f04791b6a34|
|Screen Reader|no|
|VM|0%|

A/B Experiments

```
vsliv368cf:30146710
vswsl492cf:30256860
binariesv615:30325510
nativeloc1:31344060
dwcopilot:31170013
dwoutputs:31242946
copilot_t_ci:31333650
e5gg6876:31282496
pythonrdcb7:31342333
6518g693:31463988
aj953862:31281341
envsactivate1:31551504
cloudbuttont:31379625
42190218_ostrepl:31403339
ec5jj548:31422691
cp_cls_t_966_ss:31526232
4je02754:31572277
c3h7c220:31478652
ge8j1254_inline_auto_hint_haiku:31490510
cp_cls_t_1081:31454832
conptydll_true:31498968
e9c30283:31461165
test_treatment2:31471001
c9b86496:31447327
capico_a_098a3278:31555650
ei9d7968:31496641
nes-extended-on:31455476
chat:31457767
8hig5102:31480529
89g7j272:31518289
i2gc6536:31499202
52612955:31516516
ghj88844:31499326
ddid_t:31478206
hmra_i5g22:31518061
g35_d1382936:31569111
ie3bb177:31557831
7df3h592:31512476
cp_cls_t_1082:31535311
logging_enabled_new:31498466
j0d79568:31499440
jb_cp_cls_t_632:31543129
56dj4588:31512888
32d76977:31512328
ha629193:31508444
a1ije391_t:31540920
jbcp_cls_pctr_t:31531130
61138546:31518536
cp_intellij_t_nes:31548657
gf14b233:31526830
ahp-both-windows:31556933
sessions_5:31532894
ihg5j128:31534457
f412h606:31551416
7g2b5551:31542111
sandbox-ui-on-2:31543161
enable_editor_pane_layout:31569726
allow-none:31555437
fd5dc207:31551400
ac562147:31564510
c7c27ce7:31554789
1h923230:31564177
0dg73464:31554319
treatment-23-1:31555779
unuse_dynamic_mcp:31555281
0d8dfbc3:31570291
switchtoauto:31559321
maidictation:31565333
0c1h4866:31566224
vrbsty_fls:31561059
session-archive:31558132
5b8j3302:31564601
mangle-name-treatment:31570928
permission_prompt_control:1332567
ccr_pr_nudge_control:1319470
vsc_wsm_c:1340633

```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.