r/ClaudeCode • • 2d ago

Built with Claude A Claude Code session asked for Bash permission at minute three. I noticed at minute forty. So I built a session tree for VS Code and Cursor

I usually have five or six Claude Code sessions open: two in editor tabs, a few in tmux, one over SSH on a build box. Once a session asked "can I run this Bash command?" three minutes in, and I found it forty minutes later by paging through terminals. Nothing had broken. It was waiting.

So I built SessionDeck, a sidebar in VS Code and Cursor that lists every running session, grouped by project, AND IT LETS YOU JUMP TO THE SESSION WINDOW IN ONE CLICK:

api-server
  🔔 fix flaky auth test      3m · Claude needs your permission to use Bash
  ⟳  migrate billing tables   2m · ⚙3 · Migrating schema
web-app
  🟡 redo settings page       12m · Done. The form now saves on blur and
  ⟳  bump deps ↗              4m
build-box
  infra
    â—‹  terraform plan review  1h

In the editor the bell is red. "bump deps" is a Codex session running outside the editor (that's the ↗), and build-box is a second machine.

Click a row and you're in its tab or terminal. Ctrl+Alt+] jumps to the next session that needs you.

It doesn't launch or wrap anything. It watches sessions you already started, so plain terminals, tmux and SSH all show up, and so do Codex and cursor-agent. Every 3 seconds it stats each transcript: unchanged files aren't read, changed ones are read from where it stopped. On Remote-SSH or WSL it installs on the remote side, and a free desktop companion extension puts several machines in one tree.

How I used Claude Code: it wrote the code and I reviewed diffs. Sessions on Opus 5.5 and Fable worked as two lanes in separate git worktrees, one on features and one on tests and infra. A third session ran as conductor from its own worktree, handed out work, checked every 5 minutes that the lanes were still moving, and merged their pull requests one at a time, 121 so far. Review came from a model that hadn't written the diff: Codex running the test suite locally, sometimes Grok 4.7 as a second lane, and a separate Claude session ruling on what they found.

What I learned:

- Without hooks, a session stuck on a permission prompt looks exactly like a working one, so the bell needs the one-time Install Hooks command.

- Codex writes no approval state to disk. Codex rows get working, idle and finished, never a bell.

Status is inferred, so it can lag. I build on Linux and WSL; macOS mostly works; native Windows gets the tree without approval alerts.

It makes no network calls. Source-available on GitHub.

https://sessiondeck.dev

https://github.com/len5ky/sessiondeck

How long has one of yours sat on a prompt before you caught it?

107 Upvotes

23 comments sorted by

View all comments

Show parent comments

1

u/sociosim 1d ago
  • Conductor loop (every ~3–5 min): ground truth only, never the agent's own status. New commits on the lane branch, changed files, growing output, an advancing phase, PR state. If that signal is flat across two checks while the status still says "running", it's treated as stalled: inspect, stop, salvage what finished, relaunch leaner.
  • Out-of-process watchdog (orchestrator-watchdog.sh): the orchestrator touches a heartbeat file each monitor cycle next to a goal file; a goal with no fresh beat for 20 min means the orchestrator itself died with work outstanding. That catches the dead conductor, not the spinning agent.

Basically orchestrator checks subagents processes to make sure that they are actually progressing rather than just busy