voiceEnabled: true doesn't activate push-to-talk listener on session start

Resolved 💬 1 comment Opened Mar 4, 2026 by JanNafta Closed Mar 12, 2026

Bug: voiceEnabled: true in settings.json doesn't activate push-to-talk listener on session start

Version: Claude Code v2.1.66
OS: macOS Darwin 25.3.0 (Apple Silicon)

Steps to reproduce:

  1. Set "voiceEnabled": true in ~/.claude/settings.json
  2. Open a new terminal → Claude Code starts
  3. Hold Space bar → nothing happens (push-to-talk doesn't work)

Workaround:

  1. Type /voice → "Voice mode disabled" (toggles OFF)
  2. Type /voice again → "Voice mode enabled. Hold Space to record." (toggles ON)
  3. Now hold Space → works correctly

Expected behavior:

With voiceEnabled: true in settings, the push-to-talk listener should be active immediately when Claude Code starts, without needing to toggle /voice off and on.

Actual behavior:

voiceEnabled: true persists the preference but does NOT start the audio listener on session init. The /voice command acts as a toggle, so on first run it disables voice (since the setting says it's "enabled"), requiring a second /voice to actually activate it.

Analysis:

It seems like the session startup reads voiceEnabled: true and sets the internal state to "enabled", but doesn't actually initialize the push-to-talk listener (SoX recording). The /voice toggle then flips it to disabled (and tears down nothing since nothing was running), then a second /voice flips it back to enabled AND properly initializes the listener.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗