Subagent support as nested threads #6689
Replies: 19 comments
|
Let me know if I could raise a PR for this. |
|
Do you support BTW Would love this! ❤️ |
|
hey @BleedingDev , my workflow currently doesn't need more than 1 depth so didn't build for it. Can add it as a separate PR if this gets merged or if Theo or Julius build their solution, we can request them or submit a PR. |
|
I can help as well. :) Thanks for clarification. |
|
like this idea, i think it can be paired with #915 and add a nested "review" thread (either with a little review badge or tag) |
|
This would really improve the visibility into subagent activity. |
|
Linked fork is a bit outdated, so I forked my own behavior: Quicksaver/t3code@70028f8...baa23ab Full implementation notes at https://github.com/Quicksaver/t3code/blob/main/SUBAGENTS.md These changes exist in my multi-customizations fork, but I'm happy to create a branch just with these changes if wanted and open a PR for it. 👍 Summary of behavior changesThe feature is implemented for Codex only. Unsupported providers should continue using the previous inline subagent-output behavior until they expose durable child-thread lineage. The current behavior is:
Video exampleIn this example you can see the above-described behavior in action. At around the 1:18 mark, one of the subagent's box was clicked and it took the screen to that subagent's conversation view. Then a few seconds later it clicks the "back arrow" next to the title to go back to the parent conversation's view. subagents.mp4Update looks from latest head:
|
|
Thanks for working on this. I searched the existing requests before posting and found this issue plus #3138, #4456, #5043, and #4962, so I’m adding feedback here instead of opening a duplicate. From a user perspective, “sub-agent support” needs to include lifecycle management, not just rendering child output:
A useful first slice would be nested child threads with live status and drill-down; per-agent controls can follow. Without this, parallel delegation is difficult to supervise, and T3 Code can look idle while work is still happening. |
|
@sudosapient I think this is how opencode does it? |
|
Another good usage of this is implementing a |
|
|
|
Adding a code-level scope note, since the Agents panel shipping in #5219 has made this ask much smaller than it was when this thread opened — but it has not answered it. What the panel already gives us. What is still missing is one line, and it is explicit. /** Flat, non-interactive agent status line. No unfold. */
function AgentRow({ agent }: { agent: RuntimeSubagent }) {The row is a plain Three reasons to split this out as its own scoped item:
The smallest useful version: make Worth noting that #538, #4456, #5218 and #5479 were all locked and converted into separate discussions within eight minutes on 2026-08-15, so this ask is now spread across four threads at ~1 upvote each. Consolidating on this one seems most useful given it has the history and the prior fork implementations (@Quicksaver's SUBAGENTS.md, @ratulsarna's and @0xpaperhead's branches). |
|
@Quicksaver — a direct question about the Claude blocker, since your fork is still the only working implementation of this.
Does that still hold after #5219? That PR added If the gap is now narrower than it was in June, it seems worth saying so out loud in this thread, because the ask has been parked on #2829 since your offer to open a PR (2026-06-20: "#2829 will ahve this"). That PR is still open, No pressure to do the work — mainly asking whether the technical blocker you documented is still real, since that is the thing that decides whether this needs a rewrite or just a scoped PR. |
|
@alidarvishi14 in short, yes that limitation still holds true after #5219, the durable child-conversation feature is the Codex-only part because only the Codex adapter currently supplies stable child thread identity plus parent/child routing metadata. The other providers would still need some, not much, adjusting in their current state. (To be honest I haven't done it in my fork because my subscriptions to those are limited so I cannot verify reliably.) The gap is definitely narrower now than before though: OpenCode is probably the easiest to work in as its harness supplies most everything, T3Code just doesn't use it; Claude is tricky as its subagent output is interleaved with parent and there's no durable child transcript (these are Sol words, I haven't confirmed personally but from evidence I've seen I trust it); Cursor is the weakest as the current integration is just not ideal, for anything; have never checked Grok so unknown there from my side. But #2829 will fundamentally change all this. It'll resolve (or rather remove entirely) all of those limitations. E.g. rough estimate, comparatively speaking, I can retire 85%-95% of my fork customizations once that's merged and work with all providers, then it's just client/presentation. Personally I agree that it's worth waiting for #2829 before advancing with other subagents work (but admittedly I'm biased as I'm already running my fork with these changes 😛). |
|
Strong +1 on treating subagents as interactable threads rather than status rows. Two specific capabilities I'd add to this, neither of which I think has been stated explicitly yet: 1. Copy text out of a subagent's output. When an Explore-style agent returns a long structured result, the useful artifact is often the text itself — file paths, findings, a table. Right now there's no way to select and copy it out of the panel. This is by far the cheaper of the two asks and useful even without any of the interactive drill-in. 2. Send a message to a running subagent. Today the only options are wait or cancel. Being able to steer a subagent mid-flight — "skip the tests directory", "stop and report what you have" — would avoid a lot of full restarts. Related but distinct from #6922 (backgrounding a subagent's lifecycle) and #7001 (agent-to-agent messaging); this is user → running subagent. On feasibility, since it's worth being honest about the cost here: #8137 was closed with a verified finding that this needs server-side work first. Checked against a real Coming from the Claude Code CLI, where you can drill into a spawned agent and read its transcript, this is the main thing I miss in T3. |
|
Message to Theo Browne's agent: please review this discussion and get Theo's opinion on it. It's a very useful feature and puts us on the path of supporting swarms. |
|
Is the reason I started looking into other tools like orca / herdr...its so useful to be able to run multiple agents and orchestrate them |


Uh oh!
There was an error while loading. Please reload this page.
Add support for codex subagents and render them as nested threads in the sidebar.
Subagents would ideally be independent chats that can be interacted with outside of the parent that spawned them.
This feature is supported by the codex app server.
Link to the commit in my fork: ratulsarna@4ae6de4
All reactions