Skip to content

XTSAVE — save DEC private modes (CSI ? Pm s)

Category: modes · Baseline: rich · Tags: Xterm Extensions, DEC Private Modes · Specification ↗

ESC [ ? Pm s
XTSAVE saves one or more DEC private modes onto an internal stack. The sequence is CSI ? Pm s where Pm is a semicolon-separated list of mode numbers. XTRESTORE (CSI ? Pm r) restores the most recent saved values. This is the canonical xterm pattern for temporarily changing modes. For example, a TUI that wants to enter mouse-tracking and bracketed-paste during its run can CSI ? 1000 ; 2004 s at startup, then CSI ? 1000 ; 2004 r on exit — the previous values are restored regardless of what the calling shell had configured. Without XTSAVE, applications must query DECRPM for each mode, store the result, and write it back manually. Adopted by xterm, Ghostty, Kitty, WezTerm, foot, and other modern terminals.
How this is testedautomated
Send \x1b[?7s (save DECAWM), verify the sequence is consumed and the terminal stays responsive.

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 8 of 9 terminals (89%). Not supported by: Alacritty. Part of the Rich TUI baseline. Notes: Alacritty: XTSAVE private mode save not implemented by alacritty.

Supported by 9 of 14 backends (64%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yesSequence consumed; terminal responsive
Ghostty1.3.1✓ yesSequence consumed; terminal responsive
Terminal.app2.15✓ yesSequence consumed; terminal responsive
Kitty0.46.2✓ yesXTSAVE private mode save not exposed via Python batch bridge
VS Code1.113.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown

Headless Backends

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

BackendVersionSupportNotes
vt100.js0.2.1✓ yes
vterm0.2.0✓ yes
xterm.js5.5.0✓ yes
WezTerm0.1.0-fork.5~ partialXTSAVE private mode save not exposed in headless mode
Alacritty0.26.0✗ noXTSAVE private mode save not implemented by alacritty