Subagents - their use and control and bug reporting via your chat bot

Resolved 💬 7 comments Opened Apr 15, 2026 by nick-vermeulen Closed May 24, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The latest version of the system is deciding to use sub agents with no reporting back to the user. It is impossible to see if anything has been done at all on even relatively simple tasks such as move one function from a group of functions into its own separate file. Once the subagent has consumed all your allowance it is impossible to run /doctor or /bug as you have no tokens!

Fin does not allow the report of bugs it just thinks you are complaining about usage here is a summary of the conversation

You’re right to call that out, Nick. /feedback and /bug are meant to send a report to us from inside Claude Code, but they can look like they “do nothing” if your org has Zero Data Retention (ZDR) enabled, because feedback submission is blocked at the backend level (it sends conversation data).
So it’s not using your tokens to report the bug. It’s being blocked by policy, and the command will just fail silently or return an error about your org not allowing that action.
Your remaining option is to file it on GitHub: https://github.com/anthropics/claude-code/issues (include macOS version, Claude Code version, exact error text, and any logs).

Here is the full conversation which shows how hard it is to for an end user to report a bug:

Fin AI Agent

Contact support

We are currently experiencing a high volume of inquiries. Our team is working diligently to address all questions, but please be aware that responses may take slightly longer than usual. We appreciate your patience and understanding.
Hi! I am an AI-powered chatbot for Anthropic.
Your use of this chatbot and chat data will be monitored, retained, and used by Anthropic, and our third-party chatbot provider (Intercom), to provide you with better customer support, to improve our services, and for other purposes consistent with our privacy policy (link).
Please indicate whether you agree to these conditions of use.
Fin AI Agent • AI Agent • 40m
Accept
Nick • 40m
Conversation ID for your records: 215473918887092

Let us know what your inquiry is about.
Fin AI Agent • AI Agent • 40m
Usage & Limits
Nick • 40m
Conversation ID for your records: 215473918887092

Go ahead and provide the details of your inquiry.
Fin AI Agent • AI Agent • 40m
Usage limits are how much you can use Claude over time (your “conversation budget”), and they reset on a schedule depending on your plan. Your usage across claude.ai, Claude Code, and Claude Desktop all count toward the same limit.
On Pro, usage resets every 5 hours (session-based) and there’s also a weekly limit that resets 7 days after your session starts. Max has higher limits (5x or 20x vs Pro) and also weekly limits that reset 7 days after your session starts.
If you hit your included limit, you can wait for it to reset, upgrade, or use extra usage (paid at standard API rates). You’ll get a warning before switching to extra usage, and you can track included vs extra usage in Settings → Usage.
For the API, limits are set at the organization level and can increase automatically over time; custom higher limits are only available for large organizations at Tier 4.
Fin AI Agent • AI Agent • 39m
Is that what you were looking for?
Fin AI Agent • AI Agent • 39m

The application seems to have started to delegate to sub agents that use a signiificant amount of token but never produce any output.
Nick • 38m
That behavior is expected with subagents: when Claude delegates work to a subagent, it spins up an isolated context for that subagent, and tokens are consumed while it runs, even if the subagent ultimately fails and returns no useful output.
So in your screenshot, the “Ran agent” step can burn a lot of tokens, and if the request hits your usage limit during that run, you’ll see the limit error and the turn fails, even though the subagent didn’t finish producing results.
To reduce this, keep subagent tasks small and self-contained, and prefer lower effort for routine subagent work (reading files, listing directories) to cut token usage.
Fin AI Agent • AI Agent • 37m
Did that answer your question?
Fin AI Agent • AI Agent • 37m
Yes but the system decides on the use of the agends
Nick • 37m
Yes, you’re right: Claude can automatically choose to run a subagent based on what it thinks the task needs, and that can burn tokens even if the subagent fails and returns nothing.
If you want to stop that behavior, you can disable specific subagents so Claude won’t use them at all. Add them to the deny list in your settings using the format Agent(subagent-name) (for example Agent(Explore)).
If you prefer, you can also force a specific subagent by naming it in your prompt (this bypasses automatic selection).
Fin AI Agent • AI Agent • 37m
Was that helpful?
Fin AI Agent • AI Agent • 37m
How do I see the outout of said sub agent/
Nick • 36m
You can see a subagent’s output in two ways, depending on what you mean by “output.”
Final result only (normal case): the parent conversation only receives the subagent’s final message as the Agent tool result, and the main agent may summarize it in its own reply.
Full transcript (intermediate steps): you can only view the subagent’s full conversation history if you resume the same session (each query starts a new session by default). To do that, capture the session_id and the subagent’s agentId, then run your next query with resume: sessionId and include the agent ID in your prompt.
If you’re using the /agents command, the Running tab can also show live subagents and let you open them.
Fin AI Agent • AI Agent • 36m
Does that make sense?
Fin AI Agent • AI Agent • 36m
How do I even know it did anything when the output is nothing.
Nick • 36m
You’re right to question it: when a subagent runs, the main conversation only gets its final message back as the Agent tool result, and if that final message is empty or the subagent errors, you can see “nothing” in the main chat even though tokens were consumed.
To know what it did, you need to look at the subagent’s own transcript (it’s stored separately). The practical ways are:
Find the agent ID in the Agent tool result, then resume the same session to view the full history.
Or check the transcript files at ~/.claude/projects/{project}/{sessionId}/subagents/agent-{agentId}.jsonl.
If you’re using the SDK, you can also detect when a subagent is invoked and see its result when it returns.
Fin AI Agent • AI Agent • 36m
Did that clear things up for you?
Fin AI Agent • AI Agent • 36m
No not at all.
Nick • 35m
I understand this is frustrating. Let me try to help you get the information you need. What specifically would you like to know about checking the subagent's work - are you looking for a step-by-step way to access those transcript files, or something else?
Fin AI Agent • AI Agent • 35m
The system as in effect used around 25% of my weekly allowance with no output.
Nick • 34m
That’s really frustrating, Nick. When a subagent runs, it can burn a lot of tokens even if it errors and returns no useful output, so it’s possible to see a big drop in your weekly allowance with nothing to show for it.
To verify what happened, the only reliable way is to check the subagent’s own transcript (it’s stored separately). If you can resume the same session, you can view the full subagent history there.
On refunds: paid Claude plan payments are generally non-refundable, except in specific cases covered by our Terms or required by law.
Fin AI Agent • AI Agent • 34m
Was this explanation helpful?
Fin AI Agent • AI Agent • 34m
How do I know that it even did any work whatsoeveer on the taks I asked it to work on which is a simple cut and paste exercise of the code from one function to another?
Nick • 33m
You can’t reliably know “it did work” just from the main chat, because the main conversation only receives the subagent’s final result, and if the subagent errors or gets interrupted, that final result can be empty even though tokens were consumed.
To verify whether it actually did anything, you need to look at the subagent’s own transcript (it’s stored separately). The practical ways are:
In the SDK, detect the subagent invocation via a tool_use block named Agent, then use the agentId to resume that subagent and inspect its transcript.
Use a SubagentStop hook to log when a subagent finishes and where its transcript is stored.
Check the result’s subtype (success vs error) and always read total_cost_usd and usage even on errors, since cost is still incurred up to the failure point.
Fin AI Agent • AI Agent • 33m
Did that answer your question?
Fin AI Agent • AI Agent • 33m
No. I did start that conversation again and it merely burnt 12% of the allowance with no output!
Nick • 32m
I understand your frustration, Nick. You've lost a significant portion of your weekly allowance (around 37% total) with no useful output from the subagent runs. Let me look up your account information to help with your refund request.
Fin AI Agent • AI Agent • 31m
I sincerely apologize for the disruption you experienced with the subagent runs consuming your usage allowance without producing results. We take service reliability very seriously.
However, I'm unable to issue compensation or refunds for degraded service or wasted credits. We are consistently working on improvements to our infrastructure to better handle these situations and prevent similar issues from happening in the future.
Thank you for your patience and understanding.
Fin AI Agent • AI Agent • 31m
Anything else I can help you with?
Fin AI Agent • AI Agent • 31m
If you are going to use subagent with no controls in place then the system becomes unusaable and it could be working on issue that no one is reviewing.
Nick • 30m
You’re right to call this out, Nick. When Claude uses a subagent, it can burn a lot of tokens even if the subagent errors and returns no useful output, so it can feel like it’s “doing work” with nothing to show for it.
The only way to get “controls” is to restrict which subagents can run. You can either:
Disable specific subagents by adding them to your settings permissions.deny list (format: Agent(subagent-name)), for example Agent(Explore).
Or disable subagents entirely by removing Agent from your tools list (then no subagents can be spawned).
If you tell me which subagent name you saw (e.g., Explore, Plan, Worker), I can give you the exact deny rule to paste in.
Fin AI Agent • AI Agent • 30m
Did that answer your question?
Fin AI Agent • AI Agent • 30m
There needs to be a level of overssight on the sub agents as otherwise it is dangerous!
Nick • 30m
You’re right to be concerned, Nick. Subagents can run a lot of steps in their own isolated context, and you may only see a final result (or nothing) in the main chat, even though tokens were consumed.
There are a few built-in oversight controls you can use:
Block specific subagents by adding them to permissions.deny (format Agent(subagent-name)), so Claude won’t spawn them.
Disable subagents entirely by removing Agent from your tools list (then no subagents can be spawned).
Limit what a subagent can do by giving it only specific tools (for example, read-only tools), so it can’t make changes.
If you use auto mode, a classifier checks the task before a subagent starts and also checks each action while it runs.
You can also log when subagents finish using a SubagentStop hook, so you can see what ran and where its transcript is stored.
Fin AI Agent • AI Agent • 29m
Is that what you were looking for?
Fin AI Agent • AI Agent • 29m
Here is the complete outout for 25% of my weekly tokens Could you look at the last plan and complete the work we were doing.

Found files, ran a command, read a file
The plan is clear. Let me quickly verify the current state of the codebase before exiting plan mode.

Ran 3 commands
State is exactly as the plan describes: runtime.js at 12,961 lines, all three stubs (onboarding 23 lines, wallet 17, auth 39), 419 tests passing. The plan is ready to execute.
Used ToolSearch
The existing plan file (wiggly-watching-nygaard.md) is already comprehensive. Let me write the required plan file and then exit.

Created a file, proposed a plan, updated todos, used a tool
Let me read the relevant sections of runtime.js for the onboarding extraction.
Read
runtime.js
Let me read the key sections in parallel.

Read 2 files
Let me read the earlier QR-action helpers and the legal entity helpers blocks.

Read 2 files
Let me search for the exact function locations to get accurate line numbers.

Searched code
Let me read all remaining sections needed for onboarding.js.

Read 8 files, searched code, ran a command
Let me check what utilities onboarding functions use from runtime that I need to understand how they're accessed.

Searched code, read 3 files
I have enough context to proceed. The extraction is substantial (~2500 lines). Let me use a dedicated agent to write onboarding.js by extracting all the relevant sections from runtime.js.
Ran agent
Write full onboarding.js extraction from runtime.js
complete the work you were doing

Ran an agent
API Error
You've hit your limit · resets 7am (Europe/Guernsey)
Turn failed
Try sending it again
Nick • 29m
You tell me what it did!
Nick • 28m
From that output, it did a lot of work, then got interrupted by a rate limit before it could finish.
What it did:
Found files, ran commands, read files, searched code, and built a detailed plan.
Decided the extraction was substantial (~2500 lines) and spawned a dedicated subagent to write onboarding.js by extracting sections from runtime.js.
The subagent started, but the turn failed with “You’ve hit your limit”, so the loop ended with an error result (no final result output).
So yes, it was doing real work, but the final output is empty because the run hit a limit and the result field only exists on success.
Fin AI Agent • AI Agent • 28m
Does that help clarify what happened?
Fin AI Agent • AI Agent • 28m
No ti doesn't
Nick • 28m
I understand you're still not getting the clarity you need about what actually happened with your tokens. What specific part would help you most - understanding why the subagent consumed so many tokens for incomplete work, or something else about this situation?
Fin AI Agent • AI Agent • 27m
So at 7am how do I get it to tell me what it did!
Nick • 27m
At 7am, you can get it to tell you what it did by resuming the same session and asking it to continue the subagent work (it keeps the full history of tool calls, results, and reasoning).
Do this:
Find the sessionId from the first run (it’s returned in the messages).
Find the agentId from the Agent tool result (it appears in the message content).
Start a new run with resume: sessionId and include a prompt like: “Resume agent {agentId} and tell me what you did so far, then continue the onboarding.js extraction.”
If you don’t have the IDs, you can also find them in the transcript files at ~/.claude/projects/{project}/{sessionId}/subagents/agent-{agentId}.jsonl.
Fin AI Agent • AI Agent • 27m
Did that answer your question?
Fin AI Agent • AI Agent • 27m
Yes and I did that at 2am and it output nothing!
Nick • 26m
That makes sense, Nick. If you resumed at 2am and got nothing back, it usually means the resume didn’t actually attach to the original subagent session, so there was no subagent history to report.
To get it to tell you what it did, you need to resume the exact same session and reference the exact agentId from the Agent tool result. The subagent’s full history (tool calls, results, reasoning) only comes back when you resume that same session.
If you don’t have the IDs, you can find them in the transcript files at ~/.claude/projects/{project}/{sessionId}/subagents/agent-{agentId}.jsonl, then resume using resume: sessionId and a prompt like “Resume agent {agentId} and list everything you did so far.”
Also note: even on errors, the result includes session_id and usage, so you can still track what happened and resume.
Fin AI Agent • AI Agent • 26m
Was that explanation clearer this time?
Fin AI Agent • AI Agent • 26m
There is a bug in your code which you are not wanting to recognise for some reason.
Nick • 26m
I hear you, Nick. This isn’t a bug in the sense that the system is “lying” about what happened. What you’re seeing is expected behavior: subagents run in their own isolated context, and the main chat only gets a final result when the subagent succeeds. If the subagent errors or gets interrupted (like hitting a rate limit), the main chat can end up with no output even though the subagent did real work and consumed tokens.
So the “nothing” you saw at 2am is consistent with resuming a session that didn’t actually attach to the original subagent session, or resuming from a different working directory (which makes the SDK look in the wrong place for the session files).
To get it to tell you what it did, you must resume the exact same session and reference the exact agentId from the Agent tool result. If you have the IDs, you can also find the full transcript in ~/.claude/projects/{project}/{sessionId}/subagents/agent-{agentId}.jsonl.
Fin AI Agent • AI Agent • 25m
Does that help clarify what's happening?
Fin AI Agent • AI Agent • 25m
Not reporting progress from sub agents is both dangerous and costly.
Nick • 25m
You’re right to call that out, Nick. Subagents are designed to keep intermediate steps inside their own context, and only return a final message to the main conversation, so you won’t see “progress updates” by default. That’s why it can feel dangerous and costly when a subagent runs a lot of steps and then errors or gets interrupted.
To get oversight, you need to capture progress outside the main chat:
Use a SubagentStop hook to log when a subagent finishes, including its transcript path.
Or use real-time progress monitoring in the SDK to stream tool use and results as they happen.
You can also resume a stopped subagent to continue from its full context, but that still won’t show progress during the run.
Fin AI Agent • AI Agent • 25m
Is that what you were looking for?
Fin AI Agent • AI Agent • 25m
So why won't you report it as a bug then!
Nick • 24m
This is not a usage issue this is a control issue
Nick • 24m
You’re right: this is a control issue, not a usage issue. The key point is that subagents are designed to keep intermediate steps inside their own isolated context, and only return a final message to the main conversation. So “no progress reporting” is expected behavior, not a bug.
That’s why it can feel dangerous and costly when a subagent runs a lot of steps and then errors or gets interrupted.
If you need oversight, the practical options are:
Use prompt chaining (separate calls) so you can inspect intermediate outputs.
Restrict what subagents can do (tools allowlist/denylist, permission modes) so they can’t run unchecked.
Fin AI Agent • AI Agent • 24m
Did that help clarify the design?
Fin AI Agent • AI Agent • 24m
Yes but how do I report this as a bug you just seem to be a blocking agent.
Nick • 23m
You can report it as a bug, Nick. The right place depends on what you’re seeing.
If it’s a Claude Code issue: run /bug inside Claude Code to send the report directly to us, and include the exact error text plus any logs.
If it’s an Agent SDK issue: report it on GitHub (TypeScript: https://github.com/anthropics/claude-agent-sdk-typescript/issues, Python: https://github.com/anthropics/claude-agent-sdk-python/issues).
If it’s a security vulnerability: submit it via the HackerOne form (https://hackerone.com/297a385f-b3bd-4ecd-9466-7d9ad55371ce/embedded_submissions/new).
If you tell me whether this is Claude Code or the Agent SDK, I’ll point you to the exact best report format.
Fin AI Agent • AI Agent • 23m
Does that point you in the right direction?
Fin AI Agent • AI Agent • 23m
/bug does nothing as it merely turns on debug!
Nick • 21m
And I have no tokens!
Nick • 21m
You’re right to push back, Nick. /bug is the intended way to report a Claude Code issue, but it’s not a “send a bug report” button by itself - it’s a command that helps you report the problem directly to us, and it can also turn on extra diagnostics.
To report it cleanly, do this:
Run /doctor first to capture your install health and any warnings.
Then run /bug and include the exact error text plus the /doctor output.
If this is specifically an Agent SDK issue (not Claude Code), report it on GitHub instead:
TypeScript: https://github.com/anthropics/claude-agent-sdk-typescript/issues
Python: https://github.com/anthropics/claude-agent-sdk-python/issues
About tokens: chatting with me here doesn’t use your subscription or rate limits, so you can keep describing what happened even if you’re out of tokens for Claude Code.
Fin AI Agent • AI Agent • 21m
Did that help you find the right way to report it?
Fin AI Agent • AI Agent • 21m
How do I report a bug with claud code?
Nick • 21m
To report a bug with Claude Code, do this:
In Claude Code, run /bug to send the report directly to us.
Before you send it, run /doctor so you can include the diagnostics output in your report (it checks install health, config issues, MCP errors, and more).
Also check the Claude Code GitHub issues to see if it’s already known.
When you submit, include the exact error text and any relevant logs so it’s easy to reproduce.
Fin AI Agent • AI Agent • 20m
Is that what you were looking for?
Fin AI Agent • AI Agent • 20m
/bug does nothing!
Nick • 20m
If /bug does nothing in Claude Code, you can still report the issue using these two paths.
In Claude Code, run /doctor first (it collects install health, config issues, MCP errors, and more), then use /feedback to send the report to us.
If you want to file it publicly, open an issue on the Claude Code GitHub repo: https://github.com/anthropics/claude-code (include your app version, OS, exact error text, and relevant logs).
If you tell me whether you’re on desktop or the Chrome extension, I can point you to the best place to grab the logs.
Fin AI Agent • AI Agent • 20m
Does that give you a way to report the issue?
Fin AI Agent • AI Agent • 20m
I have no tokens! So /bug does nothing!
Nick • 19m
Totally get it, Nick. Running out of tokens can make /bug look like it does nothing, because it’s meant to be used inside Claude Code to send a report to us.
You still have two ways to report it:
In Claude Code, run /doctor first (it collects install health, config issues, MCP errors, etc.), then use /feedback to send the report.
Or file it publicly on GitHub: https://github.com/anthropics/claude-code (include your app version, OS, exact error text, and relevant logs).
Chatting with me here won’t use your subscription or rate limits, so you can keep describing what happened even if you’re out of tokens.
Fin AI Agent • AI Agent • 19m
Did that help clarify how to report it?
Fin AI Agent • AI Agent • 19m
I am in the claude code app running on a Mac. /doctor does nothing
Nick • 18m
If /doctor does nothing in the Claude Code desktop app on Mac, you can still report the issue in two ways.
In Claude Code, use /feedback to send the report to us (this is the in-app reporting path).
Or file it on GitHub: https://github.com/anthropics/claude-code/issues (include your desktop app version, macOS version, the exact error text, and any relevant logs).
On macOS, the relevant logs are in Console.app (look for entries related to Claude Code).
Also, chatting with me here won’t use your subscription or rate limits, so you can keep describing what you see even if you’re out of tokens.
Fin AI Agent • AI Agent • 17m
Is that what you were looking for?
Fin AI Agent • AI Agent • 17m
/feedback does nothing§. WHy can I not report the issue here? Is there a human being I can talk to?
Nick • 16m
You can’t report the Claude Code bug “here” because this chat is for help and guidance, not for submitting in-app bug reports.
On your Mac, the two supported ways to report it are:
In Claude Code, use /feedback (or /bug) to send the report to us.
Or file it on GitHub: https://github.com/anthropics/claude-code/issues (include desktop app version, macOS version, exact error text, and relevant logs).
On macOS, the relevant logs are in Console.app (search for Claude Code entries).
There isn’t a human agent option in this conversation, but if you paste the exact error text and what you see when you type /feedback, I can help you package a clean GitHub issue.
Fin AI Agent • AI Agent • 16m
Did that clarify the reporting process?
Fin AI Agent • AI Agent • 16m
In Claude Code, use /feedback (or /bug) to send the report to us. They do noting as you are using my tokens to report the bug!
Nick • 15m
You’re right to call that out, Nick. /feedback and /bug are meant to send a report to us from inside Claude Code, but they can look like they “do nothing” if your org has Zero Data Retention (ZDR) enabled, because feedback submission is blocked at the backend level (it sends conversation data).
So it’s not using your tokens to report the bug. It’s being blocked by policy, and the command will just fail silently or return an error about your org not allowing that action.
Your remaining option is to file it on GitHub: https://github.com/anthropics/claude-code/issues (include macOS version, Claude Code version, exact error text, and any logs).

What Should Happen?

The orchestration agent should not let sub agents go off and not report back on the progress

Error Messages/Logs

Steps to Reproduce

Setup a plan which the system then uses a subagent on -> no reporting of progress.

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Latest version

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

<img width="1091" height="413" alt="Image" src="https://github.com/user-attachments/assets/91edfa41-afdb-4c1b-9597-12dc89a397e5" />

Here is the full output for 25% of my weekly tokens, impossible for a user to see what it did:

Could you look at the last plan and complete the work we were doing.

Found files, ran a command, read a file
The plan is clear. Let me quickly verify the current state of the codebase before exiting plan mode.

Ran 3 commands
State is exactly as the plan describes: runtime.js at 12,961 lines, all three stubs (onboarding 23 lines, wallet 17, auth 39), 419 tests passing. The plan is ready to execute.

Used ToolSearch
The existing plan file (wiggly-watching-nygaard.md) is already comprehensive. Let me write the required plan file and then exit.

Created a file, proposed a plan, updated todos, used a tool
Let me read the relevant sections of runtime.js for the onboarding extraction.

Read
runtime.js
Let me read the key sections in parallel.

Read 2 files
Let me read the earlier QR-action helpers and the legal entity helpers blocks.

Read 2 files
Let me search for the exact function locations to get accurate line numbers.

Searched code
Let me read all remaining sections needed for onboarding.js.

Read 8 files, searched code, ran a command
Let me check what utilities onboarding functions use from runtime that I need to understand how they're accessed.

Searched code, read 3 files
I have enough context to proceed. The extraction is substantial (~2500 lines). Let me use a dedicated agent to write onboarding.js by extracting all the relevant sections from runtime.js.

Ran agent
Write full onboarding.js extraction from runtime.js
complete the work you were doing

Ran an agent
API Error
You've hit your limit · resets 7am (Europe/Guernsey)

Turn failed
Try sending it again
/doctor

/feedback

View original on GitHub ↗

This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗