Ten Claude Code sessions are open and nine are silent. One is stopped on a question you have not read. One finished twenty minutes ago. One is waiting on another session and needs nothing.
Every status names one action, so the list answers that from outside: which one to answer, what you still owe, which tab is safe to close.
Open one session out of ten
Every state had to pass one test: one state, one distinct action. Busy fails it, and so does “quiet for a while”, which measures your scanner, not the work.
What survives reads as instructions, not descriptions.
| The row says | What it means | What you do |
|---|---|---|
| 🙋 waiting on you | A turn is stopped on a person | Answer it now. The only state that pushes, and the only orange in the list |
| 📥 owes a decision | Something is owed while other work carries on | Pay it or clear it. It never pushes; it ages, and the age is the risk |
| ⏳ waiting on another Session | A peer, a file release or its own live child has to move first | Usually nothing. If it stays, somebody has to go and unwedge it |
| 🔜 holding | An event, a clock or something it already started will move it | Nothing. Unlike the one above, this cannot wedge |
| working | It is executing right now | Nothing. The live line says what |
| 📭 ready | It says it can accept work | Hand it something. This is not a claim to have finished |
| unknown | There is no positive evidence either way | Nothing is being asked of you |
| ✓ delivered | A result arrived with evidence behind it | Review it. Landing may still remain |
| ✓✓ landed | That task scope reached its target | Check the closing badge separately before you close anything |
The state vocabulary is the reference version, and reading the Session list covers the same marks in the browser. A row carries four independent answers, and why four is its own piece.
Stop checking the session that is waiting on another session
A notification when a pane goes quiet is enough for two sessions, and stops being enough once they depend on each other. One waiting for your answer and one waiting for another session are equally silent, and want opposite things from you.
The hourglass row hands time back. It is blocked on a peer, a file release or its own live child, so you stop opening it to see whether it moved.
Four rows from a Session list. Every project, title and tty here is invented for the page.
A row waiting on the same session since lunch is a different matter: that one is wedged, and only a person unwedges it.
Review a claim instead of working out what happened
A session reporting its own work finished is not proof. It is worth a lot anyway: it is a claim with a name on it. Without one you reconstruct what happened from the output. With one you check a single thing.
That is why the two completion marks are evidence-only. A session may never mark its own work complete. It can declare itself ready or holding, and the row prints that as the session’s own word. Claiming delivered or landed is refused by name, so the claim can never stand in for the check. Delivered, reviewed and landed are three separate facts to begin with.
Tell a closeable tab from a calm-looking one
Ready means able to accept work. Safe to close means able to end without losing anything. Reading one off the other is how somebody closes a tab that still owed something.
So closing carries its own badge. Do not close when the app can name an obligation. Ask that session when only it can account for its local work. The button may proceed when both hold. Take a fresh reading when the evidence is stale.
The fourth outranks the first. Stale evidence makes the list’s completeness unknown, and an incomplete list gets read as a checklist.
Hand work out and still see what you are carrying
Work you dispatch lands back on your own row. A Root with a live Child Session under it carries an obligation whatever its own terminal is doing.
One Root and the Child Session it dispatched. Both names, both paths and both ttys are invented for the page.
Closing that Root cancels every live task it dispatched, and four half-finished tasks ended that way here in fourteen seconds. So what a close costs is computed at the press, and the app refuses until you accept the list.
Naming who picks up each orphan stays a person’s job. A child cannot hand work on again, which is a limit worth its own piece. Stopping one on purpose is not the same event as losing it.
What the list still will not tell you
Unknown is common here, and it is supposed to be. It is not a failure and not an offline marker. The evidence was incomplete, and a grey italic row asks nothing of you.
Holding is refused unless the session names its next step and a mover that is not a person. Genuine holds are rare; if the state became common, the specification would be wrong.
The audit that would go and ask an unknown row what it is doing does not exist yet. Take the test to your own list: name the single action for each of your states.