Fleet sessions dashboard on `claude --resume` (tengu_fleet_past_sessions) renders but accepts no keyboard input (v2.1.204, macOS)
Summary
For users enrolled in the tengu_fleet_past_sessions experiment, bare claude --resume opens the new fleet/sessions dashboard instead of the classic resume picker. The dashboard renders correctly but accepts no keyboard input whatsoever — the CLI is unusable from that screen except for Ctrl+C.
Environment
- Claude Code v2.1.204 (native install, arm64 Mach-O)
- macOS (Darwin 25.5.0), Apple Silicon
- Reproduced in two different terminal emulators plus a scripted
expectpty (with CPR / DA1 / XTVERSION / kitty-keyboard queries answered),TERM=xterm-256color ~/.claude.jsoncachedExperimentFeaturesincludestengu_fleet_past_sessions(plustengu_fleet_needs_input_nudge,fleet_size, etc. in the GrowthBook cache)
Repro
- Be enrolled in
tengu_fleet_past_sessions. - Run bare
claude --resumein any project directory. - The fleet dashboard appears ("0 awaiting input · 0 working · N completed", sections Needs input / Working / Completed, footer
❯ describe a task for a new session, "? for shortcuts"). - Type anything, press
?, press arrows: nothing happens. No echo in the task box, no shortcuts panel, no navigation. Ctrl+C exits normally.
Isolation performed
| Condition | Result |
|---|---|
| ~/.claude/settings.json removed entirely | dashboard, input dead |
| settings.json = {} | dashboard, input dead |
| "tui": "default" and "tui": "fullscreen" | dashboard, input dead |
| CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 | dashboard, input dead |
| Two terminal apps + scripted pty | dashboard, input dead |
| claude --safe-mode --resume | classic "Resume session" picker, works |
| CLAUDE_CODE_DISABLE_AGENT_VIEW=1 claude --resume | classic "Resume session" picker, works |
The --safe-mode asymmetry is what pointed at experiment enrollment rather than local config.
Workaround (for other affected users)
// ~/.claude/settings.json
"env": { "CLAUDE_CODE_DISABLE_AGENT_VIEW": "1" }
restores the classic picker. claude --resume <full-session-uuid> and claude --resume "<session name>" also bypass the dashboard and work normally.
Impact / UX notes
- For the enrolled cohort, bare
--resumeis a dead end: the primary session-selection surface accepts no input. - First impression is worse than "frozen": with a busy/blocked background session on the machine, the dashboard fills with that session's status text, so users read the takeover as corruption ("my resume menu is showing garbage from another instance") and start debugging daemon/registry state.
- Two compounding paper cuts noticed while isolating (happy to split into separate issues):
--resume <value>with a non-matching id (e.g. right UUID, wrong cwd) silently falls back to search-term mode and lands in the same dead dashboard — an explicit "session not found" would save a lot of confusion.- An invalid
tuienum value causes the entire settings.json to be skipped (permissions, model, plugins silently dropped) with only a startup prompt; per-key rejection would be safer.
🤖 Generated with Claude Code
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗