How to tell when Claude Code is waiting for input
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.
- Agent View (
claude agents) lists your background sessions, the ones that need input near the top, and lets you reply from the list. - A notification, Claude Code’s own or a hook of yours, tells you when a session asks. It keeps no list.
- ccdeck lists the Claude Code sessions from every terminal, the ones waiting on you first, longest wait first. You answer in the terminal.
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:
permission_prompt: Claude needs you to approve a tool use, and the prompt has waited about six seconds without you typing.idle_prompt: Claude finished responding about 60 seconds ago, and you have not typed since.
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
- Its session list puts Claude Code sessions stopped on a permission prompt or a question first, then finished turns, each with how long it has waited, longest first.
- The waiting count in its topbar, or W, goes to the prompt or question that has waited longest. W again goes to the next.
- An open ccdeck page plays a tone when Claude Code sends a notification. With Notifications while closed on, which starts off, you get a desktop notification when no page is open.
- The desktop app shows the number of prompts and questions beside its menu bar icon on macOS, and in the tray icon’s tooltip and menu on Windows and Linux.
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.