kovidgoyal/kitty · info

Application escape mode is not supported, the extended keybo

Error message

Application escape mode is not supported, the extended keyboard protocol should be used instead

What it means

An application set DEC private mode 7727 (Application Escape mode), which kitty does not support; the mode is ignored and kitty advises using the kitty keyboard protocol instead. Purely informational.

Source

Thrown at kitty/screen.c:2032

        case DECAWM: self->modes.mDECAWM = val; break;
        case DECCOLM:
            self->modes.mDECCOLM = val;
            if (val) {
                // When DECCOLM mode is set, the screen is erased and the cursor
                // moves to the home position.
                screen_erase_in_display(self, 2, false);
                screen_cursor_position(self, 1, 1);
            }
            break;
        case CONTROL_CURSOR_BLINK: self->cursor->non_blinking = !val; break;
        case SAVE_CURSOR: screen_save_cursor(self); break;
        case TOGGLE_ALT_SCREEN_1:
        case TOGGLE_ALT_SCREEN_2:
        case ALTERNATE_SCREEN:
            if (val && self->linebuf == self->main_linebuf) screen_toggle_screen_buffer(self, mode == ALTERNATE_SCREEN, mode == ALTERNATE_SCREEN);
            else if (!val && self->linebuf != self->main_linebuf) screen_toggle_screen_buffer(self, mode == ALTERNATE_SCREEN, mode == ALTERNATE_SCREEN);
            break;
        case 7727 << 5: log_error("Application escape mode is not supported, the extended keyboard protocol should be used instead"); break;
        case PENDING_MODE << 5:
            if (!screen_pause_rendering(self, val, 0)) {
                log_error("Pending mode change to already current mode (%d) requested. Either pending mode expired or there is an application bug.", val);
            }
            break;
        case INBAND_RESIZE_NOTIFICATION:
            self->modes.mINBAND_RESIZE_NOTIFICATION = val;
            if (val) CALLBACK("notify_child_of_resize", NULL);
            break;
        case VISIBILITY_REPORTS:
            self->modes.mVISIBILITY_REPORTS = val;
            if (val) send_visibility_report(self);
            break;
        default:
            private = mode >= 1 << 5;
            if (private) mode >>= 5;
            log_error("%s %s %u %s", ERROR_PREFIX, "Unsupported screen mode: ", mode, private ? "(private)" : "");
    }

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. No action needed - the mode is ignored and nothing breaks
  2. Configure the app to use the kitty keyboard protocol instead of mode 7727
  3. Filter the log message if noisy
Defensive patterns

Strategy: validation

Validate before calling

# in your TUI app, query for the kitty keyboard protocol (CSI ? u) and use it instead of enabling mode 7727

Prevention

When it happens

Trigger: A terminal program emits CSI ? 7727 h to enable application escape mode.

Common situations: Older or misconfigured TUI apps enabling obscure xterm-compatible modes; harmless.

Related errors


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/c6389075e685431d. Report an issue: GitHub.