`claude -r` picker accepts no keyboard input in 2.1.204 (works in 2.1.202)
Bug report: claude -r picker accepts no keyboard input in 2.1.204 (works in 2.1.202)
Summary
After updating to 2.1.204, the claude -r session picker (the new
agents/tasks home screen) accepts no keyboard input at all - not just
arrows. The cursor sits and blinks; no key does anything. The only thing that
responds is the tmux prefix hotkey (C-a), and that only works because tmux
intercepts it upstream, before the key ever reaches the pane. In other words
the picker process appears to receive nothing from stdin. Rolling back to
2.1.202 restores full keyboard input in the picker. The regression is
isolated to the picker UI; keyboard input works normally inside a running
(already-resumed) session on both versions.
Works vs. doesn't
- Works ->
$HOME/.local/share/claude/versions/2.1.202 - Doesn't ->
$HOME/.local/share/claude/versions/2.1.204
Both invoked identically as <path> -r from the same shell, same tmux pane,
same working directory. Only the binary differs.
Steps to reproduce
cdinto a directory that has resumable sessions.- Run
$HOME/.local/share/claude/versions/2.1.204 -r. - The picker (agents/tasks home screen) appears with the session list.
- Press any key - arrows, letters, Enter, etc.
Expected: the picker responds (selection moves, input registers).
Actual: nothing registers; cursor just blinks. No key does anything. The
only input that has any effect is the tmux prefix (C-a), which tmux handles
itself before forwarding to the pane - so the picker process itself is getting
no keyboard input.
Running $HOME/.local/share/claude/versions/2.1.202 -r in the exact same
context, the keyboard works normally and sessions can be selected/resumed.
Scope / what was ruled out
- Not tmux pane focus. The picker was the active tmux pane; keyboard input
is dead regardless of focus. A normal session in an adjacent pane accepts
keyboard input at the same time. Focus makes no difference to the picker.
- Not tmux config. Same tmux server and config drives both the working and
non-working panes. A fresh throwaway server behaves the same.
- Not hooks. Only hook configured is a
PostToolUseBash logger, which
cannot affect key input in the picker.
- Not tty state.
stty -aon the picker's pts is identical to a working
pane's pts (same rows, same control chars).
- Only variable that changes behaviour is the binary version (2.1.202 vs
2.1.204).
Notes
- On 2.1.204 no keystrokes reach the picker at all (only the tmux prefix, which
tmux handles before the pane). This looks like the new agents/home UI is not
reading stdin from the controlling tty - possibly the daemon / bg-pty-host
stack is grabbing or not wiring up the tty - whereas 2.1.202 uses the flat
resume list and reads input normally.
- Process tree while the 2.1.204 picker is open shows the new daemon stack
(personal paths / session ids redacted):
````
claude -r (foreground on the picker's pts)
└─ claude daemon run --origin transient cwd=<CWD>
├─ claude bg-pty-host <daemon>/spare/<hash>.pty.sock 200 50 -- \
│ ~/.local/share/claude/versions/2.1.204 --bg-spare <daemon>/spare/<hash>.claim.sock
├─ claude bg-pty-host <daemon>/pty/<hash>.sock 221 29 -- \
│ ~/.local/share/claude/versions/2.1.204 --session-id <SESSION-ID> --agent claude
├─ claude bg-spare --bg-spare <daemon>/spare/<hash>.claim.sock
└─ ~/.local/share/claude/versions/2.1.204 --session-id <SESSION-ID> --agent claude
The foreground claude -r (the picker) owns the pts, but a background
bg-pty-host / --agent claude session is also alive under the daemon.
Environment
- Claude Code: 2.1.204 (regressed) vs 2.1.202 (works)
- Install method: native (
~/.local/bin/claude, autoUpdates off) - Hostname:
gradeffe uname -a: `Linux gradeffe 6.17.0-35-generic #35~24.04.1-Ubuntu SMP
PREEMPT_DYNAMIC Tue May 26 19:30:42 UTC 2 x86_64 x86_64 x86_64 GNU/Linux`
- Terminal emulator:
XTerm(390) - Terminal multiplexer:
tmux 3.4 - TERM inside tmux: tmux-256color; outer terminal reports xterm-256color
- Version landed: 2.1.204 installed 2026-07-08 (~1h before the issue surfaced);
last working picker was on 2.1.202
Workaround
Pin the launcher back to 2.1.202 via a shell alias:
alias claude='$HOME/.local/share/claude/versions/2.1.202'This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗