Claude Code subagents: how to see what each one is doing
By Jake Marsh, who builds Taskhold. Updated 2026-10-30. Facts about other tools checked 2026-10-30. 5 min read.
Short answer: Running background subagents get a row in the panel under Claude Code's prompt. /tasks lists them with their model, and Enter opens a subagent's transcript. Finished subagents drop off within 30 seconds. For a lasting record, log SubagentStop hooks, or have each subagent report its step and progress to a shared live board such as Taskhold.
Claude Code hands work to subagents on its own, and by default they run in the background while you keep typing. Once three reviewers and a test runner are going, it gets hard to tell which one is doing what, or which one is stuck. This guide covers what Claude Code shows while subagents run, what disappears when they finish, a hook that logs them, and how Taskhold gives each subagent its own step on a progress bar.
Try the board in the live board demo. For whole sessions rather than subagents, see agent teams on a live board and seeing what Claude Code is doing.
Where Claude Code shows running subagents
| Where | What you see |
|---|---|
| The conversation | A tool call row with the subagent's name and a short task, such as code-improver(Suggest code improvements) |
| The panel under the prompt | A row per running background subagent and fork. For a fork, select the row and press Enter to open its transcript and send it messages |
| /tasks | Running shells and subagents, with the model each subagent runs on (v2.1.242 or later). Press Enter on a subagent to open its transcript |
| Ctrl+O | The transcript viewer: every tool call in detail, with timestamps |
| The @ typeahead | Named background subagents that are running, with their status next to the name |
Checked 2026-10-30 against code.claude.com/docs/en/sub-agents and interactive-mode.
Ctrl+T is a different view: Claude's own checklist, not the subagents. If that one is blank, see Claude Code task list empty.
What disappears when a subagent finishes
- A subagent that finishes successfully leaves the panel at once. /tasks keeps it, marked done, for 30 seconds, and the footer shows /tasks to see subagents for those 30 seconds.
- A subagent that fails or that you stop keeps its panel row for 30 seconds and leaves /tasks.
- Results reach the main conversation as a completion notification in a later turn. Ask about progress before then and Claude says the subagent is still running.
- Each subagent's transcript is saved in a subagents/ folder next to the session's transcript under ~/.claude/projects/, so the detail survives even when the row is gone.
Log every subagent with a hook
SubagentStart and SubagentStop hooks fire when a subagent begins and ends. SubagentStop receives agent_type, agent_id, agent_transcript_path and last_assistant_message (the subagent's final text) on stdin, so one command keeps a log of every run:
{
"hooks": {
"SubagentStop": [
{
"hooks": [
{ "type": "command", "command": "jq -c '{at: (now | todate), agent: .agent_type, id: .agent_id, transcript: .agent_transcript_path}' >> ~/.claude/subagents.log" }
]
}
]
}
}A subagent that reports through the SubagentHandback tool (v2.1.271 or later) delivers its report in that tool call, and last_assistant_message then holds only its closing text.
Limits worth knowing
- Up to 20 subagents run at once by default. Another spawn fails with Concurrent subagent limit reached; CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS changes the limit.
- Background subagents send their permission prompts to your main session and name the subagent asking. An answer that lasts beyond one call, such as for the rest of the session, applies to the whole session. Waiting for input without an alert covers getting told about those prompts.
- Each subagent starts with a fresh context: its own prompt, the task message Claude writes, your CLAUDE.md files and a git status snapshot. It doesn't see your conversation, and the built-in Explore and Plan agents skip CLAUDE.md.
A step per subagent on Taskhold's live board
Subagents inherit the main conversation's MCP tools, and background subagents keep every MCP tool, so a subagent can call Taskhold's tools the same way the main session does. The pattern: the main session plans the task into steps with taskhold_plan, one step per subagent, and puts the step's id in each delegation message. Each subagent reports taskhold_progress on its step and completes it with a summary. The live board then shows one bar split by step, which steps are running, what each subagent last said, and any question one of them blocked on.
## Subagents and Taskhold
- Before delegating, taskhold_plan the task with one step per subagent and
put that step's id in the subagent's prompt.
- Subagent: taskhold_progress on your step at milestones (N of M plus one
line), then taskhold_complete it with a one-line summary.
- A decision only the person can make: taskhold_block the step with one
question.- A subagent definition with a tools list gets only the MCP tools it names. Add mcp__taskhold__* to the list, or leave tools out.
- Explore and Plan skip CLAUDE.md, so put the step id and the reporting rule in the delegation message itself.
- Progress is what each subagent reports. The card's status dot shows when an agent last reported, so a silent one stands out. If the tools don't load at all, see MCP server not connecting and Taskhold troubleshooting.
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
- How do I see what a Claude Code subagent is doing right now?
- Run /tasks, select the subagent and press Enter to open its transcript. Ctrl+O opens the transcript viewer for the main conversation, where each delegation shows as a tool call row.
- Can I make Claude wait for a subagent instead of running it in the background?
- Yes, in an interactive session: set CLAUDE_CODE_FORK_SUBAGENT to 0 in the env block of settings.json, start claude again, and ask Claude to wait. Ctrl+B sends a waiting subagent back to the background.
- Do subagents get my MCP servers?
- Yes, unless the subagent's definition narrows them. Subagents inherit the main conversation's MCP tools; a tools list keeps only the tools it names, and disallowedTools removes the ones it names.
Sources
- Claude Code docs: subagents, checked 2026-10-30
- Claude Code docs: SubagentStop hook input, checked 2026-10-30
- Claude Code docs: interactive mode (Ctrl+O, Ctrl+T, /tasks), checked 2026-10-30
Related
Updated 2026-10-30. Something wrong or out of date? Email hello@greatwork.company.