The One-Icon Bottleneck

Picture your screen during a heavy coding session. In one terminal tab, Claude Code is refactoring a React component. In another, Codex is rewriting a Python module. A third agent is generating unit tests, a fourth is waiting on an API key, and a fifth just finished a background linter pass. Your menu bar—or whichever system tray you use—has room for exactly one status icon. One tiny dot or label is supposed to represent the entire swarm. The question is which session earns that spot.

The lazy answer is to show whichever session moved last. It feels rational. Something happened, so it bubbles up. That instinct is wrong, and it will cost you. A background file watcher updating a timestamp is not a cry for help. Meanwhile, a session that hit a permission error ten minutes ago could be sitting invisible, waiting for you to type "yes" or fix a path. If you rank by recency, you hide the very thing that needs your brain. You need to rank by actionability.

Why Recency Fails

Developers reach for timestamps because they are easy. Every system produces them, every database indexes them, and sorting is a single line of code. But easy stops being useful the moment you start orchestrating multiple independent workers.

Here is a concrete failure mode. Session five just appended a log line because its dependency watcher noticed a file change in node_modules. Its timestamp refreshed to now. Session two, however, asked you a question three minutes ago: "Should I install this package? (y/n)". You have not answered. If your menu bar shows the newest session, session five gets the green glow and session two vanishes into the list. Nothing looks broken. Yet one of your agents is stalled on your decision while you are busy monitoring a linter that does not need you.

Recency measures motion. Urgency requires meaning. A file write has no inherent meaning unless it creates a task for you. A waiting prompt, on the other hand, is pure actionability. You cannot ship code by watching things change in the background. You ship it by clearing blockers. The first shift in thinking is simple: treat the timestamp as a tiebreaker, never as a primary signal.

Classify First, Sort Second

A better approach is a two-step filter. First, label every session based on what it needs from you. Second, rank those labels. Only if two sessions share the same label do you glance at the clock.

This forces you to define what "urgent" actually means inside your workflow. A rate-limited session is not urgent; it is asleep. A working session is busy, but if it does not need a decision, it can keep computing in peace. A stalled session is urgent because errors rot. An unanswered handoff is urgent because you literally own the next step and the agent cannot proceed until you act.

Classification turns your menu bar from a news feed into a task list. The ranking step then becomes mechanical. You already decided that a blocked worker outranks a busy one. You already decided that an unseen question outranks a seen one. Time enters the picture only when two sessions are crying out at the same priority level. Then, and only then, does the older one win. It is a small mercy for first-come, first-served fairness, but it should never override the state itself.

A Practical Priority Scale

In Agent Island v1.7.1, the team formalized this into a five-point scale that anyone running multiple AI sessions can borrow:

  • Unacknowledged needs-you: 4. The session has handed something back to you and you have not yet seen it. You own the next move.
  • Stalled: 3. The session hit an error, a permission failure, or another blocker. It needs your eyes because it cannot self-heal.
  • Working: 2. The session is actively computing. It is not waiting on you, so it gets the icon only if nothing more urgent exists.
  • Acknowledged needs-you: 1. You have already seen the prompt or question but have not answered it yet. You are aware, so the urgency drops a notch below unseen interruptions.
  • Idle or rate limited: 0. The session is ambient noise. It is waiting for its turn or simply doing nothing.

This scale maps cleanly to user action. When you clear a handoff, the session drops to working or idle. When a working session errors out, it leaps to stalled. When you click to acknowledge a prompt but need