dispatch
Sessions waiting on you:0finished:0· all quiet
Sign inGet early access

Docs

The Deck

What finished while you were elsewhere, what is blocked on you, and how to answer it without going to find it.

The bell means a session needs you. It does not mean the work is done.

A Claude Code session that finishes its turn goes quiet without ringing, and across six workspaces that is work completing somewhere you are not looking. Worse, a session blocked on a permission prompt prints exactly as much as one that has finished — which is nothing. Guessing from silence files the one session that is stuck on you under finished.

The activity chip

The top bar carries a chip beside the 🔔: a gold count of Claude sessions waiting on you and a green count of ones that have finished, across every workspace.

Click it — or press Ctrl+Shift+A — to open the Deck.

It only counts what you have not seen. A session you are looking at is never in the count, and one drops out the moment you visit it, so the chip reads · all quiet whenever you are on top of things rather than growing a permanent tally. A terminal minimized into the bar does not count as seen: you can read the card, not the work.

View ▸ Activity chip puts the counter away; the shortcut still works.

The list

Waiting on you first, then Finished while you were elsewhere. Each row names the terminal, its project, and which workspace it is in.

Key Does
/ Move between rows
Go there — switching tab, restoring it if minimized, clearing its flag
19 Take that option on the selected row
Send whatever you typed in the row’s reply field

Right-clicking a row gives you that terminal’s full menu without going to it first.

Everything still running is one collapsed line at the bottom, and everything you have already seen is another, because neither is asking for anything.

Each row says what that session is saying

A finished turn leads with the sentence it finished on, which the session reports itself when its turn ends — nothing is guessed at.

A session waiting on a permission prompt leads with the question, and shows the rows of its own screen that question was read from underneath it. So the summary is never the only thing you see: the command it wants to run is on the row next to the button that would approve it.

That reading is the one thing no session can report for itself, and it is deliberately the only thing Dispatch parses. It fails closed — where it can’t tell that a screen is asking something, you get the rows and no buttons, never a button for a question that was never asked.

And you answer it there

Each row has a reply field and a button per option the session printed, labelled with that option’s own words.

Answering does not close the Deck and does not move the row — you are clearing a queue, and a list that reflows after every answer makes you find your place again each time. Rows arrive while it is open; none leave until you close it. A terminal closed while you are looking at it stays too, struck through, with its controls gone.

The marks appear everywhere

Each state has one glyph and keeps it everywhere:

Glyph Means
Bell Waiting on you
Tick Finished
Trace Still working
Square The shell exited

A workspace tab holding something finished gets a green tick beside its gold waiting-count, and so does the sidebar row for the project it is in — so you can see where the work landed without opening anything.

Installing the hooks

The list is built out of Claude Code hooks, not out of guesswork. Dispatch runs a small loopback endpoint and Claude Code posts to it when a turn starts, when it ends, when a permission prompt appears and when a session goes away.

Click the sidebar’s MCP button and choose Activity hooks. It writes seven entries into ~/.claude/settings.json, keeps a backup beside it, and leaves everything else in the file alone.

Sessions already running keep the environment they started with, so restart them to pick it up.

It is installed once for your user and fires for every session on the machine — but a claude running outside Dispatch has no tile id and no token to send, so the endpoint answers it and does nothing. This cannot change how Claude Code behaves anywhere else.

If you had preferredNotifChannel: terminal_bell set purely to make Dispatch notice things, you no longer need it. The bell still works and still raises a toast — it is just no longer the only way Dispatch can tell.

Only Claude sessions are listed

A plain shell still shows its own state on its tile and its card — still running, done — quiet for 4m, finished — the shell has exited — but it never reaches the chip or the list.

It used to, and it was the reason the count was worth ignoring: a shell that prints a prompt and sits there is done after 20 seconds, which is true and useless, and a dozen of those buried the two rows that mattered.