{"record":{"id":"c6389075e685431d","repo":"kovidgoyal/kitty","slug":"application-escape-mode-is-not-supported-the-exte","errorCode":null,"errorMessage":"Application escape mode is not supported, the extended keyboard protocol should be used instead","messagePattern":"Application escape mode is not supported, the extended keyboard protocol should be used instead","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"kitty/screen.c","lineNumber":2032,"sourceCode":"        case DECAWM: self->modes.mDECAWM = val; break;\n        case DECCOLM:\n            self->modes.mDECCOLM = val;\n            if (val) {\n                // When DECCOLM mode is set, the screen is erased and the cursor\n                // moves to the home position.\n                screen_erase_in_display(self, 2, false);\n                screen_cursor_position(self, 1, 1);\n            }\n            break;\n        case CONTROL_CURSOR_BLINK: self->cursor->non_blinking = !val; break;\n        case SAVE_CURSOR: screen_save_cursor(self); break;\n        case TOGGLE_ALT_SCREEN_1:\n        case TOGGLE_ALT_SCREEN_2:\n        case ALTERNATE_SCREEN:\n            if (val && self->linebuf == self->main_linebuf) screen_toggle_screen_buffer(self, mode == ALTERNATE_SCREEN, mode == ALTERNATE_SCREEN);\n            else if (!val && self->linebuf != self->main_linebuf) screen_toggle_screen_buffer(self, mode == ALTERNATE_SCREEN, mode == ALTERNATE_SCREEN);\n            break;\n        case 7727 << 5: log_error(\"Application escape mode is not supported, the extended keyboard protocol should be used instead\"); break;\n        case PENDING_MODE << 5:\n            if (!screen_pause_rendering(self, val, 0)) {\n                log_error(\"Pending mode change to already current mode (%d) requested. Either pending mode expired or there is an application bug.\", val);\n            }\n            break;\n        case INBAND_RESIZE_NOTIFICATION:\n            self->modes.mINBAND_RESIZE_NOTIFICATION = val;\n            if (val) CALLBACK(\"notify_child_of_resize\", NULL);\n            break;\n        case VISIBILITY_REPORTS:\n            self->modes.mVISIBILITY_REPORTS = val;\n            if (val) send_visibility_report(self);\n            break;\n        default:\n            private = mode >= 1 << 5;\n            if (private) mode >>= 5;\n            log_error(\"%s %s %u %s\", ERROR_PREFIX, \"Unsupported screen mode: \", mode, private ? \"(private)\" : \"\");\n    }","sourceCodeStart":2014,"sourceCodeEnd":2050,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/screen.c#L2014-L2050","documentation":"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.","triggerScenarios":"A terminal program emits CSI ? 7727 h to enable application escape mode.","commonSituations":"Older or misconfigured TUI apps enabling obscure xterm-compatible modes; harmless.","solutions":["No action needed - the mode is ignored and nothing breaks","Configure the app to use the kitty keyboard protocol instead of mode 7727","Filter the log message if noisy"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# in your TUI app, query for the kitty keyboard protocol (CSI ? u) and use it instead of enabling mode 7727","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Adopt the kitty keyboard protocol instead of application escape mode"],"tags":["kitty","terminal-modes","keyboard-protocol"],"backgroundTag":"unsupported-terminal-mode","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}