voiceEnabled: true in settings.json does not activate voice mode on session startup
Bug Report
Summary
When voiceEnabled: true is set in ~/.claude/settings.json, voice mode is not active on session startup. The setting appears to be read but the runtime state is not initialised from it.
---
Steps to Reproduce
- Add the following to
~/.claude/settings.json:
``json``
{
"voiceEnabled": true
}
- Start a new Claude Code session.
- Press and hold Space — spaces are typed into the input instead of voice recording activating.
- Run
/voice— the response is "Voice mode disabled" (toggling it OFF, implying the runtime believed it was ON). - Run
/voicea second time — the response is "Voice mode enabled". - Press and hold Space — voice recording now works correctly.
---
Expected Behaviour
If voiceEnabled: true is present in settings.json, voice mode should be active from the moment the session starts, with no manual toggle required.
---
Actual Behaviour
Voice mode state is not correctly initialised from the persisted setting. On startup:
- The Space key does not trigger voice recording.
- The
/voicecommand reports "Voice mode disabled" on first invocation (suggesting it readtruefrom settings but toggled it tofalseon the first/voicecall — a state inversion bug). - A second
/voicecall correctly enables it.
The toggle appears to be flipping state relative to an already-incorrect baseline, requiring two /voice commands to reach the expected initial state.
---
Environment
- OS: Windows 11
- Shell: bash (Git Bash / WSL)
- Claude Code version: latest
- Setting file location:
~/.claude/settings.json
---
Severity
Low-impact but consistently reproducible. Users who rely on voiceEnabled: true for a voice-first workflow must manually re-enable voice on every session start.
---
Suggested Fix
On session initialisation, read voiceEnabled from settings.json and set the runtime voice state directly (do not toggle from a default-false baseline). The toggle command should flip the current runtime state, not assume a default.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗