How to see what your coding agent is doing right now
By Jake Marsh, who builds Taskhold. Updated 2026-10-26. Facts about other tools checked 2026-10-26. 9 min read.
Short answer: Each coding tool shows its own sessions: Claude Code has agent view and Remote Control, Codex sends terminal notifications. None of them can say how far a task has got, because only the agent knows its plan. Have the agent report steps and progress somewhere you can see, such as Taskhold's live board, which any MCP client can update.
You start an agent on a refactor, switch to something else, and twenty minutes later you want four answers: is it still working, how far has it got, is it waiting on me, and what has it finished. The terminal holds all of that, scattered through a long scrollback, on one machine. This guide shows how to monitor your coding agent's progress step by step, whichever tool runs it.
This guide covers what the tools show on their own, what an agent should report, a free way to get more, and how Taskhold's live board does it for every agent you run. For the numbers behind it, how many developers now run agents and how few trust the output unchecked, see AI coding statistics.
Not sure where the gaps are? The agent visibility check asks eight yes/no questions and names the fix for each no.
What the tools show on their own
| Tool | What you can see | Limits |
|---|---|---|
| Claude Code task list (Ctrl+T) | Claude's checklist for the session: pending, in progress, done, up to five items at a time | Fills only on models with the task tools (Opus 4.7, Sonnet 4.6, Haiku 4.5 and earlier by default); terminal only |
| Claude Code agent view (claude agents) | Every background Claude Code session on the machine: working, needs input, completed or failed, with a one-line summary; reply to a question from a peek panel | Research preview; Claude Code sessions on this machine |
| Claude Code Remote Control and the Claude app | Drive a local session from your phone; push notifications when a long task finishes or needs a decision | Needs a claude.ai account; Claude Code sessions only |
| Claude Code status line | Whatever your script prints from session data: model, context used, cost, branch, PR | Session data only, unless the script fetches task progress from elsewhere |
| Codex CLI | Terminal notifications when a turn completes or needs approval ([tui] notifications), and a notify program on turn complete | On the machine running Codex |
| Cursor | The agent panel in the editor window | In the editor you're looking at |
Checked 2026-10-26 against code.claude.com and the Codex sample config. Sources at the end of the page.
The missing piece: progress the agent reports
Session views know whether a session is working or waiting. They can't tell you "step 3 of 5, 12 of 40 files migrated", because that lives in the agent's plan, not in the session. The agent has to write it down somewhere you can read, at the moments it knows something new: when it plans, between steps, inside a long step, and when it gets stuck.
So you need two things: a line in the agent's instructions, and a place for it to write. The two options below differ in where the progress lands and who can see it.
What should an agent report?
Four things are enough, at the moments the agent knows them:
- A plan as ordered steps, before it starts. Three to seven steps is a useful size: enough to show movement, few enough to read at a glance.
- Progress as it goes: "step 3 of 5" or N of M items, plus one short line about what it is doing now. Agents are far better at counting finished steps than at guessing a percentage.
- Blocked, with one specific question, when it needs a decision, access or information from you.
- Done, with a summary of what changed and how it checked the result.
Everything else (diffs, test output, reasoning) stays in the session and the pull request. The message patterns in the docs show how to write each report so a person can act on it from a phone.
Free option: a progress file in the repo
Ask the agent to keep a PROGRESS.md: the plan as a checklist, the current step, and a line per milestone. Add the rule to CLAUDE.md or AGENTS.md so every session does it:
## Progress
Before multi-step work, write the plan to PROGRESS.md as a checklist.
Tick each step when done and add one line: what changed, what's next.
If you're blocked, write the question at the top under BLOCKED.Even without a file, three lines in CLAUDE.md or your rules give you most of the habit inside a single session:
Before starting a task, write your plan as 3 to 7 numbered steps.
After each step, say "Step N of M done: <one line>".
If you need a decision from me, stop and ask one specific question.Where it falls short: you read it by opening the repo, there is no notification when the agent writes BLOCKED, parallel sessions in one repo edit the same file, and nothing tells you the agent went quiet an hour ago.
Taskhold: one live board for every agent
Taskhold is a task list your agents reach over MCP. The workflow snippet asks the agent to plan each task into steps with taskhold_plan, start and complete each step, and call taskhold_progress at milestones with percent or N of M and a short message. The live board shows it as it happens:
- A card per task an agent is working on: which agent, how long it has run, an estimate of time left once there is enough to go on, and the message from its last progress report.
- A progress bar split into one segment per step, so you see which step is running and which one is blocked.
- Blocked tasks at the top under Needs you, with the agent's question and a box to reply, or reply and unblock.
- A status dot: Live if the agent reported in the last two minutes, Quiet after that, and No word, with how long ago, after fifteen minutes. A stalled agent stands out without you reading its terminal.
- Optional desktop notifications when an agent gets blocked or finishes, and a count in the tab title while you're in another tab.
The time estimate is simple on purpose: elapsed time divided by progress so far, shown once the task is at least 5% done and has run for 30 seconds. Steps that take very different times make it rough; the step list tells you more than the number.
## Tasks (Taskhold)
The person and I share a task list through the taskhold MCP tools. They watch a live board while I work.
- Session start: taskhold_get_current, then taskhold_updates for replies. Nothing in progress? taskhold_list status:todo and take the highest priority.
- taskhold_start before working on a task (agent: "<client> in <repo>").
- More than a couple of steps: taskhold_plan, then taskhold_start and taskhold_complete each step.
- taskhold_progress at milestones (N of M, or a percent) with a short message. Every few minutes at most.
- Need a decision: taskhold_block with one specific question, then check taskhold_updates.
- Done: taskhold_complete with what changed and how I checked it.
- A TODO or bug I'm not fixing now: taskhold_create (or taskhold_create_from_todo with file and line).Want the same bar inside Claude Code or a terminal? The Taskhold CLI sets up the Claude Code status line with one command (taskhold-mcp statusline --install) and runs the board in a terminal (taskhold-mcp watch). A short script does the status line too: see the status line recipe or the status line generator.
How does the agent get your reply?
The agent asks Taskhold what changed since it last looked, with taskhold_updates. The call takes a cursor and returns only what you changed: replies, new tasks, priority changes. Agents call it at the start of a session and between steps, so you can steer one mid-task without stopping it. Answering a blocked agent walks through the full loop, including notifications.
How do you know an agent stopped?
Liveness tells you, not the bar. Each card shows Live if the agent reported in the last two minutes, Quiet after that, and No word, with how long ago, after fifteen minutes. A card at 90% with No word usually means the session ended and the task needs someone to pick it up again. The bar shows what the agent last said; liveness shows whether it is still saying anything.
How the live board is built
Every change an agent or a person makes (create, status, progress, note, edit) writes a row to an events table, and the row id is the cursor for everything: the board, taskhold_updates and the REST API. The board streams new rows over Server-Sent Events, with an in-process wake for instant updates, a 3 second poll as a backstop and a 15 second ping so proxies keep the connection open.
One gotcha if you build SSE on Next.js: its compression buffers the stream unless the response sends Cache-Control: no-transform, and nginx needs X-Accel-Buffering: no. The events reference documents the stream and the polling fallback.
Checking from your phone
The live board is a web page, so a phone browser shows the same cards, steps and blocked questions, with the reply box. For Claude Code alone, the Claude app with Remote Control lets you drive the session itself; Taskhold is the view across Claude Code, Codex, Cursor and anything else you've connected, without a session open.
See how far along your coding agents are.
$12/month or $120/year after the trial. Card up front. Cancel before day 7 and you pay nothing. Every agent you run is included.
Questions
- Isn't the progress just what the agent says?
- Yes. Progress is self-reported, like a teammate's standup. The board also shows when the agent last reported, so a dead session shows as No word even if its last report said 90%. Use it to know where things stand and what needs you; review still happens in the diff.
- How accurate is the time-left estimate?
- Rough on purpose: elapsed time divided by progress so far. The board hides it until the task is at least 5% done and has run for 30 seconds, because before that a number is a guess, and while the task is blocked it shows Waiting on you instead.
- How do I tell if my coding agent is stuck?
- Look for silence. On Taskhold's live board each running task has a dot that turns to No word, with how long ago, when the agent hasn't reported for fifteen minutes. In Claude Code's agent view, a session that needs you shows as needs input.
- Does reporting progress slow the agent down?
- Each report is one short tool call, and the tool description asks agents to report at milestones, every few minutes at most. On a long task that is a handful of calls.
- Does Taskhold see my code or my terminal?
- No. It sees only what the agent sends through the tools: task titles, steps, progress numbers, short messages, notes and summaries.
- Which agents can report to the live board?
- Claude Code, Codex, Cursor, Windsurf (Devin Desktop), VS Code agent mode, Gemini CLI and any MCP client that supports remote servers with a header. Each link is that client's setup page.
Sources
- Claude Code docs: task list, checked 2026-10-26
- Claude Code docs: agent view, checked 2026-10-26
- Claude Code docs: Claude Code on mobile, checked 2026-10-26
- Claude Code docs: status line, checked 2026-10-26
- Codex sample config, checked 2026-10-26
Related
Updated 2026-10-26. Something wrong or out of date? Email hello@greatwork.company.