Appearance
Kitty color protocol (OSC 21)
ESC ] 21 ; key=value BELOSC 21 is Kitty's key-value color protocol, designed as a structured replacement for the scattered OSC 10–19 color sequences. Instead of issuing separate sequences for foreground, background, cursor, selection, and palette colors, applications send a single
ESC ] 21 ; key=value;... BEL sequence that updates any combination of named color slots. Both setting and querying are supported: key=? requests the current value, and the terminal responds with the same key-value framing. The protocol is well-defined and avoids the parsing ambiguities of the legacy xterm color sequences. Currently supported by Kitty, Ghostty, and foot.How this is testedpartial
Send
Send
OSC 21 ; foreground=? BEL and verify the terminal responds with the foreground color in key-value form.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 6 of 14 backends (43%)
Terminal Applications
| Terminal | Version | Support | Notes |
|---|---|---|---|
| iTerm2 | 3.6.9 | ✓ yes | Consumed (no query response) |
| Ghostty | 1.3.1 | ✓ yes | |
| Terminal.app | 2.15 | ✓ yes | Consumed (no query response) |
| Kitty | 0.46.2 | ✓ yes | OSC 21 query responses not exposed via Python batch bridge |
| VS Code | 1.113.0 | ? unknown | |
| Warp | 0.2026.03.18.08.24.03 | ? unknown | |
| Cursor | 2.6.21 | ? unknown |
Headless Backends
Parser correctness only — a ✓ means the parser accepts the sequence.
| Backend | Version | Support | Notes |
|---|---|---|---|
| Alacritty | 0.26.0 | ✗ no | Kitty color protocol (OSC 21) not implemented by alacritty |
| vt100.js | 0.2.1 | ✗ no | Kitty color protocol (OSC 21) not implemented — post-dates VT220 baseline |
| vterm | 0.2.0 | ✗ no | Kitty color protocol (OSC 21) not implemented in vterm.js |
| WezTerm | 0.1.0-fork.5 | ✗ no | Kitty color protocol (OSC 21) not implemented by wezterm |
| xterm.js | 5.5.0 | ✗ no | Kitty color protocol (OSC 21) not implemented in xterm.js |