Add keyboard-only copy mode (no mouse required to start a selection)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 17, 2026

Summary

The TUI has selection:extendUp, selection:extendDown, selection:extendLineStart, selection:extendLineEnd, selection:copy, and selection:clear actions, but no way to begin a selection from the keyboard. The only entry point is a mouse drag. This means pure-keyboard users (and anyone in a mouse-hostile environment like SSH without forwarding) cannot select or copy text from the transcript at all.

Request

Add a selection:start action (or equivalent) that enters a copy mode from the keyboard, placing a cursor in the transcript at the current scroll position so the existing extend* and copy actions can take it from there.

Something like tmux's copy-mode (Prefix + [) or vim's visual mode (v). The exact binding is your call, but the key point is a keyboard-triggered transition from "scrolling" to "selecting."

This would also help address the tmux scrollback problem raised in #60185, #67552, and #67289. If the TUI has its own native copy mode, users no longer need to fall back to tmux's scrollback buffer to extract text, which sidesteps the alternate-screen conflict entirely.

Related issues

  • #66797 requested exactly this for the Desktop Chat app but was closed as wrong repo. The ask applies identically to the Code TUI.
  • #60185, #67552, #67289 are tmux users who lost scrollback copy-mode when the TUI moved to an alternate screen. A native copy mode would make those workarounds unnecessary.
  • #61021, #62462, #69704 report mouse-based copy broken on several platforms, making the mouse-only entry point doubly painful.

The infrastructure is clearly there (the extend/copy/clear actions exist and work once a selection is mouse-initiated). This is just the missing first step.

Environment

  • macOS, Alacritty (no tmux), latest Claude Code
  • Reproduced: Fn+↑ scrolls the transcript, but cursor stays in the prompt. Shift+arrows do nothing. Mouse drag does create a selection that Shift+arrows can then extend, confirming the issue is purely about initiation.

View original on GitHub ↗