Skip to content

VS Code Shell Integration (OSC 633)

Category: extensions · Baseline: rich · Tags: Operating System Commands (OSC), VS Code Extensions · Specification ↗

ESC ] 633 ; A BEL

OSC 633 is VS Code's shell integration protocol, extending OSC 133 with additional markers for command detection, output boundaries, and shell state. It enables features like command decorations (green/red markers showing success/failure), run-recent-command, and sticky scroll for terminal output.

The protocol uses escape sequences to mark four boundaries: prompt start (A), command start (B), command executed (C), and command finished (D, with exit code). VS Code's built-in shell integration scripts for bash, zsh, fish, and PowerShell emit these markers automatically. The terminal then knows exactly where each prompt, command, and output block begins and ends.

OSC 633 adds VS Code-specific extensions beyond OSC 133: property reporting (P;key=value) for shell state like current directory and shell type, command line reporting (E) for the exact command text, and continuation prompt marking for multi-line commands. Other terminals (Kitty, WezTerm) support the base OSC 133 protocol but not the VS Code-specific extensions.

How this is testedautomated
Send OSC 633 ; A BEL (VS Code prompt start marker) and verify the terminal accepts the sequence. OSC 633 is a superset of OSC 133.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-04-06

Supported by 9 of 12 terminals (75%). Not supported by: vt100.js, Alacritty, xterm.js. Part of the Rich TUI baseline. Notes: vt100.js: VS Code shell integration (OSC 633) not supported; Alacritty: VS Code shell integration (OSC 633) not supported; xterm.js: VS Code shell integration (OSC 633) not supported.

Supported by 10 of 14 backends (71%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
Kitty0.40.0~ partialOSC 633 not exposed via Python batch bridge
Alacritty0.26.0✗ noVS Code shell integration (OSC 633) not supported
vt100.js0.2.1✗ noVS Code shell integration (OSC 633) not supported
xterm.js5.5.0✗ noVS Code shell integration (OSC 633) not supported