[FEATURE] Select text in desktop app and read aloud via TTS (partial responses, code blocks, any selection)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Claude Code desktop has /voice for speech-to-text input, but there's no way to selectively hear portions of a response read back. When a response is long or verbose, I can't quickly grab one section — an explanation paragraph, a specific block — and listen to it. My only options today are to listen to the entire response via full-message TTS workarounds, manually copy a chunk into an external TTS tool, or trigger OS-level read-aloud — all of which break my flow on every turn.
The core gap: voice input exists, but granular voice output doesn't. I want to highlight any part of a response and hear just that part.
Proposed Solution
In the Claude Code desktop app:
- Select any text in a response — prose, code blocks, or mixed.
- A small TTS icon appears near the selection. Click it to read the selection aloud.
- Alternatively, a toggleable setting enables auto-read: selecting text immediately reads it without the extra click.
- Code blocks are handled intelligently — announce "code block" or skip raw syntax rather than reading literal backticks, asterisks, and symbols.
- Respect existing voice settings where they exist (speech rate, voice choice) for consistency with
/voice.
Phase 2: extend the same select-and-read flow to the Remote Control web interface, so the workflow carries over to mobile/hands-free use.
Note on why this likely needs to be first-party: the community has already built full-response read-back via Stop hooks (#64930, #45251), but hooks fire on events, not on a UI text selection. There's no hook for "user highlighted this text," so the selection-trigger mechanic can't be done as a plugin — it has to live in the app's text-selection layer.
Alternative Solutions
- Full-response TTS via Stop hooks (#64930, #45251): reads the entire reply, no way to target a selection.
- Manual copy-paste into an external TTS tool (system
say, browser TTS): works but breaks flow every turn and loses code-block handling. - OS-level read-aloud (macOS "Speak selection"): functional but generic — reads raw markdown/syntax aloud, no integration with Claude Code's voice settings.
None of these let me select a chunk inside Claude Code and hear just that chunk cleanly.
Priority
Low - Nice to have
Feature Category
Configuration and settings
Use Case Example
I'm reviewing a long response from Claude that walks through a refactor — several paragraphs of explanation interleaved with code blocks.
- I read the first part, then want to hear the third paragraph again while I look at the actual code on screen.
- I highlight just that paragraph.
- A small speaker icon appears at the end of my selection.
- I click it. Claude reads that paragraph aloud at my configured speed.
- I highlight a code block lower down. The TTS announces "code block" and skips the raw syntax instead of reading backticks and symbols.
Hands stay on the keyboard, eyes stay on the code, and I consume the explanation by ear — without listening to the whole response or copying anything out.
Additional Context
- Related full-response TTS requests: #64930, #45251, #42700. This issue is narrower and complementary — selection-scoped, not whole-message.
- Accessibility angle: selective audio output benefits users with dyslexia, low vision, or anyone doing hands-free / eyes-on-code review.
- Pairs with the existing
/voiceinput feature to close the bidirectional voice loop at a granular level. - Scope suggestion: desktop app first as MVP, Remote Control as a fast follow.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗