[BUG] VS Code chat panel: VoiceOver loses focus tracking on chat transcript — jumps to top or reads entire history as one block
Preflight
- Searched existing issues; related but not duplicate: #83167, #80163
What's Wrong?
With VoiceOver active, moving focus out of the chat input field into the transcript area does not land on the message adjacent to the input as expected. Instead, VoiceOver either jumps all the way to the top of the transcript, or reads the entire conversation history — from the very start of the session — as a single undifferentiated block of text, rather than as discrete, navigable messages. This makes it impossible to review an individual reply. The only recovery is to navigate completely out of the webview and re-enter from the top, then work back down message by message. This is new, recent behavior that was not present before.
What Should Happen?
Leaving the chat input should move VoiceOver focus to the nearest/most recent message, and each message should remain an individually navigable, stable element in the accessibility tree — not collapsed into one block or reset to the top of the transcript.
Steps to Reproduce
- Enable VoiceOver on macOS.
- Open the Claude Code chat panel in VS Code and start or continue a session with several exchanges.
- Focus the chat input field (as if to type a new message).
- Move focus out of the input toward the transcript (e.g., VO+arrow navigation or Shift+Tab).
- Observe: VoiceOver either jumps to the top of the transcript, or reads the full session history as one block, instead of landing on/reading the adjacent message.
Is this a regression?
Yes, this worked in a previous version.
Last Working Version: Unknown — VS Code extensions auto-update silently and don't retain the prior version locally, so I can't pin the exact last-good build. The extension auto-updated to 2.1.232 on 2026-08-14; symptom onset lines up with roughly that timeframe.
Claude Code Version
VS Code extension anthropic.claude-code 2.1.232; CLI reports 2.1.219
Platform
Anthropic API
Operating System
macOS (26.6.1)
Terminal/Shell
N/A — this is the extension's webview chat panel, not the integrated terminal
Additional Information
I'm a blind VoiceOver user; this is a significant barrier to using the extension for real work, not a cosmetic issue.
Likely related root cause to two existing open issues on a different surface:
- #83167 — Claude Desktop/claude.ai: virtualized message list causes unstable buffer and focus jumps for JAWS users. Same failure family (message list virtualization fighting screen reader navigation), different product surface (Desktop/web vs. VS Code extension).
- #80163 — VS Code extension chat panel: new assistant messages not auto-announced by JAWS. Same surface, different symptom (missing announcement vs. focus/content collapse).
If the VS Code extension's chat panel uses similar virtualization to what #83167 describes for Desktop, that would explain both the focus-jump and the "entire history read as one block" behavior — the accessibility tree is likely losing per-message boundaries when messages are mounted/unmounted outside the visible render window.