Agent status
Every agent session reports one of three states, and Strado colors the tab, the chip and the row from it.
| State | Means |
|---|---|
| working | The agent is mid-turn. |
| waiting | The agent stopped and wants something from you. |
| idle | Nothing 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.
| Agent | How it reports | What Strado writes |
|---|---|---|
| Claude | Claude Code hooks | .claude/settings.local.json in the worktree |
| OpenCode | a plugin OpenCode auto-loads | .opencode/plugin/strado-opencode-status.js |
| Codex | a notify entry on the command line | nothing 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 event | Reported state |
|---|---|
UserPromptSubmit | working |
Notification | waiting |
Stop | idle |
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
workingtoidle— "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.