Agents & automation
Runs
Runs is the one place that answers three questions: what needs me, what is working, and what finished while I was away. It lists every kind of run together: your chats and code sessions, background sessions, Fleet lanes, loop runs, and sessions driven from a phone. It replaces the Fleet pill, the Loops pill and the Runs Inbox pill that used to sit in the top bar.
The four sections
| Section | What is in it |
|---|---|
| Needs you | Runs that are blocked on a person. Each row says why, in words, on the right (see the next block). |
| Working | Runs that are going now, with what they are doing (Thinking, Running command, Editing file) and how long they have been going. A run with sub-runs shows 2 of 3 done. |
| Done | Runs that finished while you were not looking and that you have not opened yet. The row says where it ran (Local, Worktree, Fleet, Telegram), how it ended (Finished, Failed or Stopped, with a symbol) and carries a verification chip. |
| Recent | Everything else, newest first, 50 at a time with a Show more button. A run that ended in failure or was stopped says so here too, so it never looks finished. |
Sections can be collapsed, and Runs remembers which ones. A section with nothing in it keeps its header and says so (Nothing needs you.), so the four words are always in the same place. Every state is written as a word in the row, never only as an icon or a colour.
Why a run is in Needs you
A run is in Needs you only while something real is blocking it, and it leaves the moment that thing is decided, by you, by another device, or by a timer.
| Row says | What is waiting |
|---|---|
Approve shell, Approve edit, Approve plan |
A tool or plan approval. The command or file is in the row's tooltip, not in the row. |
2 questions (1 question) |
A clarification the agent asked, or a question it posted with ask_user. |
Review diff |
A finished run in its own worktree whose changes you have not applied or discarded. |
Loop parked |
A loop run that stopped for your review. |
Loop failed |
The loop's latest run failed. It stays until a newer run of that loop replaces it, or you archive or delete that session. |
Below the bar |
The loop's latest run finished but missed its verification bar. Same rule. |
Choose winner |
Every lane of a parallel run finished and none has been picked. |
Merge conflict |
A sub-run could not merge. |
App access: Finder |
Desktop control is waiting on your permission for an app. |
The list is computed from what is actually blocking, not from a label a run last wrote, so a run that crashed with an old "waiting" label does not sit in Needs you forever. Approving from the Agent panel removes the row immediately, without a refresh.
Seen, and what "Done" means
Done is "finished while you were not looking". A turn you watched finish, in the window you were using, never appears there: it goes straight to Recent.
Opening a Done run (or keeping it open for a second) marks it seen. The mark is shared: if you open a run from the phone, it is seen on the desktop too. An opened Done row stays where it is, with a check and the word Seen, until you next come back to Runs (the next time it is shown, or the window regains focus). Then it moves to Recent. Nothing ever moves out from under your cursor.
Press M on a Done row to mark it seen without opening it.
Opening Runs
- Code mode: the tray icon in the activity bar, or
Ctrl+Shift+U(press it again to close the sidebar). The icon carries one badge: how many runs need you. It does not count working runs. - Chat mode: the Runs tab of the sidebar, labelled
Runs · 3when three need you. The search box at the top of the sidebar searches runs while that tab is open.
Clicking a row opens that session in the Agent panel (Code mode) or the chat (Chat mode). A chat session opens in Chat mode and a code session in Code mode, switching mode if needed.
Runs does not make a sound or show a toast. If you want a desktop notification when a Fleet lane or a loop finishes, that is Settings → Automations → Background runs → desktop notifications, unchanged.
Starting a run from Runs: New ▾
The New ▾ button in the Runs header (Code Mode panel, and the top of the Runs tab in Chat Mode) starts something without the composer:
- Background run… - a task in its own worktree (or this folder, per the project's background defaults). It creates a fresh session in the project.
- Parallel run… - the same task in 2 to 4 lanes, with a model per lane if you want, then compare.
- Loop… - a new loop on a schedule or when a comment keyword appears.
- Fleet dashboard and All loops · n - the Fleet and Loops panels.
The first three need a project folder and say so when there is none. Each sheet reports a problem inside itself; a run that started simply appears in the list.
The verification chip
A finished run shows how its result was checked: Passed, Repaired (it failed a check and was fixed), Unverified (no checks ran, or the checks could not grade it), or Failed. The word is the signal; the dot beside it only repeats it. Hover the chip for the score. These words are the same ones used everywhere Bodega reports a check, which is QEL, the Quality and Evidence Loop; the interface says "verification" and keeps the acronym for this tooltip.
Keyboard
The list is a tree with one tab stop: Tab enters it once and leaves it once.
| Keys | Action |
|---|---|
↓ / ↑ |
Next / previous run, across sections |
Alt+↓ / Alt+↑ |
Next / previous section header |
Home / End |
First / last run |
→ |
Expand a run with sub-runs; on an expanded one, go to its first child |
← |
Collapse; on a child, go to its parent |
Enter |
Open the run |
Space |
Expand or collapse a run, or a section when its header is focused |
A |
Go to the approval of a run that has one waiting |
S |
Stop a working run (no confirmation: sending again resumes the work) |
M |
Mark a Done run as seen |
/ |
Search (Esc clears it and returns to the list) |
Shift+F10 / Menu |
Open the context menu |
Esc |
Return to the editor (Code mode) or the composer (Chat mode) |
Letters typed quickly jump to a run whose title starts with them. A, S and M are commands when they start a word and ordinary letters after that.
The right-click menu
An item that does not apply to a run is not shown, so there is nothing greyed out to explain.
- Any run: Open, Copy session id.
- Waiting on an approval: Approve… (opens the session on the approval card, it never approves from the menu).
- Waiting on a question: Answer….
- A diff to review: Review diff, Apply changes…, Discard worktree… (all open the Fleet panel, where the diff and the confirmation are).
- Working or queued: Stop.
- Finished and unread: Mark seen.
- A Fleet lane or a loop run: Open in Fleet, Open in Loops.
- Finished or idle: Pin or Unpin (pinned runs sort first in their section), Archive.
- Any run: Delete…, which asks first and whose safe choice is Cancel.
Open in a split, Move to background, Run now and Take over here are not in the menu yet.
Search
Typing in the search field filters all four sections in place by title, by the kind word (Chat, Fleet, Loop) and by the reason word (approve shell). A section with no match says No matches, and its count reads 2 of 7. Search never changes which run is open and never marks anything seen.
Under the hood, and from the terminal
The list is served by GET /api/sessions/attention and kept current by status frames over the app's single WebSocket, so a status change reaches Runs without polling; once a minute Runs re-reads the list and records a [reconcile] attention_drift line in the developer console if push ever missed one. PATCH /api/sessions/:id/seen is what marks a run seen.
The bodega terminal client does not have commands for this list yet. The routes above are the contract a later CLI release reads (bodega sessions for the list, bodega attach <session> to follow one, bodega sessions seen <id> to clear unread).
Your settings
Two settings belong to this view, and both are yours, not the project's: ui.runs.collapsed (which sections you collapsed) and ui.runs.pinned (the runs you pinned).
Keyboard shortcuts
| Keys | Action |
|---|---|
| Ctrl+Shift+U | Show or hide Runs |
| ↓ / ↑ | Next / previous run |
| Alt+↓ / Alt+↑ | Next / previous section |
| Enter | Open the run |
| A | Go to the approval |
| S | Stop the run |
| M | Mark as seen |
| / | Search runs |
This page mirrors the in-app docs hub for app version 1.0.0-beta.46. Found something unclear or out of date? Tell us on Discord. New here? Download the free beta and follow along.