[BUG] Voice mode (hold-to-talk) stops after ~3s on Linux — no key-release event ever detected

Resolved 💬 3 comments Opened Apr 18, 2026 by janbaer Closed Apr 22, 2026

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):

  1. Launch claude --debug in a Ghostty terminal (no tmux).
  2. Enable voice mode with /voice.
  3. Hold Space and count "one two three four five six seven eight nine ten" rapidly, without pauses.
  4. 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):

  1. Launch claude --debug in a Ghostty terminal (no tmux).
  2. Enable voice mode with /voice.
  3. Hold Space and count "one two three four five six seven eight nine ten" rapidly, without pauses.
  4. 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.

View original on GitHub ↗

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