Agent status

Every agent session reports one of three states, and Strado colors the tab, the chip and the row from it.

StateMeans
workingThe agent is mid-turn.
waitingThe agent stopped and wants something from you.
idleNothing in flight.

Nothing to set up

Strado installs the reporting itself, per worktree, each time you open that agent in it. There is no configuration step and nothing to add to your dotfiles.

AgentHow it reportsWhat Strado writes
ClaudeClaude Code hooks.claude/settings.local.json in the worktree
OpenCodea plugin OpenCode auto-loads.opencode/plugin/strado-opencode-status.js
Codexa notify entry on the command linenothing on disk

Note

Both files Strado writes are added to the worktree's git exclude, so they never show up in git status. They are ordinary files in your worktree — you can read them, and an old one left behind by a moved install is pruned and rewritten rather than fired blindly.

For Claude the three hooks map like this:

Hook eventReported state
UserPromptSubmitworking
Notificationwaiting
Stopidle

Per session, not per worktree

Each session's process carries a STRADO_SESSION_ID, and the status post includes it. So Claude 2 turning waiting does not overwrite what Claude 1 is doing.

The worktree-level state you see in the sidebar is an aggregate of its sessions, resolved in this order: any session working makes the worktree working; otherwise any session waiting makes it waiting; otherwise idle.

That distinction is also why notifications diff per session. Watching only the aggregate would swallow session 2 going waiting while session 1 is still working.

Notifications

In the desktop app, two transitions raise a notification:

  • A session entering waiting — "needs your input".
  • A session going from working to idle — "finished".

Headless installs advertise no notification capability and raise none.

When status never appears

Two things are worth knowing when a chip stays stubbornly idle.

The status post carries the agent's working directory, and the server refuses it unless that directory belongs to a repo registered in one of your workspaces. An agent started in a directory Strado does not manage reports nothing, by design.

The reporting is also deliberately fragile in one direction: it gives the server about a second, swallows every error, and always exits successfully. It will never stall your agent to deliver a status. A server that is down or busy produces no update at all.

Time tracking rides along

An agent turn counts as hands-on time on that worktree even while you are not typing. The prompt-submit and turn-complete reports bracket the working period, and the tracker treats them as activity.

Where to go next