Appearance
Semantic prompts (OSC 133)
ESC ] 133 ; A BELSemantic prompts use OSC 133 markers to tell the terminal where each shell prompt, command input, and command output begins and ends. The markers are:
A (prompt start), B (command input start — after prompt, before the user types), C (command output start — after Enter), and D (command finished, with exit code).
With these markers, terminals can implement features that were previously impossible: click-to-navigate between prompts, select entire command output, scroll by command boundaries, mark failed commands with a red indicator, and provide command completion times. Shell integration scripts (for bash, zsh, fish) emit these markers automatically.
Also known as shell integration or command decoration. Supported by iTerm2 (which originated the protocol), Ghostty, WezTerm, Kitty, and VS Code's integrated terminal.How this is testedautomated
Send
Send
OSC 133 ; A BEL (prompt start marker) and verify the terminal accepts it without error.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 10 of 14 backends (71%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | |
| Ghostty | 1.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.
| Backend | Version | Support | Notes |
|---|---|---|---|
| vterm | 0.2.0 | ✓ yes | |
| WezTerm | 0.1.0-fork.5 | ✓ yes | |
| Kitty | 0.40.0 | ~ partial | OSC 133 not exposed via Python batch bridge |
| Alacritty | 0.26.0 | ✗ no | Not implemented in alacritty |
| vt100.js | 0.2.1 | ✗ no | Not implemented — pure TypeScript emulator |
| xterm.js | 5.5.0 | ✗ no | Not implemented in xterm.js |