Read Claude Code Aloud — Hear Your AI Agent's Plans
Select any text in your Terminal.app where Claude Code is running — a multi-step plan, a diff summary, a tool-call explanation, a post-edit report. A floating ▶ appears next to your selection. One click — natural voice plays with a highlight that tracks each word on the real terminal window.
macOS native · Free · No login · 40+ languages · Native terminal AX, no OCR
~/project $ claude
I've reviewed the three files you asked about. The retry helper in src/net/retry.ts is the canonical one — the other two in src/api/client.ts and src/jobs/worker.ts are older copies. I'll refactor both to import from retry.ts and update the tests to match. Running the type checker to confirm nothing else breaks.
Highlight follows each spoken word directly inside your Terminal.app window.
One App Covers Every AI Coding Tool on Mac
Same gesture, same word-level highlight — across every IDE and CLI developers actually use.
VS Code
Microsoft's editor
Cursor
AI-native IDE
Xcode
Apple's IDE
Windsurf
Codeium AI IDE
Claude Code
Anthropic CLI
Gemini CLI
Google AI CLI
Codex
OpenAI coding CLI
Copilot CLI
GitHub gh copilot
Aider
AI pair programmer
Three Steps — Clean AX Path
Terminal.app is a native AppKit app. CastReader reads Claude Code's output through the Accessibility API — no Screen Recording, no OCR.
Install
Download CastReader for Mac (.dmg). Grant Accessibility permission once. Terminal.app doesn't need Screen Recording — unlike Electron IDEs.
Select
Drag-select any text in Terminal.app while Claude Code is running — a plan, a diff summary, a tool-call explanation, an error message.
Click ▶
A play button appears next to your selection. One click — audio starts and the highlight glides across your actual terminal output.
When Claude Code Users Add Read-Aloud
Claude Code produces massive amounts of prose per session — plans, rationales, post-edit summaries, error explanations. Listening offloads to your ears so your eyes stay on the code.
Hear Claude's plans before confirming
Before a multi-file edit, Claude lays out a plan. Listening at 1.5× catches 'wrong assumption' or 'wrong file' mistakes you'd otherwise approve by reflex.
Listen to post-edit summaries
After each tool call, Claude summarizes what it did. Select the summary, press ▶, listen while you `git diff` in another pane.
Audio-scan long chat responses
Complex debugging Q&A often runs 10+ paragraphs. Listen instead of scrolling — stretch your back while the voice goes.
Review error explanations
When a test fails and Claude explains why, audio helps you absorb the root cause while your eyes scan the stack trace.
Study Claude's code style choices
When Claude justifies a design decision, listening on replay embeds the pattern better than reading it once.
Accessibility for all-day agent sessions
An 8-hour Claude Code session produces novels of prose. Eyes-on-code + ears-on-prose is the only sustainable pattern.
Why CastReader Fits Claude Code Better Than `say`
macOS ships the `say` command, but it reads a pasted string with no highlight and no word-level sync. CastReader reads your actual selection, in place, with highlight on the real terminal.
Word-level highlight in Terminal.app
A transparent overlay tracks each spoken word on the real terminal surface. No clone panel, no side window.
40+ natural voices, auto-detect
Chinese prompts, English Claude replies, Japanese docs — CastReader picks a native voice per selection. Kokoro-quality audio, not `say`.
Adjustable rate + click-to-jump
1.5× for long post-edit summaries, 0.8× for tricky explanations. Click any paragraph to jump playback — `say` can't do that.
Zero cost, zero signup
No account. No daily word limit. Your Anthropic bill stays the same — CastReader adds the voice, free.
Common Questions
How do I read Claude Code output aloud on a Mac?▾
Install CastReader for Mac (.dmg), grant Accessibility permission, run Claude Code in Terminal.app, then select any text — a plan, a summary, an error — and click the floating ▶. Word-level highlight appears on your real terminal.
Does Terminal.app need Screen Recording permission?▾
No. Terminal.app is a native AppKit app that exposes its text through macOS Accessibility APIs. CastReader reads it directly through AX — Accessibility permission alone is enough.
Does this work in iTerm2 / WezTerm / Warp?▾
Terminal.app has the cleanest AX path. iTerm2 works through AX but with some quirks. WezTerm uses a custom renderer without AX and is unsupported. Warp uses its own text system — partial support via the Electron OCR path.
Will it read ANSI color codes or box drawing?▾
CastReader reads the literal characters you select, but filters out ANSI escape sequences before synthesis. Box-drawing characters read as 'line' — most users select the prose sections, not the ASCII art.
Can I read Chinese Claude prompts aloud?▾
Yes. CastReader auto-detects CJK text and switches to native Mandarin, Japanese, or Korean voices. Claude's mixed-language replies switch voice at sentence boundaries.
Does it interfere with Claude Code's keyboard input?▾
No. CastReader only triggers on selection + click ▶. Your terminal input, Ctrl-C, and Claude Code's prompt handling are untouched.
What about tmux / screen sessions?▾
tmux and screen render text inside Terminal.app, so selection + read-aloud works. Copy mode in tmux can complicate the selection rectangle — press `q` to exit copy mode before selecting.
Is it really free?▾
Yes. 100% free — no account, no credit card, no premium voice gate, no daily word limit. Download the .dmg and use it forever.
Ready to Hear Claude Code Speak?
Install once. Run Claude Code in Terminal. Select any output. Click ▶. Listen.