Voice mode regression: transcription broken in 2.1.81-2.1.83 (works in 2.1.80)

Status Fixed / completed
Reported on v2.1.80
Maintainer reply ✓ Yes — ashwin-ant
Activity 9 comments · opened Mar 25, 2026 · closed Apr 19, 2026
💡 Likely answer: A maintainer (ashwin-ant, collaborator) responded on this thread — see the highlighted reply below.

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?

Voice mode activates ("listening.." indicator appears, colored block cursor animates across the screen), but no transcribed text ever appears in the input field. When Space is released, the indicator disappears and the prompt is empty. No error messages are shown.

This is a regression — voice transcription works correctly on 2.1.80 but is broken on 2.1.81, 2.1.82, and 2.1.83.

Key evidence:

  • Claude Desktop app voice mode works perfectly on the same machine, same microphone, same Anthropic account — confirming the mic, audio pipeline, and server-side transcription service are all functional.
  • Rolling back to 2.1.80 via ln -sf ~/.local/share/claude/versions/2.1.80 ~/.local/bin/claude immediately restores working voice transcription in the CLI.
  • The visual behavior differs between working and broken versions: in 2.1.80 the cursor stays at the start of the input and transcribed text populates progressively. In 2.1.83 the cursor moves across the screen but no text appears.

What Should Happen?

When holding Space in voice mode, audio should be captured and transcribed text should progressively appear in the input field, as it does in 2.1.80.

Error Messages/Logs

No visible errors. CLAUDE_DEBUG=1 claude 2>/tmp/debug.log produces an empty log file for voice-related events.

Additional finding: rec (sox) reports can't set sample rate 16000; using 48000 — if the native audio path is broken and falls back to rec, the sample rate mismatch could explain why the server returns no transcription. However, this is likely a secondary issue since native audio should be used on macOS.

Steps to Reproduce

  1. Install Claude Code 2.1.83 (fresh install via curl -fsSL https://claude.ai/install.sh | bash)
  2. Run claude in Terminal.app
  3. /voice to disable, /voice to re-enable (required due to #36748)
  4. Hold Space and speak
  5. Observe: "listening.." appears, cursor animates, but no text is transcribed
  6. Release Space — input field is empty

Workaround

Roll back to 2.1.80:

ln -sf ~/.local/share/claude/versions/2.1.80 ~/.local/bin/claude

Claude Model

Claude Opus 4.6

Is this a regression?

Yes

Last Working Version

2.1.80

Claude Code Version

2.1.83

Platform

Claude.ai (OAuth)

Operating System

macOS (Darwin 25.1.0, arm64)

Terminal/Shell

Terminal.app (zsh)

Additional Information

  • Authentication: claudeAiOauth
  • sox installed via Homebrew (14.4.2_6)
  • rec sample rate warning: can't set sample rate 16000; using 48000
  • Microphone permissions confirmed for Terminal.app in System Settings > Privacy & Security > Microphone
  • No third-party voice/audio tools interfering (superwhisper quit, third-party voice-mode MCP removed)
  • Related issues: #36748 (voice not initializing on startup), #33383 (voice mode not functioning)

View original on GitHub ↗

9 Comments

github-actions[bot] · 5 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/37953
  2. https://github.com/anthropics/claude-code/issues/38577
  3. https://github.com/anthropics/claude-code/issues/37020

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

clement-izard · 5 months ago

Thanks for the workaround!

jsk3342 · 5 months ago

Root cause identified and patched — see #38690 for full analysis.

Two bugs in useVoiceKeybindingHandler:

  1. useEffect dependency array includes setState, causing hold-detection counter to reset every render
  2. stopImmediatePropagation() is a no-op in Ink's EventEmitter — space passes through to chat input

Working patch verified on v2.1.83 (macOS ARM64).

Suor · 5 months ago

Have same issue on Linux Manjaro, works in 2.1.81, but not in 2.1.83. Have some old still runnings claudes that work :)

adideutsch · 5 months ago

Confirming this issue on macOS (Darwin 24.6.0). Audio capture works (cursor animates during speech) but no text is transcribed.

  • Broken: v2.1.83
  • Working: v2.1.81 (rolling back restores voice immediately)

(This comment was posted using Claude Code via Claude CLI)

VossProject · 5 months ago

Same issue here.

WillCecil · 5 months ago

Confirming this regression also affects the Windows desktop app (not just macOS/Linux CLI).

Environment:

  • OS: Windows 11
  • App: Claude Code desktop v1.1.9310 (cb30ac), built 2026-03-27
  • Mic: confirmed working in other apps

Symptoms: Listening indicator appears and cursor animates during speech, but no text is transcribed. Input field is empty on release — identical to the CLI reports above.

Note: /voice is not a recognized command in the desktop app, so the toggle workaround from #36748 doesn't apply here. The CLI rollback workaround also doesn't apply. Desktop app users have no known workaround.

ashwin-ant collaborator · 4 months ago

This was fixed in v2.1.84 — Fixed voice push-to-talk: holding the voice key no longer leaks characters into the text input, and transcripts now insert at the correct position (regressed in v2.1.83). If you're still seeing this in the latest version, please comment with your version and repro and we'll reopen.

github-actions[bot] · 4 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.