wire / terminal-dec-private-mode / 2026
CSI ? 2026 h begins a synchronized update: the terminal buffers all output and does not repaint until CSI ? 2026 l ends the batch, eliminating tearing/flicker when redrawing a frame. A de-facto standard introduced by the terminal-wg / Contour effort and adopted by several terminals.
aka: synchronized output · synchronized update · DECSET 2026 · ?2026h / ?2026l · BSU · ESU · tear-free
DEC-private-mode introducer: \x1b[? ESC [ ? (0x1B 0x5B 0x3F)
terminator (none): ST · BEL
| id | name | bytes (ST) | meaning |
|---|---|---|---|
| set | Enable (DECSET) | \x1b[?2026h | CSI ? 2026 h begins a synchronized update (BSU): the terminal stops repainting and buffers subsequent output until the batch ends. |
| reset | Disable (DECRST) | \x1b[?2026l | CSI ? 2026 l ends the synchronized update (ESU): the terminal atomically renders the buffered frame, avoiding flicker/tearing. |
| terminal | level | since | notes |
|---|---|---|---|
| Contour | full | spec author | Originated/authored the synchronized-output spec. |
| kitty | full | documented | Implements mode 2026 synchronized updates. |
| WezTerm | full | documented | Implements mode 2026. |
| iTerm2 | full | 3.5+ | Supports synchronized output. |
| Ghostty | full | 1.0 | Supports mode 2026. |
per-fact attribution:
agent: curl -H 'accept: application/json' wire.phall.io/terminal-dec-private-mode/2026
or /terminal-dec-private-mode/2026.json