Repository navigation
Replies: 7 comments 2 replies
|
Another real case for this, on nightly One detail that may help decide between the options: for Claude, the server already knows a background command will wake the agent. It just doesn't pass that on.
So option 3 (count commands for providers that wake on exit) works out the same as option 2 for Claude. A dev server started with Since that leaves no clean server-side signal, I'd lean toward option 2 (#15413): count any live background work for Working-section placement only, keeping notifications and auto-settle on #14872. The cost is that a dev server keeps its thread in Working until it's stopped, which the composer's Stop button already makes one click. |
|
A fourth option, with a working demo in #16213: one Working section, more specific row statuses. The case for a separate Waiting state is real. An agent generating code and an agent parked until a 40-minute benchmark finishes are different, and showing both as "Working" with a climbing timer hides that. "Waiting on tests" sets a clearer expectation. But I don't think waiting should decide which section a thread is in:
#16213 does the row half without changing placement. A waiting row now names what will wake the agent, using the composer strip's wording and the existing
For commands, the hard part is still the one this discussion is about: telling "waiting on tests" apart from "left a dev server running". With an explicit hold signal like #15315, a held command lands in Working and its row reads "Waiting on " with a terminal icon, through the same predicate and with no further UI change. Without that signal, I'd keep commands out of Working (option 1) rather than pin dev servers there (option 2). |
|
Another case. Server The agent started a headless Codex review as a background Bash command (
The red marks are mine: that row should have been in Working. I'd back option 2 (#15413). What I ask the sidebar is "does anything here need me?", and the answer was no. Option 2's cost is a dev server keeping its thread in Working, which is easy to see and one click on Stop. Today's cost is hidden: I open a thread that looks done, find the agent still waiting, and have to remember to come back. A per-task wait flag (as in #15315) would be cleaner long term. #15413 fixes placement now without touching alerts or auto-settle. |
|
Another case on desktop The agent fanned out 8 threads, then started a background Bash command ( Nothing in that thread needs me. The orchestrator pattern (launch threads, wait on them with a background command) makes the "looks done but isn't" row especially misleading: the parent looks finished while its children are visibly still working. +1 for option 2 (#15413). |
|
#15413 was closed under the prior-approval rule, so here is the decision I'm asking for. Four reports above show agents waiting on their own background commands while their threads land in the inbox. Three of the four commenters (@coygeek, @pascalandy, @syamilj) back option 2. @saphid prefers option 1 until an explicit wait signal exists. A wake-on-exit flag can't separate the cases, because Claude also wakes when a dev server exits (see @coygeek). The real choices are:
@juliusmarminge @t3dotgg, which direction would you approve? I'll update or reopen a PR to match. |
|
Another option for an explicit wait signal: let the agent declare the wait, not the user. The agent is the only party that knows whether it is waiting on a command or leaving it running. Claude already returns the task ID T3 tracks on the roster ("Command running in background with ID:
Per provider: Claude works as described. Codex and Grok need a check that the ID the agent sees matches the roster entry; where it doesn't, the tool would report "not supported" rather than guess. @juliusmarminge @t3dotgg, would you approve this direction? If so, I'm happy to open a PR. Note Written by Claude Opus 5.5 in Claude Code (via T3 Code) |
|
Another case, desktop on macOS, Claude thread. The agent pushed a fix, started a From the sidebar, I need to tell "waiting on something, don't look yet" apart from "done, ready for me." Right now a thread waiting on CI looks the same as a finished one, so I open it, find nothing to do, and have to remember to come back later. I'd rather see an occasional dev server show "Waiting" than have threads that are really waiting look finished. An agent-declared wait, as suggested above, would cover both cases. Until that exists, Claude commands that wake the agent when they exit should count as waiting. |



Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
With the Working section beta on, a thread leaves Working as soon as its turn ends if the only thing left running is a background command. The composer still shows "Running: ..." with a Stop button, but the sidebar treats the thread as done.
That's right for a dev server the agent started and walked away from, and it's why #14872 stopped commands from holding completion. But agents also use background commands to wait. With Claude, a background Bash re-invokes the agent when it exits. I had a thread start one to wait out a lockout and then rerun QA. It dropped into my inbox right away, though nothing needed me yet.
The server can't tell those two cases apart. So the question is what the Working section should optimize for:
Here is a live Claude thread that started
sleep 1800in the background and ended its turn, with the Working section beta on:PR #15413 implements option 2 as one change in
isThreadWorking, with before/after screenshots. I'm happy to switch to another option or close it if you'd rather keep the current behavior.All reactions