Voice mode activates mid-session despite voiceEnabled: false in settings.json (v2.1.110)

Resolved 💬 2 comments Opened Apr 19, 2026 by markyo58 Closed May 26, 2026

Summary

Voice mode activates spontaneously mid-session even when voiceEnabled: false and voice.enabled: false are correctly set in ~/.claude/settings.json. When it activates, it reads the previous reply (one behind), suggesting late initialisation rather than correct startup behaviour.

Environment

  • Claude Code version: 2.1.110
  • Platform: macOS (Mac GUI)
  • Settings file: ~/.claude/settings.json

settings.json (relevant excerpt)

\\\json
"voiceEnabled": false,
"voice": {
"enabled": false,
"mode": "hold"
}
\
\\

Steps to reproduce

  1. Set both voiceEnabled and voice.enabled to false in ~/.claude/settings.json
  2. Start a new Claude Code GUI session
  3. Send 2–3 messages
  4. Voice activates on approximately the 2nd or 3rd interaction — reads the previous reply aloud

Observed behaviour

  • Session starts silently (settings appear to load correctly)
  • After 2–3 user interactions, voice output begins without user action
  • Audio reads the previous reply, not the current one — consistent with mid-session initialisation
  • Restarting Claude Code clears it for that session, but it recurs

Expected behaviour

With voiceEnabled: false, voice should never activate. No audio output at any point in the session.

Additional notes

  • This is distinct from the previously reported issue where voiceEnabled: true fails to start the listener on session start (#30658, #34012, #34464)
  • The "one behind" read behaviour suggests the audio listener initialises late and immediately reads whatever was last rendered
  • Interaction count trigger appears variable (2nd or 3rd turn) — may be content-length or render-event dependent rather than a strict N-turn threshold
  • Related regressions noted from v2.1.70 onwards (#33378, #35980) — unclear if this is the same root cause or a new manifestation

Workaround

Restart Claude Code when voice activates. Does not prevent recurrence.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗