[BUG] Voice mode (hold-to-talk) stops after ~3s on Linux — no key-release event ever detected
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Hold-to-talk voice dictation cuts off after ~3 seconds regardless of how long I keep the key held down. The transcription only captures the first 4–6 words, even when I speak continuously with no pauses.
This has been the behavior across multiple Claude Code versions, not a new regression.
Debug logs show only one handleKeyEvent per session (the initial press). No key-release event is ever logged. finishRecording fires at ~3s on its own, with no preceding key event.
What Should Happen?
Recording continues until the key is released. The final transcript contains all ten spoken numbers.
Error Messages/Logs
Logs / Debug Output (if asked):
~/.claude/debug/latest excerpt (voice-related lines only):
16:13:30.134 [voice] handleKeyEvent: idle, starting recording session immediately
16:13:30.136 [voice] audio-capture-napi loaded in 1ms
16:13:31.286 [voice_stream] WebSocket connected
16:13:32.906 [voice_stream] Sending audio chunk: 28672 bytes
16:13:33.178 [voice] finishRecording: stopping recording, transitioning to processing <-- no key event preceded this
16:13:33.178 [voice] Recording stopped
16:13:34.083 [voice_stream] TranscriptText: "Two three four five"
Note: only one handleKeyEvent is ever logged per voice session.
Steps to Reproduce
Steps to Reproduce (if asked):
- Launch
claude --debugin a Ghostty terminal (no tmux). - Enable voice mode with /voice.
- Hold Space and count "one two three four five six seven eight nine ten" rapidly, without pauses.
- Release when finished.
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.114
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Terminal.app (macOS)
Additional Information
Steps to Reproduce (if asked):
- Launch
claude --debugin a Ghostty terminal (no tmux). - Enable voice mode with /voice.
- Hold Space and count "one two three four five six seven eight nine ten" rapidly, without pauses.
- Release when finished.
Environment (if asked):
- Claude Code: 2.1.114 (also reproduced on prior versions over the past months)
- OS: NixOS, Linux 6.12.81
- Terminal: Ghostty (native, no tmux required to reproduce)
- Platform reported by logs: platform=linux
Additional context / Hypothesis (if there's a free-form field):
Claude Code does not appear to receive key-release events from the terminal on Linux. Ghostty supports the Kitty keyboard protocol (which provides explicit release events) but Claude Code either doesn't request it or doesn't use it to drive voice-mode hold detection. Instead there seems to be an internal ~3s fallback timeout.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗