The Tab-Hunting Problem: Finding Which Claude Code Session Needs Your Attention

You have six terminal tabs open. Claude is running in four of them. One session just asked for permission to run a bash command, but you don’t know which one. So you start clicking through tabs. Tab 1 — still working. Tab 2 — not a Claude session. Tab 3 — finished ten minutes ago, you didn’t notice. Tab 4 — there it is, waiting for approval.

Thirty seconds of tab-hunting. Not a disaster, but it happens a dozen times a day. If you’ve run more than a couple of Claude Code sessions at once, you know this feeling. The terminal gives you no signal about which tab needs attention. No badge. No notification. No color change. Just a blinking cursor somewhere in a wall of identical tabs.

Why this happens

Standard terminals weren’t built for long-running interactive agents. They were built for commands that finish in seconds. A terminal tab looks the same whether the process inside it is waiting for input, actively running, or finished an hour ago.

Claude Code’s approval system makes this worse. When Claude needs permission to edit a file or run a command, it prints a prompt and waits. But “waiting” looks exactly like “thinking” in a terminal — there’s no visual distinction. You have to read the output to know the difference.

With one or two sessions, this is manageable. You can glance at the output and know what’s happening. With five or more, it becomes a real problem. You end up doing rounds — cycling through every tab, reading each session’s latest output, figuring out which ones need you and which ones are fine.

The hidden cost: stalled sessions

The worst part isn’t the tab-hunting itself. It’s the stalled work you don’t notice.

Claude asks for approval in Tab 5. You’re focused on Tab 2. Five minutes pass. Ten minutes. Claude has been sitting idle the entire time, waiting for you to click “yes” to a file edit. Meanwhile, you thought all your agents were working.

This happens constantly with background sessions. You kick off a task, switch to something else, and forget to check back. The agent stalls on an approval in thirty seconds — and you don’t find out until you eventually cycle back to that tab.

Workarounds that don’t quite work

Auto-approve everything. You can skip all permissions, but that’s a blanket override. You lose the ability to catch destructive commands before they run. You shouldn’t have to choose between safety and speed.

Split panes in tmux or iTerm2. Better than tabs — you can see multiple sessions at once. But with four or five panes, each one is tiny. You’re squinting at the bottom line of each pane trying to spot the approval prompt.

Naming your tabs. Some terminals let you label tabs. This helps identify which project is where, but it doesn’t tell you which tab is waiting for input. You still have to click into each one.

None of these solve the core problem: the terminal doesn’t know that a process inside it is waiting for human input, so it can’t signal you.

How Crystl solves this

Crystl was built specifically around this problem. When Claude needs approval, Crystl doesn’t just print a prompt in the terminal — it intercepts the request and shows a floating approval card on your screen.

The card appears as a translucent glass panel near your workspace. It shows the tool name, the file or command involved, and Allow / Deny buttons. It’s color-coded to match the shard that’s asking, so you instantly know which session needs you.

You don’t hunt for the tab. The tab comes to you.

How the approval cards work

  • Non-activating. The card appears without stealing focus. If you’re typing in your editor, you keep typing. Click Allow when you’re ready.
  • Session-colored. Each project (gem) has a unique color. The approval card glows with that color, so even with several cards on screen, you know which project each one belongs to.
  • Batchable. When multiple requests queue up, an Allow All bar appears. One click approves everything pending.

Notifications for background sessions

Beyond approval cards, Crystl shows notifications when sessions finish or need attention. If Claude completes a task in a background shard, you get a notification. No need to poll every tab to check if things are done.

You can configure exactly which events trigger notifications in settings — task completions, agent finishes, session ends. Or turn them all off if you prefer to check manually.

The Crystal Rail as a status board

The Crystal Rail — the glass bar where all your projects live — also acts as a live status indicator. You can see which shards have active Claude sessions, which are idle, and which are waiting for input, without clicking into any of them.

This turns the multi-session workflow from a memory game into a glanceable dashboard. You know the state of every session at all times.

The difference in practice

The six-tab scenario in Crystl:

  1. Four Claude agents running across two projects
  2. Agent in Shard 3 needs approval to run a test suite
  3. A glass card slides onto your screen: “Bash: npm test in my-api” — glowing with the project’s color
  4. You click Allow without leaving your current context
  5. Agent continues immediately

Total disruption: two seconds. No tab-hunting. No focus loss. No stalled agent sitting idle for five minutes because you forgot to check.

For anyone running parallel Claude Code sessions regularly, this is the quality-of-life improvement that changes the workflow from “manageable chaos” to “actually smooth.”

Get Crystl for free and stop hunting for the tab that needs you.