DEV Community

just_an_electron
just_an_electron

Posted on

Voice mode in Claude Code (VS Code, macOS)

Claude Code has a built-in voice mode: hold space, talk, it transcribes into your prompt. Here's how to get it running in the VS Code integrated terminal on macOS — including the one step that breaks it for everyone.

1. Install the backend

Voice mode records via sox. No sox, no audio.

brew install sox
sox --version   # sanity check
Enter fullscreen mode Exit fullscreen mode

2. Turn it on

In the Claude Code prompt:

/voice
Enter fullscreen mode Exit fullscreen mode

Hold space to record, release to stop.

3. Grant the mic — to VS Code, not the terminal

Claude Code runs inside VS Code, so macOS attributes the mic request to Visual Studio Code.

Open System Settings → Privacy & Security → Microphone. If VS Code isn't listed, it never requested access yet — and there's no "+" to add it manually. Force the prompt:

  1. ⌘Q to fully quit VS Code (closing the window keeps the process alive — not enough).
  2. Reopen it.
  3. Trigger a recording. macOS pops "Visual Studio Code would like to access the microphone"Allow.

macOS only re-reads mic permissions at app launch. A VS Code instance that was already running when you flipped the toggle keeps getting fed silence until you restart it.

4. Verify you're capturing real audio

The nasty failure: recording "works" but is pure silence (permission denied → all zeros).

rec -q /tmp/mictest.wav trim 0 2          # records 2s — say something
sox /tmp/mictest.wav -n stat 2>&1 | grep "Maximum amplitude"
Enter fullscreen mode Exit fullscreen mode
  • 0.000000 → still silent. Recheck the toggle, restart VS Code.
  • non-zero (e.g. 0.17) → working. RMS around 0.01 is a normal talking level.

Gotchas

Symptom Fix
"No audio detected" brew install sox + grant mic permission
Amplitude 0.000000 Enable VS Code in Microphone settings, then ⌘Q + reopen

Toggle off with /voice. Change dictation language with /config.

Top comments (1)

Collapse
 
xulingfeng profile image
xulingfeng

The VS Code mic permission thing got me too 😅 restarted the terminal like 5 times before realizing you gotta ⌘Q the whole thing. That amplitude check — been there with silent recordings too. Tried Whisper locally instead of sox? Wonder if latency is better.