Listen to Episode 31: GitHub Codespaces - a conversational audio overview of this chapter. Listen before reading to preview the concepts, or after to reinforce what you learned.
GitHub Codespaces gives you a full VS Code development environment in your browser or connected to your local VS Code, running on a cloud machine. For screen reader users, this means a consistent, pre-configured environment with no local setup required.
- What Is GitHub Codespaces?
- Creating a Codespace
- Codespace Environments
- Accessibility in Codespaces
- Screen Reader Configuration
- Keyboard Shortcuts in Codespaces
- Managing Your Codespaces
- Dotfiles and Persistent Configuration
- Codespaces vs GitHub.dev
- Common Issues and Workarounds
A Codespace is a cloud-hosted development environment. When you open one, GitHub provisions a virtual machine, clones your repository into it, and connects it to a VS Code interface - either in your browser or via your local VS Code Desktop.
- No local installation of tools, compilers, or language runtimes required
- Your screen reader and OS settings stay on your machine; only the editor runs in the cloud
- VS Code's full accessibility features (audio cues, screen reader optimized mode, diff viewer) are available
- The environment is identical for every workshop participant - facilitators can reproduce issues reliably
Free tier: GitHub provides a monthly free allowance of Codespace hours for personal accounts. Workshop usage typically falls well within the free tier.
- Navigate to the repository on GitHub
- Press the Code button (keyboard shortcut: there is no direct shortcut - Tab to the button)
- In the panel that opens, choose the Codespaces tab
- Activate Create codespace on main (or your branch name)
- The Codespace opens in a new browser tab after provisioning (typically 30-60 seconds)
- Go to github.com/codespaces
- Activate New codespace
- Use the search field to find your repository
- Choose a branch, machine type, and region
- Activate Create codespace
| Type | CPU | RAM | Best for |
|---|---|---|---|
| 2-core | 2 vCPU | 8 GB | General development, documentation |
| 4-core | 4 vCPU | 16 GB | Builds, tests, moderate workloads |
| 8-core | 8 vCPU | 32 GB | Heavy builds, multiple services |
For workshop exercises, the default 2-core machine is sufficient.
The Codespace opens directly in your browser as a fully functional VS Code interface.
- Works in Chrome, Edge, Firefox, and Safari
- Screen reader support varies slightly by browser - Chrome and Edge have the most consistent behavior with NVDA and JAWS
- No installation needed
- Some VS Code extensions are not available in the browser version
If you prefer your local VS Code setup with your extensions and settings:
- Install the GitHub Codespaces extension in VS Code
- Sign in to GitHub in VS Code
- Open the Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run Codespaces: Connect to Codespace
- Select an existing Codespace or create a new one
When connected via local VS Code, your screen reader interacts with your local VS Code installation - all your familiar settings apply.
When VS Code detects a screen reader, it automatically activates Screen Reader Optimized mode. You can verify or toggle it manually:
- Open the Command Palette (
Ctrl+Shift+P) - Search for Toggle Screen Reader Accessibility Mode
- Press Enter to activate
In this mode:
- The editor reads content line by line instead of character by character
- Diff views are rendered as accessible text comparisons
- Inline suggestions from Copilot are announced on a keypress rather than automatically
VS Code in Codespaces supports the same audio cues as the desktop version:
| Event | Default Audio Cue |
|---|---|
| Error on current line | Tone |
| Warning on current line | Tone |
| Breakpoint hit | Tone |
| Task completed | Chime |
| Copilot suggestion available | Tone |
Enable audio cues via Settings → search for "audio cues" or run Help: List Audio Cues from the Command Palette.
The integrated terminal in a Codespace is a standard terminal:
- Screen readers read terminal output in NVDA and JAWS using their document/browse mode after output arrives
- In NVDA: Switch to Browse Mode to read static terminal output, then back to Focus Mode to type
- VS Code also has Accessible View (
Alt+F2when cursor is in the terminal) which renders terminal output in a navigable buffer
No special NVDA profile is required for Codespaces in the browser. The same settings recommended in Appendix B apply:
- Ensure Browse Mode is on for reading, Focus Mode for typing
- Set maximum line length to 10000 in NVDA Settings → Browse Mode
- In Chrome or Edge, NVDA's Browse Mode detection is generally reliable
- Use Virtual Cursor for reading page content
- Switch to PC Cursor (Insert+Z or Num Pad Plus) when inside the editor and writing code
- JAWS works best with the Codespace in Chrome or Edge
- Use Quick Nav (Left+Right arrows) for moving through the VS Code interface
- The Rotor (VO+U) surfaces VS Code's landmark regions
- If text in the editor is not reading fluently, ensure Screen Reader Optimized mode is active (see above)
Codespaces uses standard VS Code keyboard shortcuts. The most important ones for workshop exercises:
| Shortcut | Action |
|---|---|
| Ctrl+Shift+P | Command Palette |
| Ctrl+P | Quick Open (search files by name) |
| Ctrl+` | Toggle integrated terminal |
| Ctrl+Shift+E | Explorer panel |
| Ctrl+Shift+G | Source Control panel |
| Ctrl+Shift+X | Extensions panel |
| Ctrl+B | Toggle sidebar |
| Shortcut | Action |
|---|---|
| Ctrl+Shift+K | Delete line |
| Alt+↑ / Alt+↓ | Move line up/down |
| Ctrl+/ | Toggle line comment |
| Ctrl+G | Go to line number |
| F8 | Next error or warning |
| Shift+F8 | Previous error or warning |
| Alt+F2 | Accessible View (terminal, notifications, Copilot output) |
| Shortcut | Action |
|---|---|
| Ctrl+Shift+G | Open Source Control panel |
| Ctrl+Enter | Commit (when focus is on message field) |
Codespaces automatically stop after a period of inactivity (default: 30 minutes). To stop manually:
- Go to github.com/codespaces
- Find your Codespace in the list
- Activate the … menu next to it
- Choose Stop codespace
Stopped Codespaces retain your files and changes. They do not use compute hours while stopped.
- Go to github.com/codespaces
- Activate the … menu next to the Codespace
- Choose Delete
Note: Deleting a Codespace removes any uncommitted or unpushed changes permanently. Always commit and push your work before deleting.
- Go to github.com/codespaces
- Find your stopped Codespace
- Activate Open in … to resume it in the browser or in VS Code Desktop
If you have a repository named dotfiles on your GitHub account, Codespaces will automatically apply it when provisioning new environments. This is useful for:
- Setting your preferred shell (bash, zsh, fish)
- Adding shell aliases and functions
- Pre-installing command-line tools
To set up dotfiles: create a repository named dotfiles and add an install.sh script. Codespaces will run it automatically.
VS Code settings (themes, font size, keybindings) can be synchronized to Codespaces via Settings Sync (sign in with your GitHub account in VS Code settings).
| Feature | GitHub Codespaces | GitHub.dev |
|---|---|---|
| Access | github.com/codespaces or press . then choose Codespaces |
Press . on any repository |
| Terminal | Yes - full terminal | No terminal |
| Extensions | Most VS Code extensions | Web-compatible extensions only |
| Run code | Yes | No |
| Cost | Free tier, then usage-based | Free |
| Screen reader support | Full VS Code + terminal | Full VS Code (no terminal) |
| Best for | Active development, running tests | Quick edits, reading code |
For workshop exercises that involve running scripts or tests, use Codespaces. For quickly browsing or editing a file, GitHub.dev is faster to open.
Provisioning a new Codespace can take up to 90 seconds. If it hangs beyond that, refresh the browser tab and try again. Resuming an existing Codespace is much faster (5-10 seconds).
Switch to Browse Mode (NVDA: Insert+Space; JAWS: Insert+Z) to read the terminal output, then return to Focus Mode to type your next command.
Some browsers mute audio by default for new tabs. Check your browser's site permissions to ensure audio is allowed for github.dev or the Codespace URL.
Some extensions are not compatible with the browser-based VS Code. Connect to the Codespace via VS Code Desktop instead (see Section 3) to access your full extension library.
If the branch exists on GitHub, you can create a new Codespace from it. Uncommitted changes in a deleted Codespace cannot be recovered.
You may have committed but not pushed. In the Source Control panel, look for the Sync Changes or Push button. Run git push in the terminal if needed.
Return to: Resources | Appendix M - VS Code Accessibility Reference | Appendix A - Glossary