Problem
The ATTENTION tab currently flags sessions that are idle for 20+ minutes while still "running." But idle ≠ waiting for input. An agent can be idle because:
- It's waiting for my input (e.g., needs a decision, PR review, approval) — I should act
- It's genuinely stuck (crashed, hit an error loop, lost its way) — I might want to dismiss
- It's just slow (long build, waiting on CI, large codebase) — Nothing to do, not actually a problem
Right now the UI treats all three the same way ("⚠️ idle 23m — check logs"), which means the ATTENTION tab becomes noisy with false positives. Users learn to ignore it.
What the user actually wants to know
The core question is: "Is anything waiting on ME right now?"
needs-input status → yes, clearly waiting on me ✅ (already handled well)
failed status → yes, I need to decide what to do ✅ (already handled well)
idle + running → unclear — this is where the noise lives
Possible directions
Option A: Separate "waiting for me" from "ambient monitoring"
Split the ATTENTION tab concept into two mental models:
- ACTION NEEDED — only
needs-input and failed sessions. Small count, always worth checking.
- IDLE WATCH — sessions that have been quiet a while. Informational, not urgent. Could be a separate badge style (dimmer, no ⚠️) or a separate filter.
Option B: Smarten the idle heuristic
Instead of a flat 20-minute threshold, look at signals:
- If the session has a PR open and CI is running → probably fine, downgrade to "in progress"
- If the session has
needs-input anywhere in its recent log → escalate
- If it's been idle for 2h+ with no PR → more likely stuck
This is harder and depends on data availability from gh agent-task.
Option C: Just lean into dismiss
Accept that idle sessions are noise. Make dismiss easier/faster:
- Bulk dismiss (select multiple, dismiss all)
- Auto-dismiss after configurable idle time (e.g.,
auto_dismiss_after: 4h in config)
- Change the idle badge to just "💤 idle 23m" (no alarm emoji, no CTA) — informational only
- Reserve ⚠️ exclusively for
needs-input and failed
Option D: Combination
- Drop ⚠️ from idle sessions (Option C) — they're informational, not actionable
- Keep ATTENTION tab for
needs-input + failed only (Option A)
- Add auto-dismiss config (Option C)
- Show idle sessions with a gentle "💤 idle 23m" badge in the normal list, no alarm
Recommendation
Option D feels right. The key insight is: idle is not the same as needing attention. Only needs-input and failed should trigger the attention model. Everything else is monitoring.
Questions to resolve
- Should idle sessions still sort higher than active ones, or should active sessions always be on top?
- Is auto-dismiss useful, or is manual dismiss sufficient?
- Should we differentiate "idle but has open PR" from "idle with no output"?
Problem
The ATTENTION tab currently flags sessions that are idle for 20+ minutes while still "running." But idle ≠ waiting for input. An agent can be idle because:
Right now the UI treats all three the same way ("⚠️ idle 23m — check logs"), which means the ATTENTION tab becomes noisy with false positives. Users learn to ignore it.
What the user actually wants to know
The core question is: "Is anything waiting on ME right now?"
needs-inputstatus → yes, clearly waiting on me ✅ (already handled well)failedstatus → yes, I need to decide what to do ✅ (already handled well)idle + running→ unclear — this is where the noise livesPossible directions
Option A: Separate "waiting for me" from "ambient monitoring"
Split the ATTENTION tab concept into two mental models:
needs-inputandfailedsessions. Small count, always worth checking.Option B: Smarten the idle heuristic
Instead of a flat 20-minute threshold, look at signals:
needs-inputanywhere in its recent log → escalateThis is harder and depends on data availability from
gh agent-task.Option C: Just lean into dismiss
Accept that idle sessions are noise. Make dismiss easier/faster:
auto_dismiss_after: 4hin config)needs-inputandfailedOption D: Combination
needs-input+failedonly (Option A)Recommendation
Option D feels right. The key insight is: idle is not the same as needing attention. Only
needs-inputandfailedshould trigger the attention model. Everything else is monitoring.Questions to resolve