Skip to content

Rethink attention model: focus on 'waiting for me' vs ambient noise #117

@maxbeizer

Description

@maxbeizer

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:

  1. It's waiting for my input (e.g., needs a decision, PR review, approval) — I should act
  2. It's genuinely stuck (crashed, hit an error loop, lost its way) — I might want to dismiss
  3. 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 + runningunclear — 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"?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions