{"record":{"id":"3016f9f66767db82","repo":"kovidgoyal/kitty","slug":"this-terminal-does-not-support-the-graphics-protoc","errorCode":null,"errorMessage":"This terminal does not support the graphics protocol use a terminal such as kitty, WezTerm or Konsole that does. If you are running inside a terminal multiplexer such as tmux or screen that might be interfering as well.","messagePattern":"This terminal does not support the graphics protocol use a terminal such as kitty, WezTerm or Konsole that does\\. If you are running inside a terminal multiplexer such as tmux or screen that might be interfering as well\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kittens/icat/main.go","lineNumber":292,"sourceCode":"\n\tpassthrough_mode := no_passthrough\n\tswitch opts.Passthrough {\n\tcase \"tmux\":\n\t\tpassthrough_mode = tmux_passthrough\n\tcase \"detect\":\n\t\tif tui.TmuxSocketAddress() != \"\" {\n\t\t\tpassthrough_mode = tmux_passthrough\n\t\t}\n\t}\n\n\tif passthrough_mode == no_passthrough && (opts.TransferMode == \"detect\" || opts.DetectSupport) {\n\t\tmemory, files, direct, err := DetectSupport(time.Duration(opts.DetectionTimeout * float64(time.Second)))\n\t\tif err != nil {\n\t\t\treturn 1, err\n\t\t}\n\t\tif !direct {\n\t\t\tkeep_going.Store(false)\n\t\t\treturn 1, fmt.Errorf(\"This terminal does not support the graphics protocol use a terminal such as kitty, WezTerm or Konsole that does. If you are running inside a terminal multiplexer such as tmux or screen that might be interfering as well.\")\n\t\t}\n\t\tif memory {\n\t\t\ttransfer_by_memory = supported\n\t\t} else {\n\t\t\ttransfer_by_memory = unsupported\n\t\t}\n\t\tif files {\n\t\t\ttransfer_by_file = supported\n\t\t} else {\n\t\t\ttransfer_by_file = unsupported\n\t\t}\n\t}\n\tif passthrough_mode != no_passthrough {\n\t\t// tmux doesn't allow responses from the terminal so we can't detect if memory or file based transferring is supported\n\t\ttransfer_by_memory = unsupported\n\t\ttransfer_by_file = unsupported\n\t}\n\tif opts.DetectSupport {","sourceCodeStart":274,"sourceCodeEnd":310,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/icat/main.go#L274-L310","documentation":"icat probed the terminal for the kitty graphics protocol and did not detect direct support. Only terminals speaking the graphics protocol (kitty, WezTerm, Konsole, recent Ghostty) can display images this way; multiplexers like tmux/screen can also mask it.","triggerScenarios":"DetectSupport() times out (controlled by --detect-support-timeout) or the terminal doesn't answer the graphics query, so direct == false.","commonSituations":"Running in tmux/screen (default tmux doesn't forward the queries); TERM set wrongly; slow SSH link where the probe times out; very old terminal emulator.","solutions":["Run directly in kitty/WezTerm/Konsole/Ghostty","Set TERM=xterm-kitty (and correct TERMINFO) when inside kitty","Increase --detect-support-timeout on slow links","For tmux, ensure a recent tmux with allow-passthrough or run outside it"],"exampleFix":"# before (inside tmux)\nkitten icat img.png\n# after\ntmux detach\nkitten icat img.png","handlingStrategy":"fallback","validationCode":"env := os.Getenv(\"KITTY_WINDOW_ID\")\nif env == \"\" && os.Getenv(\"TERM\") != \"xterm-kitty\" { /* fall back to plain cat or chafa */ }","typeGuard":null,"tryCatchPattern":"err := cmd.Run()\nif err != nil && strings.Contains(err.Error(), \"graphics protocol\") { /* fallback renderer */ }","preventionTips":["Detect kitty via KITTY_WINDOW_ID before calling icat","Raise --detect-support-timeout on slow networks","Configure tmux passthrough or run outside multiplexers"],"tags":["kitty","icat","graphics-protocol","terminal-support"],"backgroundTag":"terminal-capability-unsupported","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}