Appendix Episode 30 12-15 min

VS Code Accessibility Reference

Complete accessibility settings, audio signals, diff viewer, and screen reader configs.

Listen

Transcript

Alex: Welcome back. This episode is a companion reference for VS Code accessibility. The main chapters help you get comfortable; this one is the place you come back to when you need the exact setting, shortcut, or screen reader behavior.

Jamie: So the goal is not to memorize every setting path. It is to know where to look when VS Code starts feeling noisy, quiet, confusing, or hard to navigate.

Alex: Exactly. The appendix supports the VS Code interface and accessibility chapters, and it points back to the official VS Code accessibility documentation as the source of truth. VS Code changes over time, so if a setting name shifts, the current docs and the Settings UI are the final check.

Jamie: And because this is a long reference, there are some practical ways to use it. Go to Line with Ctrl+G, Go to Symbol with Ctrl+Shift+O, jump between tables with T in browse mode, and use larger zoom or a high contrast theme before scanning dense tables. If your setup has the bookmark command on Ctrl+K Ctrl+K, bookmark the file so you can return quickly.

Alex: Most accessibility settings are available in two places: the Settings UI with Ctrl+comma, or settings.json through the Command Palette with Ctrl+Shift+P, then Open User Settings JSON. The Settings UI is safer for browsing. settings.json is faster when you already know the exact setting path.

Jamie: The one I hear about most is `editor.accessibilitySupport`. What does it actually control?

Alex: That setting tells VS Code whether to use screen reader optimizations. `auto` tries to detect NVDA, JAWS, or VoiceOver. `on` forces those optimizations, and `off` disables them. When it is active, VS Code may show a Screen Reader Optimized indicator in the status area and adjust how editor content is exposed to assistive technology.

Jamie: What changes when screen reader mode is active? Is it only an announcement label?

Alex: It is more than a label. VS Code changes how it presents editor text, paging, hover content, suggestions, and some complex views. `editor.accessibilityPageSize` controls how many lines Page Up and Page Down read in screen reader mode. Hover content is still available, but the reliable way to read it is Accessible View with Alt+F2.

Jamie: That helps. And there are settings that are mostly visual, right?

Alex: Yes. Bracket guides, indentation guides, occurrence highlights, and the minimap can be useful visually, but they are not usually helpful through speech. Many screen reader users turn `editor.minimap.enabled` off, set `editor.renderWhitespace` to `none`, and set `editor.wordWrap` to `on`. Some people also set `workbench.editor.enablePreview` to `false` so each file opens in a real tab instead of replacing the preview tab.

Jamie: What about diffs, terminals, and notifications? Those are the places where I lose track fastest.

Alex: For diffs, `diffEditor.diffAlgorithm` set to `advanced` usually creates cleaner change groups, `diffEditor.ignoreTrimWhitespace` set to `true` cuts down noise, and `diffEditor.renderSideBySide` set to `false` gives an inline diff that is easier to read with speech. For the terminal, `terminal.integrated.screenReaderMode` can be `auto` or `on`, `terminal.integrated.enableBell` can add useful sound feedback, and Accessible View can read terminal output. For announcements, the `accessibility.verbosity` settings control how much VS Code says about comments, the diff editor, the editor, hovers, inline chat, inline completions, notebooks, panel chat, settings, keybindings, and the terminal.

Jamie: Audio cues are one of those features people either love immediately or turn off after five minutes. What is the balanced way to approach them?

Alex: Start by opening Settings with Ctrl+comma and searching for audio cue, or edit the same values in settings.json. Most cue settings accept `auto`, `on`, or `off`. `auto` means play the sound only when screen reader mode is active, `on` means always play it, and `off` means never play it.

Jamie: And each sound has a meaning, not just a decorative beep.

Alex: Right. There are signals for clearing the terminal or output, sending a Copilot Chat request, waiting for a chat response, and receiving that response. There are debugger signals for breakpoints, diff signals for deleted, inserted, and modified lines, and editor signals for formatting, errors, warnings, folded code, inline suggestions, and lines that have breakpoints. A low-value signal such as no inlay hints is often left off.

Jamie: Where do text announcements fit in? Are those separate from sound?

Alex: They are related but not identical. Audio cues are non-verbal sounds, while accessibility announcements are text-based status updates that your screen reader can speak. Verbosity settings decide which parts of VS Code talk more, and signal priority helps you keep urgent items like errors more noticeable than routine items. If a message arrives at the wrong time or repeats too much, adjust the related verbosity before you redesign the whole setup.

Jamie: Can people customize the actual sounds?

Alex: Where your VS Code version supports custom signal sounds, use short, clear files in a common audio format and keep them in a stable folder. Avoid long music clips, quiet files, and sounds that are hard to tell apart. The test is simple: when you hear it during real work, you should know immediately whether it means error, warning, diff change, chat response, or terminal event.

Jamie: Diffs are where accessibility settings become very real. Reviewing a pull request is hard if you cannot tell what changed.

Alex: The Accessible Diff Viewer is for exactly that moment. Use it when a visual side-by-side diff is too much, when a pull request has many changes, when whitespace is getting in the way, or when you need a keyboard-friendly way to review code changes.

Jamie: I always hear the word hunk in diff tools. What is a hunk?

Alex: A hunk is a block of related changes. In an accessible diff, you usually get the file, then each hunk, then the lines inside that hunk. Lines are marked by prefix: a plus sign for an inserted line, a minus sign for a deleted line, and an unchanged context line so you know where the change lives.

Jamie: How do you open it without hunting around visually?

Alex: Start from a changed file in Source Control or an open diff. Use the Command Palette to search for accessible diff, and in diff workflows use F7 and Shift+F7 to move between differences when those keybindings are available. If a merge conflict is involved, the accessible diff path is usually clearer than relying on visual conflict decorations alone.

Jamie: The appendix recommends inline view for screen readers. Why is side-by-side harder?

Alex: Side-by-side diff is designed for visual comparison: old file on one side, new file on the other. Speech has to jump between panes, and it is easy to forget which side you are on. Inline view keeps the old and new lines in one flow, so `diffEditor.renderSideBySide` set to `false` is often the better default.

Jamie: Does navigation change by screen reader?

Alex: A little. NVDA and JAWS users often move between focus mode and browse-style reading depending on where focus lands. VoiceOver users may need to interact with groups before moving inside the diff content. In all three cases, listen for hunk boundaries, line prefixes, and context lines; those are the clues that make the change understandable.

Jamie: Let us talk about screen reader-specific setup. People often ask, should I configure VS Code, or should I configure my screen reader?

Alex: Usually both, but lightly. For NVDA, keep it current, make sure focus mode is working well in edit fields, and choose punctuation and indentation feedback that helps you read code. There is no magic add-on required for everyone, but if your organization recommends a current VS Code-related NVDA add-on, install it from a trusted source and test it with your normal files.

Jamie: And the commands to lean on are mostly VS Code commands, not secret screen reader commands.

Alex: Yes. Use Ctrl+Shift+O for symbols, Ctrl+G for a line number, Alt+F2 for Accessible View, Ctrl+Shift+M for Problems, and the Command Palette when you forget a shortcut. NVDA commands still matter for switching interaction modes and reviewing speech, but the most portable workflow comes from VS Code itself.

Jamie: How does JAWS fit into that?

Alex: With JAWS, keep the version current, check that application or forms interaction behaves correctly in the editor, and tune typing echo and verbosity so code is readable but not overwhelming. Some workplaces use JAWS scripts for VS Code; if you do, confirm that the scripts match your VS Code version. JAWS commands can help with virtual cursor behavior, but again, VS Code commands like Go to Symbol, Problems, Source Control, and Accessible View are the core path.

Jamie: And VoiceOver on macOS has its own rhythm.

Alex: It does. In VoiceOver Utility, set keyboard and verbosity options so code editing is responsive, then practice interacting with VS Code groups using Control+Option+Shift+Down Arrow and backing out with Control+Option+Shift+Up Arrow. The rotor can help you inspect structure, and Quick Nav can be useful for reading, but you may need to turn Quick Nav off when VS Code needs arrow-key chords or editor navigation.

Jamie: I want the keyboard map. Not every shortcut in the universe, but the ones that keep work moving.

Alex: Start with global navigation. Ctrl+Shift+P opens the Command Palette, Ctrl+P opens a file by name, Ctrl+Tab moves through open editors, Ctrl+comma opens Settings, and Ctrl+K Ctrl+S opens Keyboard Shortcuts. The main areas are Ctrl+Shift+E for Explorer, Ctrl+Shift+F for Search, Ctrl+Shift+G for Source Control, Ctrl+Shift+D for Run and Debug, Ctrl+Shift+X for Extensions, and Ctrl+backtick for the terminal.

Jamie: What about inside the editor?

Alex: Use Ctrl+N, Ctrl+O, Ctrl+S, and Ctrl+W for new, open, save, and close. Ctrl+G goes to a line, Ctrl+Shift+O goes to a symbol, F12 goes to definition, and Alt+Left or Alt+Right moves through navigation history. Ctrl+F and Ctrl+H handle find and replace, Ctrl+slash toggles a comment, Alt+Up or Alt+Down moves a line, Shift+Alt+Down copies a line, Ctrl+Space opens suggestions, and Ctrl+period opens quick fixes.

Jamie: Multi-cursor editing scares people because it can change several places at once.

Alex: That is fair. Treat it as optional until you are comfortable. Ctrl+D selects the next match, Ctrl+U backs out of the last cursor action, and Escape cancels the multi-cursor state. Some systems use Ctrl+Alt+Up or Down to add cursors above or below, but that can conflict with operating system or screen reader shortcuts, so check Keyboard Shortcuts before relying on it.

Jamie: And the Git, terminal, Copilot, Problems, diff, and Markdown pieces?

Alex: For terminal work, Ctrl+backtick toggles the terminal and Ctrl+Shift+backtick creates a new one. In Source Control, Ctrl+Shift+G takes you to changes, Enter opens a selected file diff, and Ctrl+Enter from the commit message can commit when your setup allows it. Problems is Ctrl+Shift+M, F8 moves to the next problem, Shift+F8 moves to the previous one, Markdown preview is Ctrl+Shift+V or Ctrl+K V to open beside, and Copilot shortcuts such as inline chat and chat view should be verified in Keyboard Shortcuts because extensions and versions can change them. For accessibility features, remember Alt+F2 for Accessible View and F7 or Shift+F7 for diff movement when those bindings are active.

Jamie: Low vision settings deserve their own attention too. Sometimes the issue is not speech; it is size, contrast, and visual clutter.

Alex: Absolutely. Use Ctrl+K Ctrl+T to choose a theme, including high contrast themes, and use Ctrl+equals to zoom in, Ctrl+minus to zoom out, and Ctrl+0 to reset zoom. You can also set editor font size, terminal font size, and window zoom level directly in Settings.

Jamie: Are there tradeoffs when you zoom or change contrast?

Alex: Yes. Larger zoom can make long lines wrap differently, which is why word wrap should be tested in normal files, diffs, and the terminal. The minimap can help some low vision users orient visually, while others turn it off to reduce clutter. Breadcrumbs and the outline can also help you understand where you are in a large file.

Jamie: The appendix includes settings.json profiles. I like that because people have different tolerance levels for feedback.

Alex: A minimal screen reader profile might force `editor.accessibilitySupport` on, enable word wrap, disable the minimap, hide rendered whitespace, use inline diffs, and keep announcements limited. That works well for people who prefer to call Accessible View manually. A maximum feedback profile turns on more signals, leaves verbosity high, enables the terminal bell, and makes screen reader support explicit in the terminal.

Jamie: Then there are profiles for specific kinds of work.

Alex: For Copilot-heavy work, prioritize chat announcements, inline completion announcements, and sounds for chat request sent, response pending, response received, and inline suggestions. For Git and pull request review, prioritize inserted, deleted, and modified diff line signals, the advanced diff algorithm, inline diff view, and whitespace filtering. For slower machines or large repositories, reduce visual extras, keep the minimap off, limit lower-value signals, and avoid settings that create constant background work.

Jamie: And there is a balanced quick-copy setup for people who just want a reasonable starting point.

Alex: Yes. Use that as a starting profile, not a permanent identity. Paste it into settings.json only after you understand what it changes, then adjust one or two settings at a time so you can tell what improved or got worse.

Jamie: VS Code 1.120 also added or refined some chat, agents window, and Markdown diff behavior. What should listeners take from that?

Alex: The important part is that chat and agent workflows are becoming more keyboard and screen reader aware, but they still need settings support. Keep verbosity on for inline chat, panel chat, and inline completions if you use Copilot. For Markdown diffs, use the same accessible diff habits: inline view, clear line prefixes, and Accessible View when the rendered experience is not enough.

Jamie: Troubleshooting is where this reference probably gets used most. Let us start with the scary one: VS Code is not acting like it knows a screen reader is running.

Alex: Set `editor.accessibilitySupport` to `on` and `terminal.integrated.screenReaderMode` to `on`, then restart VS Code if needed. Also make sure your screen reader is running before VS Code starts. If the status indicator still does not appear, check the official VS Code accessibility docs for the current detection behavior.

Jamie: What if the opposite happens and VS Code will not stop talking?

Alex: Reduce the `accessibility.verbosity` settings for the areas causing noise, such as chat, hover, terminal, or inline completions. Set lower-priority signals to `auto` or `off`, especially repeated pending sounds. If you need a quiet baseline, start from the minimal profile and add feedback back slowly.

Jamie: And if there is not enough feedback?

Alex: Turn on signals for errors, warnings, inline suggestions, diff lines, terminal clear events, and chat completion. Use Ctrl+Shift+M to open Problems, then F8 and Shift+F8 to move through issues. If hover text or terminal output is being missed, open Accessible View with Alt+F2.

Jamie: Diffs can still feel confusing even after settings are changed.

Alex: Then switch to inline view, keep whitespace changes filtered unless you are reviewing whitespace on purpose, use the advanced diff algorithm, and open the Accessible Diff Viewer. Listen for the file name, hunk boundary, plus or minus prefix, and context line. If you can describe the changed block in one sentence, you are oriented enough to keep reviewing.

Jamie: Last one: terminal output or shortcuts are not behaving.

Alex: For terminal output, use Accessible View, keep the setting that returns focus to the terminal after closing Accessible View, and enable the terminal bell if sound helps. For shortcut conflicts, open Keyboard Shortcuts with Ctrl+K Ctrl+S, search the command name, and change one binding at a time. Do not reset everything unless you have to.

Jamie: So the appendix is less of a reading assignment and more of a workbench reference.

Alex: Exactly. Keep it nearby, choose the amount of feedback that fits your brain and your tools, and test settings in real tasks: opening files, editing code, reading a diff, using the terminal, and reviewing chat output. A good VS Code setup is the one that lets you return to the work without fighting the interface.

Workshop Content

Full chapter content from the Git Going with GitHub workshop guide.

Companion Podcast and Transcript

Use audio and transcript companions to review concepts in a conversational format.

VS Code Accessibility Reference

Companion audio: this episode reinforces key ideas and may not be a word-for-word reading of this page.

Transcript preview

Alex: Welcome back. This episode is a companion reference for VS Code accessibility. The main chapters help you get comfortable; this one is the place you come back to when you need the exact setting, shortcut, or screen reader behavior.

Jamie: So the goal is not to memorize every setting path. It is to know where to look when VS Code starts feeling noisy, quiet, confusing, or hard to navigate.

Alex: Exactly. The appendix supports the VS Code interface and accessibility chapters, and it points back to the official VS Code accessibility documentation as the source of truth. VS Code changes over time, so if a setting name shifts, the current docs and the Settings UI are the final check.

Jamie: And because this is a long reference, there are some practical ways to use it. Go to Line with Ctrl+G, Go to Symbol with Ctrl+Shift+O, jump between tables with T in browse mode, and use larger zoom or a high contrast theme before scanning dense tables. If your setup has the bookmark command on Ctrl+K Ctrl+K, bookmark the file so you can return quickly.

Appendix G: VS Code Accessibility Reference

Listen to Episode 30: VS Code Accessibility Reference - a conversational audio overview of this chapter. Listen before reading to preview the concepts, or after to reinforce what you learned.

Reference companion to: Chapter 11: VS Code Interface | Also relevant: Chapter 12

Authoritative source: VS Code Docs: Accessibility

Complete Technical Reference for Screen Reader Users

Purpose: This appendix provides comprehensive technical documentation for all VS Code accessibility features, settings, and keyboard shortcuts. The main chapters cover essentials; this appendix is your complete reference manual.

Referenced by: VS Code Setup & Accessibility Basics, GitHub Copilot

Learning Cards: VS Code Accessibility Reference Overview

Screen reader users
  • This appendix is your lookup manual -- use Ctrl+G (Go to Line) or Ctrl+Shift+O (Go to Symbol) to jump directly to a setting name
  • Every table is structured with headers; use T in browse mode to jump between tables, then arrow through rows
  • Bookmark this file in VS Code (Ctrl+K Ctrl+K) so you can return instantly when you need a setting path
Low vision users
  • Increase editor font size (Ctrl+=) before scanning the long settings tables -- column values are easier to compare at larger sizes
  • Use the Minimap (if sighted enough) or breadcrumbs bar to orient within this large reference file
  • High-contrast themes make the table grid lines and code spans easier to distinguish from body text
Sighted users
  • The Table of Contents links jump directly to each section -- click any link to scroll there instantly
  • Use Ctrl+Shift+O to open the outline view and see all 7 sections as a navigable list
  • The settings tables use consistent columns (Setting Path, Values, Default, Description) -- scan the Default column to see what changes from your current setup

Table of Contents

  1. Complete Accessibility Settings Reference
  2. Audio Cues - All Options
  3. Accessible Diff Viewer - Complete Guide
  4. Screen Reader-Specific Configurations
  5. Complete Keyboard Shortcuts
  6. Accessibility Signals Types and Customization
  7. Settings.json Configuration Examples
  8. VS Code 1.120 Chat, Agents Window, and Markdown Diff Updates

1. Complete Accessibility Settings Reference

All settings can be accessed via Settings UI (Ctrl+,) or by editing settings.json directly (Ctrl+Shift+P → "Open User Settings JSON").

Core Accessibility Settings

Setting Path Values Default Description
editor.accessibilitySupport auto, on, off auto Enables screen reader optimizations. auto detects NVDA/JAWS/VoiceOver. Set to on to force.
editor.accessibilityPageSize number (lines) 10 Number of lines to read when using Page Up/Down in screen reader mode
editor.guides.bracketPairs boolean false Shows bracket pair guides. Disable for screen readers (visual only).
editor.guides.bracketPairsHorizontal boolean false Shows horizontal bracket guides. Disable for screen readers.
editor.guides.highlightActiveBracketPair boolean true Highlights matching brackets. Not announced by screen readers.
editor.guides.highlightActiveIndentation boolean true Highlights active indentation. Visual only.
editor.guides.indentation boolean true Shows indentation guides. Not useful for screen readers.
editor.hover.enabled boolean true Enables hover popups. Use Alt+F2 (Accessible View) to read hover content.
editor.minimap.enabled boolean true Shows visual minimap. Recommended: Set to false for screen readers.
editor.occurrencesHighlight boolean true Highlights occurrences of selected text. Visual only.
editor.renderWhitespace none, boundary, selection, trailing, all selection Shows whitespace characters. Recommended: none for screen readers.
editor.wordWrap off, on, wordWrapColumn, bounded off Wraps long lines. Recommended: on for screen readers.
workbench.editor.enablePreview boolean true Opens files in preview mode (single tab). Set to false to always open in new tab.

Diff and Merge Settings

Setting Path Values Default Description
diffEditor.codeLens boolean false Shows CodeLens in diff view. Visual only.
diffEditor.diffAlgorithm legacy, advanced advanced Diff calculation method. advanced produces better hunks for screen readers.
diffEditor.ignoreTrimWhitespace boolean true Ignores whitespace changes in diffs. Recommended: true to reduce noise.
diffEditor.renderSideBySide boolean true Shows diffs side-by-side. Set to false for inline view (easier for screen readers).
diffEditor.wordWrap off, on, inherit inherit Word wrap in diff view. on recommended for long lines.
merge-conflict.decorators.enabled boolean true Shows merge conflict decorators. Use Accessible Diff instead (F7).

Terminal Settings

Setting Path Values Default Description
terminal.integrated.accessibleViewFocusesTerminal boolean true Returns focus to terminal after closing Accessible View.
terminal.integrated.accessibleViewPreserveCursorPosition boolean false Preserves cursor position when opening Accessible View.
terminal.integrated.enableBell boolean false Enables terminal bell sound. Recommended: true for audio feedback.
terminal.integrated.screenReaderMode auto, on, off auto Optimizes terminal for screen readers.

Notification Settings

Setting Path Values Default Description
accessibility.verbosity.comments boolean true Announces comment threads in code.
accessibility.verbosity.diff-editor boolean true Announces diff editor context.
accessibility.verbosity.editor boolean true Announces editor operations.
accessibility.verbosity.hover boolean true Announces hover content. Use Alt+F2 for full reading.
accessibility.verbosity.inline-chat boolean true Announces inline chat responses.
accessibility.verbosity.inline-completions boolean true Announces Copilot suggestions.
accessibility.verbosity.keybindings-editor boolean true Announces keybindings editor context.
accessibility.verbosity.notebook boolean true Announces notebook cell operations.
accessibility.verbosity.panel-chat boolean true Announces Copilot Chat panel responses.
accessibility.verbosity.settings-editor boolean true Announces settings editor context.
accessibility.verbosity.terminal boolean true Announces terminal operations.

2. Audio Cues - All Options

Audio cues provide non-verbal feedback through sound. Each cue can be configured independently.

Accessing Audio Cue Settings

Settings UI: Ctrl+, → search "audio cue"

Settings.json: Edit directly (see Section 7)

Audio Cue Values

Value Behavior
auto Play sound in screen reader mode only
on Always play sound
off Never play sound

Complete Accessibility Signals List

Setting When It Plays Recommended
accessibility.signals.clear When clearing the terminal or output on
accessibility.signals.chatRequestSent When sending a Copilot Chat prompt on
accessibility.signals.chatResponsePending While Copilot is generating a response auto
accessibility.signals.chatResponseReceived When Copilot finishes responding on
accessibility.signals.debugBreakpoint When hitting a breakpoint in debugger on
accessibility.signals.diffLineDeleted When navigating over a deleted line in diff on
accessibility.signals.diffLineInserted When navigating over an added line in diff on
accessibility.signals.diffLineModified When navigating over a modified line in diff on
accessibility.signals.format When auto-formatting completes auto
accessibility.signals.lineHasBreakpoint When cursor is on a line with a breakpoint auto
accessibility.signals.lineHasError When cursor is on a line with an error on
accessibility.signals.lineHasFoldedArea When cursor is on a line with collapsed code auto
accessibility.signals.lineHasInlineSuggestion When an inline suggestion appears on
accessibility.signals.lineHasWarning When cursor is on a line with a warning auto
accessibility.signals.noInlayHints When inlay hints are not available off
accessibility.signals.notebookCellCompleted When a notebook cell finishes executing on
accessibility.signals.notebookCellFailed When a notebook cell fails on
accessibility.signals.onDebugBreak When debugger pauses execution on
accessibility.signals.save When saving a file auto
accessibility.signals.taskCompleted When a terminal task completes successfully on
accessibility.signals.taskFailed When a terminal task fails on
accessibility.signals.terminalBell When terminal bell rings on
accessibility.signals.terminalCommandFailed When a terminal command exits with error on
accessibility.signals.terminalQuickFix When a terminal quick fix is available auto
accessibility.signals.voiceRecordingStarted When voice input begins on
accessibility.signals.voiceRecordingStopped When voice input ends on
accessibility.signals.volume Volume level (0-100) 70

Customizing Signal Sounds

Advanced feature: You can replace default sounds with custom audio files.

  1. Ctrl+Shift+P → "Preferences: Open User Settings (JSON)"
  2. Add custom sound paths:
{
  "accessibility.signals.lineHasError.sound": "file:///C:/Users/YourName/sounds/error.wav",
  "accessibility.signals.taskCompleted.sound": "file:///C:/Users/YourName/sounds/success.wav",
  "accessibility.signals.diffLineInserted.sound": "file:///C:/Users/YourName/sounds/added.wav"
}

Sound file requirements

  • Format: WAV, MP3, or OGG
  • Duration: Keep under 2 seconds
  • Volume: Normalize to avoid clipping

3. Accessible Diff Viewer - Complete Guide

The Accessible Diff Viewer presents file diffs as a structured, line-by-line list instead of a visual side-by-side view.

When to Use Accessible Diff Viewer

  • Reviewing pull request changes
  • Resolving merge conflicts
  • Comparing file versions (Timeline view)
  • Reviewing Copilot-generated edits
  • Any time you need to understand what changed in a file

Opening Accessible Diff Viewer

Method Steps
Keyboard (in diff editor) Press F7 to jump to first hunk, Alt+F2 to open Accessible View
Command Palette Ctrl+Shift+P → "Open Accessible Diff Viewer"
Automatic Some contexts open it automatically in screen reader mode

Diff Viewer Structure

Top-level structure

Description

The Accessible Diff Viewer starts with a header showing the file path and change summary. It then shows each hunk (changed section) in order. Each hunk contains: the hunk location (line range), unchanged context lines, the modified, added, or removed lines with their prefix, and more context lines. After all hunks, a footer shows the totals for additions and deletions.

Line prefixes

Prefix Meaning Screen Reader Announcement
(no prefix) Unchanged line (context) "Unchanged: [line content]"
+ Added line "Added: [line content]" or "Line added: [content]"
- Removed line "Removed: [line content]" or "Line removed: [content]"
|~ Modified line (original) "Modified from: [old content]"
|+ Modified line (new version) "Modified to: [new content]"
Action Keyboard
Jump to next hunk F7
Jump to previous hunk Shift+F7
Jump to next change F8 (in some contexts)
Jump to previous change Shift+F8

Screen Reader-Specific Navigation

NVDA/JAWS

  1. Open diff: Enter on file in Source Control, or F7 in an open diff
  2. Alt+F2 to open Accessible Diff Viewer
  3. Navigate with Up/Down Arrow (line by line)
  4. Use H key to jump between hunks (each hunk has a heading)
  5. Escape to close and return to editor

VoiceOver

  1. VO+Arrow to navigate to diff file → VO+Space to open
  2. Option+F2 for Accessible Diff Viewer
  3. VO+Arrow keys to navigate lines
  4. VO+Command+H to jump between hunk headings
  5. Escape to close

Understanding Context Lines

The diff shows 3 unchanged lines before and after each change for context. These are announced as "Unchanged: [content]".

Example

Hunk 1 of 3 - lines 42-48

  Unchanged: ## Screen Reader Setup
  Unchanged:
- Removed: This guide covers NVDA only.
+ Added: This guide covers NVDA, JAWS, and VoiceOver.
  Unchanged:
  Unchanged: ### Installing NVDA

The unchanged lines help you understand where in the file the change occurred.

Inline Diff View vs Side-by-Side

  • All changes in a single editor
  • Removed lines followed by added lines
  • Easier to navigate with screen reader reading commands

Side-by-side view (default, visual)

  • Left panel: original file
  • Right panel: modified file
  • Requires navigating between panels

To switch to inline view

  1. Open Settings: Ctrl+,
  2. Search: "diffEditor.renderSideBySide"
  3. Uncheck the box (or set to false in settings.json)

Learning Cards: Accessible Diff Viewer

Screen reader users
  • Press F7 in any diff editor to jump to the first changed hunk -- then F7 / Shift+F7 to move between hunks
  • Use Alt+F2 (Accessible View) to read the full diff in a structured, non-streaming pane with proper line prefixes
  • Switch to inline diff view (diffEditor.renderSideBySide: false) so all changes appear in one editor instead of two panels
Low vision users
  • Inline diff view places removed and added lines back-to-back with color-coded backgrounds -- increase font size for easier scanning
  • Enable accessibility.signals.diffLineInserted and diffLineDeleted for audio feedback as you arrow through changed lines
  • Zoom the diff editor independently with Ctrl+= if the surrounding UI is already at a comfortable size
Sighted users
  • Green-highlighted lines are additions; red-highlighted lines are deletions -- look for the + and - gutters on the left
  • Use the minimap sidebar to spot clusters of changes in a long diff without scrolling
  • Click the hunk arrows in the gutter to jump directly to the next block of changes

4. Screen Reader-Specific Configurations

NVDA Configuration for VS Code

  1. Browse Mode settings:

    • NVDA Menu → Preferences → Settings → Browse Mode
    • "Maximum length of text on a single line": 10000
    • "Automatic focus mode for focus changes": Checked
    • "Automatic focus mode for caret movement": Unchecked
  2. Object Presentation:

    • "Report tooltips": Unchecked (reduces interruptions; use Alt+F2 instead)
    • "Report notifications": Checked
    • "Report object descriptions": Checked
  3. Speech settings:

    • "Punctuation/symbol level": Some or Most (for code reading)
    • "Automatic language switching": Checked (useful for multilingual docs)
  4. Input Composition:

    • "Announce candidates during IME text composition": Checked

NVDA add-ons for VS Code

  • Focus Highlight - shows focus location visually (helpful for sighted trainers)
  • IndentNav - navigate by indentation level (useful for Python, YAML)

VS Code-specific NVDA commands

Action NVDA Command
Read from cursor Insert+Down Arrow
Read all Insert+Down Arrow (twice)
Stop speech Control
Say all in focus mode NVDA+Shift+Down Arrow
Move to containing browse mode document NVDA+Control+Space

JAWS Configuration for VS Code

  1. Settings Center → HTML/PDF/Accessibility:

    • "Auto Forms Mode": Checked
    • "ARIA Live Region Verbosity": Polite or Assertive (depending on preference)
    • "Report tooltip text": Unchecked (use Alt+F2 instead)
  2. Settings Center → Reading:

    • "Punctuation Level": Most (for code)
    • "Speak Long Lines Continuously": Yes
  3. Settings Center → Text Processing:

    • "Blank Line Announcement": Tone (less verbose than speech)

JAWS scripts for VS Code

Custom JAWS scripts exist for VS Code. Check: jaws-vscode-scripts (GitHub) for community-maintained scripts.

VS Code-specific JAWS commands

Action JAWS Command
Say current line Insert+Up Arrow
Read from cursor Insert+Page Down
Read to end Insert+Page Down (twice)
Toggle virtual cursor Insert+Z
List links Insert+F7
List headings Insert+F6

VoiceOver Configuration for VS Code (macOS)

  1. Verbosity → Text:

    • "Punctuation": All (for code and Markdown)
    • "Capitalization": Speak cap (useful for acronyms and code)
    • "Reading Units": Set to sentenceboundary for prose, word for code
  2. Verbosity → Announcements:

    • "Content Changes": On (for live regions like Copilot Chat)
    • "Status Messages": On
  3. Navigation:

    • "Quick Nav": OFF when inside editor (use Left+Right Arrow to toggle)
    • "Auto-interact with elements": Off (manual control preferred)
  4. Sound:

    • "Enable positional audio": On (helps orient focus location)
    • "Mute sound effects": Off (audio cues are helpful)

VS Code-specific VoiceOver commands

Action VoiceOver Command
Read from cursor VO+A
Read all VO+Shift+Down Arrow (in text area)
Stop reading Control
Interact with element VO+Shift+Down Arrow
Stop interacting VO+Shift+Up Arrow
Jump to heading VO+Command+H
Open rotor VO+U
Navigate rotor Left/Right Arrow, then Up/Down Arrow

Quick Nav navigation (when enabled)

Command Action
H Next heading
Shift+H Previous heading
L Next link
T Next table
B Next button
F Next form control

Note: Quick Nav should be OFF when editing text (conflicts with text navigation).

5. Complete Keyboard Shortcuts

For screen reader navigation shortcuts when using GitHub in a browser (NVDA, JAWS, VoiceOver), see Appendix B - Screen Reader Cheat Sheet.

Action Windows/Linux macOS
Command Palette Ctrl+Shift+P Cmd+Shift+P
Quick Open (Go to File) Ctrl+P Cmd+P
Settings Ctrl+, Cmd+,
Keyboard Shortcuts Ctrl+K Ctrl+S Cmd+K Cmd+S
Toggle Sidebar Ctrl+B Cmd+B
Toggle Panel (terminal/output) Ctrl+J Cmd+J
Toggle Full Screen F11 Ctrl+Cmd+F
Zen Mode Ctrl+K Z Cmd+K Z
Close Window Ctrl+W Cmd+W
New Window Ctrl+Shift+N Cmd+Shift+N
Action Windows/Linux macOS
Explorer Ctrl+Shift+E Cmd+Shift+E
Search Ctrl+Shift+F Cmd+Shift+F
Source Control Ctrl+Shift+G Cmd+Shift+G
Run and Debug Ctrl+Shift+D Cmd+Shift+D
Extensions Ctrl+Shift+X Cmd+Shift+X

Editor - File Operations

Action Windows/Linux macOS
New File Ctrl+N Cmd+N
Open File Ctrl+O Cmd+O
Save Ctrl+S Cmd+S
Save As Ctrl+Shift+S Cmd+Shift+S
Save All Ctrl+K S Cmd+Option+S
Close Editor Ctrl+W Cmd+W
Close All Editors Ctrl+K W Cmd+K W
Reopen Closed Editor Ctrl+Shift+T Cmd+Shift+T
Switch Between Editors Ctrl+Tab Ctrl+Tab
Focus First Editor Ctrl+1 Cmd+1
Focus Second Editor Ctrl+2 Cmd+2
Split Editor Ctrl+\ Cmd+\

Editor - Navigation

Action Windows/Linux macOS
Go to Line Ctrl+G Ctrl+G
Go to Symbol Ctrl+Shift+O Cmd+Shift+O
Go to Definition F12 F12
Peek Definition Alt+F12 Option+F12
Go to References Shift+F12 Shift+F12
Go Back (navigate history) Alt+Left Ctrl+-
Go Forward Alt+Right Ctrl+Shift+-
Scroll Up Ctrl+Up Cmd+Up
Scroll Down Ctrl+Down Cmd+Down
Move to Top of File Ctrl+Home Cmd+Home or Cmd+Up
Move to Bottom of File Ctrl+End Cmd+End or Cmd+Down
Move to Beginning of Line Home Cmd+Left
Move to End of Line End Cmd+Right
Expand Selection Shift+Alt+Right Shift+Option+Right
Shrink Selection Shift+Alt+Left Shift+Option+Left

Editor - Editing

Action Windows/Linux macOS
Cut Line Ctrl+X Cmd+X
Copy Line Ctrl+C Cmd+C
Paste Ctrl+V Cmd+V
Undo Ctrl+Z Cmd+Z
Redo Ctrl+Shift+Z or Ctrl+Y Cmd+Shift+Z
Delete Line Ctrl+Shift+K Cmd+Shift+K
Insert Line Below Ctrl+Enter Cmd+Enter
Insert Line Above Ctrl+Shift+Enter Cmd+Shift+Enter
Move Line Up Alt+Up Option+Up
Move Line Down Alt+Down Option+Down
Copy Line Up Shift+Alt+Up Shift+Option+Up
Copy Line Down Shift+Alt+Down Shift+Option+Down
Join Lines Ctrl+J Cmd+J
Toggle Line Comment Ctrl+/ Cmd+/
Toggle Block Comment Shift+Alt+A Shift+Option+A
Format Document Shift+Alt+F Shift+Option+F
Format Selection Ctrl+K Ctrl+F Cmd+K Cmd+F

Editor - Find and Replace

Action Windows/Linux macOS
Find Ctrl+F Cmd+F
Replace Ctrl+H Cmd+H
Find Next F3 or Enter Cmd+G or Enter
Find Previous Shift+F3 Cmd+Shift+G
Select All Occurrences Ctrl+Shift+L Cmd+Shift+L
Add Selection to Next Find Match Ctrl+D Cmd+D
Toggle Match Case Alt+C Option+C
Toggle Whole Word Alt+W Option+W
Toggle Regex Alt+R Option+R

Editor - Multi-Cursor

Action Windows/Linux macOS
Add Cursor Above Ctrl+Alt+Up Cmd+Option+Up
Add Cursor Below Ctrl+Alt+Down Cmd+Option+Down
Add Cursor to Line Ends Shift+Alt+I Shift+Option+I
Undo Last Cursor Operation Ctrl+U Cmd+U

Terminal

Action Windows/Linux macOS
Toggle Terminal Ctrl+Backtick Ctrl+Backtick
Create New Terminal Ctrl+Shift+Backtick Ctrl+Shift+Backtick
Focus Terminal Ctrl+Backtick Ctrl+Backtick
Kill Terminal Ctrl+Shift+K (in terminal) Cmd+Shift+K
Scroll Up in Terminal Ctrl+Shift+Up Cmd+Shift+Up
Scroll Down in Terminal Ctrl+Shift+Down Cmd+Shift+Down

Source Control (Git)

Action Windows/Linux macOS
Open Source Control Ctrl+Shift+G Cmd+Shift+G
Commit (in message field) Ctrl+Enter Cmd+Enter
Stage File Ctrl+Enter (on file) Cmd+Enter
Refresh Source Control Ctrl+R (in SC panel) Cmd+R

Diff Viewer

Action Windows/Linux macOS
Next Diff Hunk F7 F7
Previous Diff Hunk Shift+F7 Shift+F7
Open Accessible Diff Viewer Alt+F2 Option+F2

Copilot

Action Windows/Linux macOS
Accept Suggestion Tab Tab
Reject Suggestion Escape Escape
Accept Word Ctrl+Right Cmd+Right
Next Suggestion Alt+] Option+]
Previous Suggestion Alt+[ Option+[
Open Suggestions List Ctrl+Enter Cmd+Enter
Open Suggestion in Accessible View Alt+F2 Option+F2
Insert Suggestion from Accessible View Ctrl+/ Cmd+/
Open Copilot Chat Ctrl+Alt+I or Chat: Open Chat Use Chat: Open Chat from the Command Palette if your keymap differs
Inline Chat Ctrl+I Cmd+I
Quick Chat Ctrl+Shift+Alt+I Cmd+Shift+Ctrl+I

Accessibility Features

Action Windows/Linux macOS
Toggle Screen Reader Mode Shift+Alt+F1 Shift+Option+F1
Accessible Help Alt+H Option+H
Accessible View Alt+F2 Option+F2
Announce Cursor Position Ctrl+Alt+Shift+G Cmd+Option+Shift+G
Open Accessibility Help Ctrl+Shift+P → "Help: Accessibility Help" Same

Problems Panel

Action Windows/Linux macOS
Show Problems Ctrl+Shift+M Cmd+Shift+M
Go to Next Error/Warning F8 F8
Go to Previous Error/Warning Shift+F8 Shift+F8

Markdown Preview

Action Windows/Linux macOS
Toggle Preview Ctrl+Shift+V Cmd+Shift+V
Open Preview to Side Ctrl+K V Cmd+K V

6. Accessibility Signals Types and Customization

Accessibility signals are events that trigger announcements or audio cues. Beyond audio cues, VS Code has verbal announcements for various events.

Announcement Verbosity Settings

Control how much information VS Code announces:

Setting Values Default Controls
accessibility.verbosity.chatQuestionCarousel true, false true ARIA hint in the Agent mode question carousel telling you about Alt+T (Focus Terminal)
accessibility.verbosity.diffEditor verbose, minimal, off verbose Diff viewer context announcements
accessibility.verbosity.editor verbose, minimal, off verbose General editor announcements
accessibility.verbosity.hover verbose, minimal, off verbose Hover popup announcements
accessibility.verbosity.inlineCompletions verbose, minimal, off verbose Copilot suggestion announcements
accessibility.verbosity.keyboardShortcuts true, false true Screen reader navigation hint in the Keyboard Shortcuts search results
accessibility.verbosity.terminal verbose, minimal, off verbose Terminal operation announcements

verbose: Announces full context and details
minimal: Announces only essential information
off: No automatic announcements (use Accessible View manually)

Custom Announcement Timing

Control when and how often announcements occur:

Setting Values Default Description
accessibility.signals.debouncePositionChanges number (ms) 500 Delay before announcing position changes (prevents spam during rapid navigation)
accessibility.signals.onDidChangeFocus boolean true Announce focus changes
accessibility.signals.onDidChangeModelContent boolean false Announce content changes (very verbose)

Signal Priorities

When multiple signals occur simultaneously, VS Code prioritizes them:

  1. Errors (highest priority) - always announced
  2. Warnings - announced after errors
  3. Completions - announced if no errors/warnings
  4. Focus changes - announced last

This prevents overlapping announcements.

Learning Cards: Accessibility Signals

Screen reader users
  • Start with auto for most signals -- they play only when screen reader mode is active, keeping things quiet otherwise
  • The lineHasError and taskFailed signals are the highest-value audio cues; enable these first
  • Use accessibility.signals.volume (0-100) to balance signal volume against your screen reader speech
Low vision users
  • Audio cues supplement visual indicators you might miss -- enable lineHasWarning and lineHasError for sounds on the current line
  • The save and format signals confirm file operations completed without needing to check the status bar visually
  • Pair audio cues with high-contrast gutter icons for a dual-channel (sight + sound) feedback loop
Sighted users
  • Audio cues can speed up your workflow even with full vision -- the taskCompleted chime saves you from watching terminal output
  • Search "accessibility.signals" in Settings UI to see all toggles in one filtered view with checkboxes
  • Custom sound files (WAV/MP3, under 2 seconds) can replace defaults if you want distinctive tones per event

7. Settings.json Configuration Examples

The configuration examples below are JSON blocks you paste into your settings.json file. To apply a complete set at once, consider using VS Code Profiles -- named configuration bundles that let you switch your entire setup instantly. See Chapter 11, Section 9: Profiles for how to create, switch, export, and share profiles.

Minimal Screen Reader Profile

For users who prefer minimal announcements and use Accessible View manually

{
  "editor.accessibilitySupport": "on",
  "editor.minimap.enabled": false,
  "editor.renderWhitespace": "none",
  "editor.wordWrap": "on",
  "diffEditor.renderSideBySide": false,
  "accessibility.verbosity.diffEditor": "minimal",
  "accessibility.verbosity.editor": "minimal",
  "accessibility.verbosity.hover": "minimal",
  "accessibility.verbosity.inlineCompletions": "minimal",
  "accessibility.signals.lineHasError": "on",
  "accessibility.signals.taskCompleted": "on",
  "accessibility.signals.taskFailed": "on"
}

Maximum Feedback Profile

For users who want all audio and verbal announcements

{
  "editor.accessibilitySupport": "on",
  "editor.minimap.enabled": false,
  "editor.renderWhitespace": "none",
  "editor.wordWrap": "on",
  "diffEditor.renderSideBySide": false,
  "accessibility.verbosity.diffEditor": "verbose",
  "accessibility.verbosity.editor": "verbose",
  "accessibility.verbosity.hover": "verbose",
  "accessibility.verbosity.inlineCompletions": "verbose",
  "accessibility.verbosity.terminal": "verbose",
  "accessibility.signals.lineHasError": "on",
  "accessibility.signals.lineHasWarning": "on",
  "accessibility.signals.taskCompleted": "on",
  "accessibility.signals.taskFailed": "on",
  "accessibility.signals.diffLineInserted": "on",
  "accessibility.signals.diffLineDeleted": "on",
  "accessibility.signals.chatResponseReceived": "on",
  "accessibility.signals.chatResponsePending": "on",
  "accessibility.signals.save": "on",
  "accessibility.signals.clear": "on",
  "accessibility.signals.format": "on",
  "accessibility.signals.terminalBell": "on",
  "accessibility.signals.terminalCommandFailed": "on",
  "terminal.integrated.enableBell": true
}

Copilot-Optimized Profile

For users working heavily with GitHub Copilot

{
  "editor.accessibilitySupport": "on",
  "editor.minimap.enabled": false,
  "editor.wordWrap": "on",
  "accessibility.verbosity.inlineCompletions": "minimal",
  "accessibility.verbosity.panelChat": "minimal",
  "accessibility.signals.lineHasInlineSuggestion": "on",
  "accessibility.signals.chatResponsePending": "on",
  "accessibility.signals.chatResponseReceived": "on",
  "accessibility.signals.chatRequestSent": "on",
  "github.copilot.enable": {
    "*": true,
    "yaml": true,
    "plaintext": false,
    "markdown": true
  }
}

Note: The github.copilot.enable object controls which file types get Copilot suggestions.

Git/Diff-Optimized Profile

For users doing heavy PR review and diff work

{
  "editor.accessibilitySupport": "on",
  "diffEditor.renderSideBySide": false,
  "diffEditor.ignoreTrimWhitespace": true,
  "diffEditor.wordWrap": "on",
  "diffEditor.diffAlgorithm": "advanced",
  "accessibility.verbosity.diffEditor": "verbose",
  "accessibility.signals.diffLineInserted": "on",
  "accessibility.signals.diffLineDeleted": "on",
  "accessibility.signals.diffLineModified": "on",
  "scm.diffDecorations": "gutter",
  "scm.diffDecorationsGutterWidth": 2
}

Performance-Optimized Profile

For users on slower machines or with large repositories

{
  "editor.accessibilitySupport": "on",
  "editor.minimap.enabled": false,
  "editor.renderWhitespace": "none",
  "editor.guides.indentation": false,
  "editor.guides.bracketPairs": false,
  "editor.occurrencesHighlight": false,
  "editor.selectionHighlight": false,
  "editor.hover.enabled": true,
  "editor.hover.delay": 1000,
  "files.exclude": {
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true,
    "**/node_modules": true,
    "**/.vscode": false
  },
  "search.exclude": {
    "**/node_modules": true,
    "**/bower_components": true,
    "**/*.code-search": true
  }
}

Paste this into your settings.json for a balanced screen reader profile

{
  "editor.accessibilitySupport": "on",
  "editor.minimap.enabled": false,
  "editor.renderWhitespace": "none",
  "editor.wordWrap": "on",
  "diffEditor.renderSideBySide": false,
  "diffEditor.ignoreTrimWhitespace": true,
  "diffEditor.wordWrap": "on",
  "accessibility.verbosity.diffEditor": "verbose",
  "accessibility.verbosity.editor": "verbose",
  "accessibility.verbosity.hover": "verbose",
  "accessibility.verbosity.inlineCompletions": "minimal",
  "accessibility.verbosity.panelChat": "minimal",
  "accessibility.signals.lineHasError": "on",
  "accessibility.signals.lineHasWarning": "auto",
  "accessibility.signals.taskCompleted": "on",
  "accessibility.signals.taskFailed": "on",
  "accessibility.signals.diffLineInserted": "on",
  "accessibility.signals.diffLineDeleted": "on",
  "accessibility.signals.chatResponseReceived": "on",
  "terminal.integrated.enableBell": true,
  "workbench.editor.enablePreview": false
}

8. VS Code 1.120 Chat, Agents Window, and Markdown Diff Updates

VS Code 1.120 adds several accessibility-relevant changes for learners who use Copilot, review documentation diffs, or manage agent sessions. For the full Copilot and Agents window workflow, see Appendix K: VS Code 1.120 Agents Window and Impactful Updates.

What Changed

The following table summarizes the 1.120 changes that affect accessible VS Code workflows.

Feature Accessibility Impact Suggested Use
Agents window, Preview Gives agent sessions their own window with sessions, chat, customizations, files, and changes Use Command Palette access, worktree isolation, and Changes panel review
Terminal command risk assessment, Experimental Adds a risk badge and command explanation to some terminal confirmations Treat as extra context, not permission to skip reading the command
Terminal output compression, Preview Reduces long terminal output sent to chat, which can reduce context noise Use for large diffs or install logs; ask for raw output when exact text matters
Markdown preview for diffs, Preview Lets documentation diffs render as Markdown instead of only source text Useful for sighted and low-vision review of headings, lists, links, and tables
Plan mode inline control Lets supported agents show and edit plans inline before implementation Useful when reviewing an agent plan before file changes start
Model picker grouped by provider Makes model lists easier to scan when many models are available Keep beginners on Auto; use provider grouping for advanced model selection
BYOK token usage and thinking effort Gives advanced users more visibility and control for bring-your-own-key models Not needed for beginners; useful for cost and context management
Markdown HTML id completion and validation Improves completion and validation for internal links to HTML IDs in Markdown Helpful when maintaining long workshop docs with many anchors
Smart select for Markdown tables Expands selection from cell to row to whole table Helpful for keyboard users editing large reference tables

Screen Reader Workflow

  1. Open the Agents window with Chat: Open Agents Window from the Command Palette.
  2. Use Alt+F1 in the focused area to find context-specific accessibility help.
  3. Use F6 and Shift+F6 to move among major workbench parts.
  4. Use Alt+F2 for Accessible View when chat responses, terminal output, hovers, or diffs are easier to read in a stable buffer.
  5. Use F7 and Shift+F7 for diff navigation before accepting agent changes.
  6. When terminal risk assessment is enabled, listen to the risk label and explanation, then still read the exact command before approving it.

Low Vision Workflow

  1. Set zoom and theme before starting a dense Agents window session.
  2. Use modal diff view when side-by-side changes are too compressed.
  3. Try Markdown preview diffs for documentation changes where rendered headings, lists, and tables are easier to inspect.
  4. Widen the Sessions list, Chat area, and Changes panel as needed before reviewing work.
  5. Consider separate Agents window settings if your editor and agent review layouts need different zoom or density.

Sighted Workflow

  1. Use changed-file counts and session status badges as quick scope checks.
  2. Open each changed file from the Changes panel before accepting a session result.
  3. Use rendered Markdown diffs for documentation PRs and source diffs for syntax-sensitive edits.
  4. Use the integrated browser or terminal in the Agents window to validate generated work before committing or merging.

Settings Reference

The following settings are useful to know when teaching VS Code 1.120 workflows.

Setting What It Controls
chat.tools.riskAssessment.enabled Shows risk assessment for terminal command confirmations
chat.tools.compressOutput.enabled Compresses large terminal output before it is sent to the model
chat.planWidget.inlineEditor.enabled Enables inline plan editing for supported agent flows
workbench.diffEditorAssociations Can set rendered Markdown preview as the default diff editor for Markdown
extensions.supportAgentsWindow Lets you opt specific installed extensions into the Agents window
chat.notifyWindowOnResponseReceived Controls OS notifications when chat responses arrive
chat.notifyWindowOnConfirmation Controls OS notifications when an agent needs confirmation

Example setting for rendered Markdown diffs:

{
  "workbench.diffEditorAssociations": {
    "*.md": "vscode.markdown.preview.editor"
  }
}

Next: Appendix H: GitHub Desktop
Back: Appendix F: Git Security
Teaching chapter: Chapter 11: VS Code Interface

Authoritative Sources

Use these official references when you need the current source of truth for facts in this chapter.

Section-Level Source Map

Use this map to verify facts for each major section in this file.