VS Code extension chat panel: new assistant messages not auto-announced by JAWS

Status Fixed / completed
Reported on v2.1.217
Maintainer reply ✓ Yes — bcherny
Activity 3 comments · opened Jul 22, 2026 · closed Aug 20, 2026
💡 Likely answer: A maintainer (bcherny, collaborator) responded on this thread — see the highlighted reply below.

Description

In the Claude Code VS Code extension's chat panel, new assistant messages are not automatically announced by JAWS (screen reader) as they stream in / arrive. This means a screen reader user has to manually navigate (e.g. arrow down) to discover and read new content, which significantly slows down interactive use.

Environment

  • Claude Code version: 2.1.217
  • Entry point: claude-vscode (VS Code native extension)
  • OS: Windows 11
  • Screen reader: JAWS

Expected behavior

New messages appearing in the chat webview panel should be automatically read aloud by the screen reader as they arrive, similar to how a live chat/notification region works on the web (e.g. via an aria-live polite/assertive region on the message container).

Actual behavior

Messages render visually but are not spoken automatically. The user must manually move focus/navigate to the new content to have it read.

Additional context

  • The CLI has a --ax-screen-reader flag / axScreenReader settings.json option that renders screen-reader-friendly flat text in the terminal. This is a different code path from the VS Code webview chat panel, and does not appear to address the webview's lack of an ARIA live region.
  • Requesting either: (a) an aria-live region on the chat panel's message container so JAWS/NVDA/VoiceOver announce new messages automatically, or (b) documentation pointing to an existing setting that already enables this, if one exists.

View original on GitHub ↗

3 Comments

jhomme · 2 months ago

Additional finding: Markdown headings do not render as semantic HTML headings

Follow-up after further testing with JAWS: even when the assistant's response starts with a Markdown heading (e.g. ## Claude), JAWS's virtual cursor does not announce it as a heading. This indicates the chat webview is not converting Markdown headings into real semantic HTML heading elements (<h1>–<h6>) in the DOM — the text may be styled but has no heading role for the accessibility tree to pick up.

This is a second, related accessibility gap on top of the missing ARIA live region, and both are needed to make the panel usable for screen reader users:

  1. ARIA live region on the message container — so new messages are announced automatically as they arrive (productivity: no manual navigation needed to notice new content).
  2. Semantic HTML heading rendering for Markdown headings in assistant messages — so JAWS/NVDA/VoiceOver heading-navigation (e.g. JAWS H key) can jump directly between messages for efficient review, instead of reading everything sequentially.

Requesting both be addressed together, since together they cover the two main JAWS workflows: keeping up with new output in real time, and reviewing/navigating past output efficiently.

bcherny collaborator · 1 month ago

Fixed in 2.1.236 — changelog: "[VSCode] Added screen reader support for the transcript: live announcements for replies, permission requests, errors, and status changes, plus per-turn heading navigation" (https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md). Closing — reply to reopen if it still happens on the latest version.

🤖 Generated with Claude Code

github-actions[bot] · 4 days 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.