What happens
A coding agent that was waiting for input shows the exclamation badge on its row in the left rail. After the input is given from the desktop composer and the agent resumes, the badge stays on the row.
Where it comes from
RailSessionViewModel sets the badge from SessionStatusDots.NeedsAttention(row), which is Status == "Failed" or AwaitingInput == true, combined with SessionAttentionTracker.SessionsWithAttention for pending questions and permission requests. Neither path reacts to the composer send itself:
AwaitingInput only flips on the next status snapshot from the daemon or the next server row, so the badge outlives the send until the verdict catches up, and stays for good if that verdict never flips.
- The tracker clears a session only on an attention ping that names the request id, or on a reconciliation read; a reply typed into the composer produces neither.
Expected
Sending input from the composer clears the row's badge at once for that session, and it comes back only if a later verdict or ping says the agent is waiting again. A short optimistic clear on send, superseded by the next real verdict, is the likely shape; the tracker should also drop pending question ids that the sent reply answered.
What happens
A coding agent that was waiting for input shows the exclamation badge on its row in the left rail. After the input is given from the desktop composer and the agent resumes, the badge stays on the row.
Where it comes from
RailSessionViewModelsets the badge fromSessionStatusDots.NeedsAttention(row), which isStatus == "Failed"orAwaitingInput == true, combined withSessionAttentionTracker.SessionsWithAttentionfor pending questions and permission requests. Neither path reacts to the composer send itself:AwaitingInputonly flips on the next status snapshot from the daemon or the next server row, so the badge outlives the send until the verdict catches up, and stays for good if that verdict never flips.Expected
Sending input from the composer clears the row's badge at once for that session, and it comes back only if a later verdict or ping says the agent is waiting again. A short optimistic clear on send, superseded by the next real verdict, is the likely shape; the tracker should also drop pending question ids that the sent reply answered.