Is screen reader mode the same set of settings as general accessibility features like magnification or high-contrast themes?
No, they're not the same set. Screen reader mode (turned on via the --ax-screen-reader flag or the corresponding setting) specifically addresses the problem that the terminal's visual display can't be read by, or freezes, a screen reader — it works by swapping the entire rendering logic to linear text output. Magnification, reduced motion, and colorblind-friendly themes each correspond to separate settings instead (CLAUDE_CODE_ACCESSIBILITY, prefersReducedMotion, theme settings), and these don't change whether the display itself is rendered visually — they just adjust the details of that visual presentation.
That means if your need is magnification or reduced motion, you don't need to, and shouldn't, turn on screen reader mode — that's designed for a completely different situation (the display itself being unfriendly to a screen reader). These are parallel, independent categories of settings, not sub-options under one single accessibility master switch.
Why specifically redesign visual effects like progress animations and in-place redraws, instead of just having the screen reader figure out how to read the terminal display on its own?
The problem is that a screen reader's fundamental operating logic is inherently at odds with how a terminal redraws dynamically. A screen reader is built around content changing in a steady, sequential order — finish reading one line, move to the next. But effects like progress animations and in-place redraws work by rapidly, repeatedly overwriting the same screen region. For a screen reader, this pattern of change is genuinely hard to interpret: which line should it read right now, is this content new or just a repeated refresh of the same thing. In practice, this is exactly what the community reported — a screen reader reading out strange characters, or freezing entirely with no response.
Rather than asking the screen reader to somehow adapt to this inherently unstable pattern of display updates on its own, changing the output method directly on the terminal side — switching to plain, linear, line-by-line text — is the more direct solution. That means the problem gets solved at the output source, instead of forcing the receiving end (the screen reader) to grind through a display format it was never designed for in the first place.
If I turn on screen reader mode and some visual feature I was used to (background session attach, say) doesn't work properly, does that mean I configured something wrong?
Not necessarily a configuration error — official documentation explicitly lists a "known limitations" section, meaning screen reader mode, while covering most core functionality (full conversations, approving tool permissions, reviewing output), doesn't map one-to-one onto every single feature the original visual interface has. Background session attach is specifically one of the items documentation mentions as not yet fully supported under this mode.
The more practical approach is to first assume a given feature might have a limitation under screen reader mode, and when you run into a problem, check the "known limitations" section in official documentation first to confirm whether it's a known, not-yet-resolved case — rather than assuming you configured something wrong and repeatedly redoing the same setting. This mode itself is also still being actively refined, and the scope of known limitations may narrow over time, but at this stage you shouldn't assume it's a fully equivalent substitute for every feature of the original visual interface.
I can see the screen myself, but a visually-impaired colleague on my team uses Claude Code — how do I help confirm this setting actually took effect for them?
The most direct way to confirm is checking the confirmation line printed at startup — once screen reader mode is on, startup prints a line clearly stating whether it was enabled via the flag, an environment variable, or the settings file (older versions instead print something like "Accessible screen reader mode: on"). This line itself is in plain text, so you can confirm it just by looking at the screen with your own eyes — you don't need to operate a screen reader yourself to tell whether the mode is actually active.
If you want to help set this up from the sidelines, a reasonable order is: first confirm whether their Claude Code version is 2.1.181 or later (you can ask them to run a version check, or just look at the version number printed at startup), then decide which enabling method fits based on how often they use it. If they work on the same machine most of the time, axScreenReader: true in the settings file is usually the least hassle — no need to add the flag every time they launch it, or worry about whether the environment variable loaded correctly.
Claude Code's original terminal interface wasn't friendly to screen reader users — boxes, progress animations, in-place redraws are visual effects a screen reader often can't parse, and can even freeze or stop responding entirely. This problem was raised explicitly in the community: NVDA users reported the terminal frequently freezing during streaming output or progress indicator updates, requiring them to repeatedly restart the screen reader or the terminal itself just to keep using it. The screen reader mode Claude Code later added was designed specifically for this problem. This piece covers exactly how to turn it on and off, and what specifically changes in behavior once it's enabled.
Once enabled, Claude Code swaps its visual terminal interface for plain, linear text output — no more boxes, progress animations, or in-place redraws; instead, labeled lines of plain text print one after another, in an order VoiceOver, NVDA, and similar screen readers can read through correctly. With this mode on, you can still hold a full conversation, approve tool-use permissions, and review output start to finish — switching interfaces doesn't mean losing functionality.
If you just want it for this one session, add the --ax-screen-reader flag after your launch command. If you want every session started from a given shell to have it on by default, set the environment variable CLAUDE_AX_SCREEN_READER to 1 (export CLAUDE_AX_SCREEN_READER=1 in Bash or Zsh, or $env:CLAUDE_AX_SCREEN_READER = "1" in PowerShell), and add that line to your shell profile so it covers every shell you open. If you want it on by default for every session on this machine, add "axScreenReader": true to your user settings file — this setting even applies inside the VS Code integrated terminal. Note that this feature requires Claude Code 2.1.181 or later; older versions return an "unknown option" error outright, so it's worth confirming your version meets the requirement first.
Tables that Claude's replies previously drew with box-drawing characters switch to a "Header: value" format read out sentence by sentence, instead of the box grid a screen reader struggles with. Claude Code leaves everything it has printed in the terminal's scrollback, so you can use your screen reader's review commands, or the terminal's own search, to go back and re-read earlier conversation content. This mode only adjusts the terminal interface itself — if you're using Claude Code through the chat panel in the VS Code extension, you don't need to turn this mode on separately. Also, under screen reader mode, the original tui setting gets ignored; apart from the background-session-attach feature mentioned under known limitations, the display is essentially rendered as scrolling text rather than fullscreen redraws.
Under screen reader mode, Claude Code deliberately pauses at two points to give a screen reader time to keep up. One is after printing a confirmation line — it waits 3 seconds before drawing the next prompt, giving the screen reader a chance to finish reading that line, and you can press any key to end the wait early. If you find the default wait too long or too short, you can adjust the duration through the environment variable CLAUDE_AX_STARTUP_QUIET_MS. This means the mode isn't just swapping the display to text — even its timing is adjusted for how fast a screen reader actually reads.
If you typically use a screen magnifier, need reduced motion, or need a colorblind-friendly theme, you don't need to turn on screen reader mode — these situations have their own corresponding settings (adjusted through CLAUDE_CODE_ACCESSIBILITY, prefersReducedMotion, or theme settings, for instance). Screen reader mode itself is designed specifically for the situation where the terminal display itself can't be effectively read aloud — it isn't a catch-all switch covering every visual accessibility need.