Status now comes straight from Claude Code instead of from hooks.
Breaking changes
- Requires Claude Code >= 2.1.139 (for
claude agents) andjq. - Remove the
tmux-claude-session-managerhooks block from~/.claude/settings.json.scripts/state.shis deleted, so those hooks now invoke a script that no longer exists and will fail on every event.
Features
-
Read agent status from
claude agents --json. Each Claude session self-reports its state to a supervisor daemon, so the plugin no longer needs Claude Code hooks to track status —state.shand the@claude_state/@claude_state_attmux options are gone.Identity is now the Claude process rather than the tmux session. Previously a session name was a hash of the project path, so a project mapped to exactly one row and concurrent agents overwrote each other's state. The new
scripts/agents.shjoinspid→tty→ pane, so several agents in one project each get their own row — as does a Claude you started by hand in an ordinary pane, which#{pane_current_command}cannot detect (on macOS a pane reports its parent shell, never theclaudechild).Rendering now costs three subprocesses regardless of how many sessions or panes exist, down from three tmux calls per session.
-
Add a
@claude_argsoption for passing extra CLI parameters to launched sessions (e.g.set -g @claude_args '--dangerously-skip-permissions') -
Stack the preview above the list and pin it to the end using fzf's
followflag, so you see each pane's latest output rather than old scrollback
Docs
- Fix the
jqURL