[BUG] tui: "fullscreen" leaks OSC11/DA1 terminal query-replies to stdout — corrupts piped output and pager navigation

Open 💬 1 comment Opened Jul 8, 2026 by ekson73

Environment

  • Claude Code: 2.1.203
  • OS: macOS 26.5.2 (build 25F84)
  • Reproduced in: iTerm2, Terminal.app, cmux
  • Relevant setting: "tui": "fullscreen" in ~/.claude/settings.json

Summary

With "tui": "fullscreen" set, claude plugin marketplace list (and likely other commands) emits terminal query-reply escape sequences — OSC 11 (background-color report) and DA1 (primary device-attributes report, ESC [ ? … c) — onto stdout. These replies belong on the controlling TTY only and must never appear in the data stream.

Steps to reproduce

  1. Set "tui": "fullscreen" in ~/.claude/settings.json.
  2. Run claude plugin marketplace list directly → stray escape characters render on screen (iTerm2).
  3. Run claude plugin marketplace list | bat (or | more, | cat) → the pager's TTY is stuck in canonical mode: arrow keys emit junk, space doesn't scroll, q doesn't quit; only Enter reacts.
  4. Run claude doctor without a real TTY (e.g. piped) → hangs indefinitely with no output (required SIGKILL).

Expected

Terminal query-replies (OSC11 / DA1) stay on the controlling TTY and are never written to stdout, regardless of the tui renderer. Piped output is clean text.

Actual

The escape sequences are written to stdout. In a pipe this corrupts the downstream program's TTY state; direct in iTerm2 they render as stray characters.

Root cause (narrowed by bisection)

"tui": "fullscreen" is the trigger. Removing the key (default renderer) fully resolves all three symptoms. Two other non-default settings present in the same file — "teammateMode": "tmux" and "remoteControlAtStartup": true — were tested and excluded as non-causal.

Workaround

Remove "tui": "fullscreen" from ~/.claude/settings.json (reloads on next startup).

Possibly related

#72455 (fullscreen renderer corrupting the system clipboard) may share the same fullscreen-renderer escape-handling root, though the symptom differs.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗