voiceEnabled: true doesn't activate push-to-talk listener on session start
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:
- Set
"voiceEnabled": truein~/.claude/settings.json - Open a new terminal → Claude Code starts
- Hold Space bar → nothing happens (push-to-talk doesn't work)
Workaround:
- Type
/voice→ "Voice mode disabled" (toggles OFF) - Type
/voiceagain → "Voice mode enabled. Hold Space to record." (toggles ON) - 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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗