[Feature Request] Add native voice input with multilingual support and technical identifier preservation
Bug Description
Claude Code currently has no built-in voice input. Developers who want to dictate tasks — non-English native speakers, solo founders, developers with RSI, people working on the go — are forced to use external tools like Whispering, Wispr Flow, or Superwhisper and paste transcriptions into the terminal or Desktop app.
For Russian (and likely other non-Latin languages) this is especially painful:
Whisper transcribes words well but mangles technical identifiers: variable names, filenames, and paths get transliterated into Cyrillic
Russian smart quotation marks («») and em-dashes (—) break command parsing
Copy-paste workflow = constant context switch, productivity loss
Proposal
Add a native voice input mode to CLI and Desktop:
CLI: claude --voice flag or in-session hotkey
Desktop: dedicated mic button / hotkey
iOS/Android: native microphone recording
Key requirements
Automatic language detection for dictation (en/ru/mixed)
Smart identifier preservation — technical terms, filenames, variables, paths stay in Latin script regardless of dictation language. Example: "save in leads controller dot ts a function create lead" → save in leadsController.ts a function createLead
Built-in vocabulary of stack technologies (React, Postgres, Docker, Next.js…) recognized as identifiers and never transliterated
Punctuation normalization before parsing (smart quotes → straight quotes, em-dash → hyphen)
"Voice → Plan → Approve → Execute" mode: dictation flows into Plan Mode first; code executes only after user confirmation
Use cases
Solo founders dictating tasks from phone in transit, returning to a ready PR
Work in transit / hands-free coding
Non-English native speakers — significantly lowered barrier to entry
Accessibility: developers with RSI or wrist injuries
Rapid prototyping: describe a feature in 30 seconds of voice vs 5 minutes of typing
Reference
Whispering (open-source) with whisper-large-v3-turbo and the "Recommended" preset shows that Russian transcription quality is already production-ready. The task is removing friction between transcription and Claude Code.
Why this matters for Claude Code specifically
AI coding tools are the sweet spot for voice-first workflows: describing intent out loud is often faster than typing. Cursor, Windsurf, and Copilot haven't shipped a native solution. First mover here captures significant competitive advantage among international developers, accessibility users, and mobile-first workflows.
Environment Info
- Platform: linux
- Terminal: kitty
- Version: 2.1.114
- Feedback ID: 37211af4-a1cf-4375-ac35-7ac44afefaf8
Errors
[{"error":"McpToolCallError: Caught Exception. Error: Request failed: HTTPSConnectionPool(host='127.0.0.1', port=27124): Max retries exceeded with url: /search/simple/?query=%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+%D0%B1%D0%B5%D0%B7+%D0%B4%D0%B5%D0%BF%D0%BB%D0%BE%D1%8F&contextLength=200 (Caused by NewConnectionError(\"HTTPSConnection(host='127.0.0.1', port=27124): Failed to establish a new connection: [Errno 111] Connection refused\"))\n at ZX7 (/$bunfs/root/src/entrypoints/cli.js:4761:63)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-20T13:14:16.239Z"},{"error":"McpToolCallError: Caught Exception. Error: Request failed: HTTPSConnectionPool(host='127.0.0.1', port=27124): Max retries exceeded with url: /vault/KMS/Sessions/ (Caused by NewConnectionError(\"HTTPSConnection(host='127.0.0.1', port=27124): Failed to establish a new connection: [Errno 111] Connection refused\"))\n at ZX7 (/$bunfs/root/src/entrypoints/cli.js:4761:63)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-20T13:14:16.265Z"}]This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗