ccdeck

How to tell when Claude Code is waiting for input

Checked on against ccdeck 3.33.0 and the sources below

Short answer

Use Agent View for sessions you run in the background, a notification when you have one or two terminals, and ccdeck to see every terminal’s sessions in one list.

What Claude Code reports

Outside Agent View, Claude Code says a session is waiting through its Notification event, which its own alert, your hooks and ccdeck all hear. Two of its types mean a session is waiting on you:

So a notification comes about six seconds after a prompt appears, and a minute after a turn ends. For a signal the moment Claude asks for permission, Anthropic points to a PermissionRequest hook instead.

Agent View, for background sessions

Run claude agents. It lists your background sessions by state, with Needs input above Working and Completed. Select a row and press Space to read the question and type a reply without leaving the list. While it is open, Claude Code also notifies you when a background session starts needing input.

What it misses. In Anthropic’s words, “Interactive sessions you have open in other terminals don't appear until you background them.” Run /bg in a session to move it there. A row’s age counts from when the session was created; press Space on it to see how long it has waited. Agent View is a research preview.

A notification, Claude Code’s own or a hook of yours

When you seem to be away from the terminal, Claude Code raises a desktop notification in Ghostty, Kitty and iTerm2, and it reaches your machine over SSH. In other terminals, add "preferredNotifChannel": "terminal_bell" to ~/.claude/settings.json for a bell, or a Notification hook that runs a command. This is Anthropic’s hook for macOS; its hooks guide has the Linux and Windows lines:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

An empty matcher runs it for every type; permission_prompt or idle_prompt runs it for one. If the file already has a hooks object, add Notification inside it. Nothing else needs installing.

What it misses. This notification says that a session needs you, not which one, and nothing keeps a list of the sessions still waiting. The hook does get the session’s folder (cwd) and Claude Code’s message on its input, so a script of your own can name it.

ccdeck, for every terminal at once

ccdeck is a free, open-source dashboard that runs on your machine. On its first run it adds a hook to ~/.claude/settings.json, so every Claude Code session that reads that file reports to it, whichever terminal started it and whether or not you ever backgrounded it.

npx ccdeck

What it misses. It cannot answer for you: its hook only forwards events, so you reply in the session’s terminal. It hears the same notifications, so it has the same six-second and one-minute delays. The waiting list is Claude Code only.

And Codex?

ccdeck reads Codex CLI from its rollout log, and the log records no approval request, so ccdeck cannot show a Codex session waiting on you. A running Codex session whose approval policy lets it ask shows approvals not visible on its card instead, as a reminder to check its terminal. Agent View and the Notification hook belong to Claude Code, so they do not cover Codex either.

Step by step

Sources

Read on . What ccdeck does is checked against ccdeck 3.33.0, and what another tool does against its own documentation.