ccdeck

See which Claude Code session is waiting for input

To see which Claude Code session is waiting for input, press L in ccdeck: the session list puts sessions stopped on a permission prompt or a question first, then finished turns, each with how long it has waited, and W goes to the prompt or question waiting longest.

Claude Code only Checked against ccdeck 3.81.3 on

You will

Before you start

Steps

  1. Open the session list

    Press L, or click the session list icon on the stripe on the left. A session stopped on you moves to the top, and shows how long it has waited in place of its run time.

    At the left edge, the stripe: icons for Accounts, Account capacity and Reset calendar, a rule, then the session list icon, which has a line beside it while its panel is open. Next to it, the session list, headed Sessions 4, 2 waiting and 3 live: web-api waiting 6m · Bash, docs-site waiting 2m · Write, data-pipeline your turn 12m, and infra with a run time of 13m. Under web-api, docs-site and infra, a line says what each is doing, such as now Add rate limiting to the public API.
    Demo data Two prompts at the top, the older one first, then data-pipeline’s finished turn.

    Permission prompts and questions come first, then finished turns waiting for your next instruction. Within each, the longest wait comes first.

    Claude Code only. Codex records no approval request, so a Codex session is never marked waiting. Check its terminal, as Set up ccdeck for Codex CLI explains.

    More about what counts as waiting
    • A permission prompt: Claude Code wants to use a tool and will not go on until you answer.
    • A question the agent stopped to ask you.
    • A finished turn waiting for your next instruction. Claude Code reports it about a minute after the turn ends.

    So a turn that finished 12 minutes ago stays below a prompt from 2 minutes ago. The tool name after the time is the deck’s guess, not something Claude Code reports: the newest call still running when the prompt arrived, if it started within 30 seconds of it. Hover the time to read Claude Code’s own sentence. A session that sends nothing for 90 minutes stops showing as waiting.

    A background session, started with claude --bg or from claude agents, shows Claude Code’s own line under its row: the question it is stuck on and the reply Claude Code suggests.

  2. Go to the session that has waited longest

    Click the amber 2 waiting in the topbar, or press W. Both cover prompts and questions, not finished turns.

    The left of the topbar: ccdeck and its version, v3.81.3, then 2 waiting in amber, with a dot before the number, then web-api 6m · Bash and docs-site 2m · Write.
    Demo data Two sessions are on a permission prompt, and the topbar names both.

    The deck selects that session, brings its card on screen and opens the detail panel. Each press of W after that goes to the next waiting session. To go to a particular one, click its name after the count.

    More about the count

    While the count is above zero, the browser tab reads “(2) ccdeck” and its icon has an orange dot in its corner, so you see it from other tabs. The count goes away when nothing is left to count.

    When not every name fits, the names end in +1 more, or however many are left, which opens the session list. On a phone the topbar shows the count alone.

    A link such as Claude · partial outage may sit just before it. That is Anthropic’s or OpenAI’s status page reporting an incident on something your sessions use, not a session waiting on you. It opens that status page.

    In a terminal, npx ccdeck sessions lists the same sessions first, and npx ccdeck tui shows them under Waiting on you, as Use ccdeck from a terminal or over SSH explains.

  3. Read the card, then answer in the terminal

    For a prompt or a question, the card gets an amber row under its title. It holds the start of Claude Code’s sentence and a clock; hover it for the whole sentence.

    The web-api card, selected: LIVE and its name; under them session, → 4, Opus 5 and its run time, 14m 18s; its title; then an amber row reading “Claude needs your permission …” with 6m 17s beside it.
    Demo data The row keeps the clock and cuts the sentence to fit the card.

    For a finished turn, the row reads Your turn. If Claude Code stopped the turn on an expired login, a usage limit or an API error, it reads Stopped and why; hover it for what to do. Answer in the terminal where Claude Code is running. The row goes away as soon as the session moves again.

    ccdeck cannot answer for you. Its hook only forwards events, so it cannot allow, deny or reply.

    More about the row

    For a question, the sentence is the question. A prompt or a question has a pulsing dot. Your turn is in the session’s own colour, with a still dot. Stopped is red, with a still dot, and needs Claude Code 2.1.78 or later. On a background session, started with claude --bg, it has a Continue button that runs the turn again.

    Zoomed out, a card shrinks to its name and one line. For a prompt or a question that line is the same sentence, or Needs you or Asked you where it does not fit, and the card and its session’s label carry a warning triangle. For a finished turn it reads Your turn, and for a stopped one, why it stopped.

  4. Set up the sounds

    Click Settings at the right of the topbar, or press Cmd + , (Ctrl + , on Windows and Linux), then click Sounds. V opens Settings there. Sounds start on, at 50%, and M turns them on or off from anywhere.

    • Turn finished plays when a Claude Code or Codex session finishes a turn.
    • Claude is asking plays whenever Claude Code sends a notification: a prompt, a question, or the reminder about a finished turn.

    Each tone has its own Volume, Tone and Hear it. Sounds play only from an open deck tab.

  5. Turn on notifications for when you are away

    In Settings, click Notifications, then the Notifications while closed switch. It is off by default. If the browser asks for permission, allow it.

    Settings open at Notifications. Down the left, a Search settings field over General, Appearance, Text & density, Keyboard, Notifications and Sounds, then Integrations, Data, Claude Code and Radar, then About. On the right, under the heading Notifications, the group While the deck is closed holds Notifications while closed, on, with the note With no deck tab open, get a notification wherever a sound would have played, and Browser notifications, Enabled; the group Accounts holds Account auto-switched, on, Quota at 90% and 100% and Quota reset, both off, and Sessions stopped on login or limit, on. Open the full-size picture
    Demo data The switch on, and the browser has allowed notifications. That notification state was supplied to the page for this picture.

    Nothing appears while the deck is on screen. With its tab hidden, each new prompt or question brings a browser notification. Click it to go back to that session.

    More about the notifications
    • A browser notification’s title is the session’s name, and its text is Claude Code’s sentence and “Likely on: …”. Prompts already there when the page opened, when you turned the switch on, or when you allowed notifications, are not announced.
    • With no deck tab open, the deck shows a system notification wherever a sound would have played: Claude Code prompts, questions and finished turns, and Codex finished turns. At most three come in a minute; the rest arrive as one “2 more sessions need you”.
    • If Browser notifications shows an Enable button, the browser’s question was dismissed. Click it to ask again.
    • The section’s four account switches are separate from Notifications while closed: whether the deck is open or not, they tell you about the Claude and Codex accounts you are on, such as Sessions stopped on login or limit. The two quota switches start off, the other two on.

If something goes wrong

No session ever shows as waiting

If the deck’s Claude hooks line says “skipped”, it did not find Claude Code, or was started with --no-claude. If Claude Code is installed, start the deck again with --claude. This stops the running deck first.

npx ccdeck --claude --ref=guides-waiting-on-you

A deck started with --workspace or --scope captures only sessions inside that folder.

No sound

Sounds may be off: press M, or turn on Play sounds in Settings › Sounds, where Hear it checks the level. Browsers play nothing until you have clicked or pressed a key on the page since it loaded.

No notification arrives

If Browser notifications reads Blocked, allow notifications for the deck’s address in the browser’s site settings. On Linux, a notification daemon must be running, and the page does not say when one is not.

L or W does nothing

Turn on Single-key shortcuts in Settings › Keyboard. Or click the session list icon and the topbar’s count instead.

Settings says “Held off for this run”

The deck was started with AGENTS_DECK_NO_NOTIFY=1. Stop it with npx ccdeck --stop, then start it again without that variable; the switch keeps your choice.

Something else? See Troubleshoot ccdeck: status, logs, port and hooks.

Next

All guides Troubleshoot What you get in the README