[BUG] copyOnSelect: false is ignored by the fullscreen renderer (honored by the default renderer) — v2.1.206
SummarycopyOnSelect is a real, implemented setting — but the fullscreen renderer bypasses it. With "tui": "fullscreen" and "copyOnSelect": false, a mouse drag-select still copies to the clipboard (via OSC 52). Switching to the default/classic renderer with the same settings correctly suppresses the copy.
What I want: keep tui: fullscreen AND have copyOnSelect: false actually disable copy-on-select. copyOnSelect is the toggle for this; it just isn't consulted by the fullscreen path.
Environment
- Claude Code 2.1.206, Linux x86_64, run on a remote headless host over SSH
- Client: iTerm2 / macOS.
TERM=xterm-256color - No
xclip/xsel/wl-copyon the remote host → the copy path falls back to OSC 52 up the SSH pipe, writing to the client's clipboard
Repro
- On a remote Linux host,
~/.claude/settings.json:{ "tui": "fullscreen", "copyOnSelect": false } - Start a fresh
claudesession (so the setting is definitely loaded). - Drag-select any text in the TUI.
- Actual: the client's system clipboard is overwritten (OSC 52 emitted).
- Run the same session with the classic renderer, settings unchanged:
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 claude
- Drag-select again. Clipboard is untouched —
copyOnSelect: falseis honored here.
Expected: copyOnSelect: false suppresses copy-on-select in both renderers, including fullscreen.
Why this is a bypass, not a missing featurecopyOnSelect is present and read in the 2.1.206 bundle. It appears in the settings key groups ("Input & controls": [... "copyOnSelect" ...]), has a settings-UI toggle ({ id: "copyOnSelect", label: "Copy on select", type: "boolean" }), and gates the copy:
if (!(St().copyOnSelect ?? true)) return; // early-return when false
let u = e.copySelectionNoClear();
The fullscreen renderer reaches the clipboard write through a different path that never consults this gate.
Impact
On any headless/remote host, every incidental drag-select in the TUI silently clobbers the local machine's clipboard over OSC 52. copyOnSelect: false is the documented opt-out and does not work on fullscreen — so there is currently no way to use the fullscreen renderer without this. Workarounds all sacrifice something: CLAUDE_CODE_DISABLE_MOUSE=1 loses wheel scroll; CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1 still requires Shift/Option to select.
Ask: make the fullscreen selection path honor the existing copyOnSelect gate.
Related (but distinct): #60755 and #29030 request copyOnSelect as a new feature — it already exists. #72455 / #70857 / #71926 / #74320 report fullscreen clipboard/selection problems generally. This is narrower and directly actionable.