Voice mode: UI renders nothing on Windows despite successful transcription and API response

Resolved 💬 2 comments Opened Mar 25, 2026 by crzyc0d3r Closed Apr 24, 2026

Bug Description

Voice mode records and transcribes audio successfully, the API receives the transcript and responds (including executing tool calls), but the terminal UI never renders any output. The screen remains blank/unchanged after releasing the Space key.

Environment

  • Claude Code version: 2.1.83
  • OS: Windows 11 Pro (10.0.26200)
  • Terminal: Windows Terminal (Git Bash shell)
  • Sox: v14.4.2 (installed via Scoop, AUDIODRIVER=waveaudio set)

Steps to Reproduce

  1. claude --debug-file voice-debug.log
  2. /voice to enable voice mode
  3. Hold Space, speak, release Space
  4. UI shows no response -- screen stays at the input prompt

Debug Log Evidence

The debug log confirms the entire pipeline works backend-side:

Recording and transcription succeed:

[voice_stream] TranscriptText: "You hear me? Are you listening to me?"
[voice] onTranscript: isFinal=true text="You hear me? Are you listening to me?"
[voice] Final transcript assembled (37 chars): "You hear me? Are you listening to me?"
[voice] Injecting transcript (37 chars)

API receives and responds:

Stream started - received first chunk

Multiple tool calls (Bash, Read) are executed across several API rounds.

But the renderer never repaints:

High write ratio: blit=0, write=37408 (100.0% writes), screen=606x120
High write ratio: blit=0, write=37421 (100.0% writes), screen=606x120
High write ratio: blit=0, write=37594 (100.0% writes), screen=611x120

blit=0 persists throughout -- the screen buffer is written to but never flushed to the terminal. Normal text input in the same session renders fine; only the voice injection path fails to trigger a UI repaint.

Expected Behavior

After releasing Space, the transcribed text should appear in the input area and Claude's response should render on screen, same as typing the text manually.

Actual Behavior

Nothing visible happens. The input prompt remains as-is. The backend fully processes the request (confirmed via debug log) but the Ink-based TUI does not repaint.

Additional Notes

  • sox -d initially failed with "no default audio device configured" until AUDIODRIVER=waveaudio was set as a user environment variable. This may or may not be related.
  • Normal (typed) interactions render correctly in the same terminal.

View original on GitHub ↗

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