More Subagents Isn't Better — Manage Context First, Then Paralle

@Ronny_MiniMax
RonnyHe@Ronny_MiniMax
24 views Oct 26, 2026 ~12 min read
Advertisement

For the past year or so, the agent world has had a pretty clear trend: split whatever you can, parallelize whatever you can. Fan one task out to five or six subagents and it looks very "advanced." In June, Claude Code even shipped nested subagents — agents spawning agents, up to 5 levels deep.

Media image
Boris Cherny said at the time that they wanted to see if this could be a better way to manage context.

A few months later, the wind has shifted. Anthropic's Applied AI team recently published a post with a very blunt title: When to fold subagents into your main agent loop. Across comparisons at several enterprises, they found that a single main agent equipped with Skills often beats both "one giant prompt for everything" and "a subagent architecture" on quality — and is often cheaper and faster too.

Dex Horthy (@dexhorthy) was even less polite: subagent abuse has been going on since mid-2025. They have their place, and used right they give you a lot of leverage. But the hype on social media keeps pushing people to run more things in parallel instead of actually managing context.

So for subagents: when to split, when not to, and how to fold them back in once you've split too much. Building MiniMax Code (MCode for short) — and using it to write our own code the whole time — we've chewed on these questions a lot, and I'll share our thinking along the way.

Subagents are for managing context

Thariq from the Claude Code team has a useful framing in Session Management & 1M Context: the end of every turn is a branch point. From there you can keep going, rewind to an earlier message and retry, clear and start a new session, compact the history, or hand the next chunk of work to a subagent. Apart from "keep going," the other four options are all ways of managing context.

Why manage it at all? Because the longer the context, the more easily the model gets pulled off course by earlier, irrelevant stuff — what people call context rot. Thariq mentions that their 1M-context models start showing this decay around 300k–400k tokens, though it depends heavily on the task and isn't a hard rule.

Seen through this lens, a subagent is a way to isolate context: spin up a clean context to do a messy job, and bring back only the conclusion. Thariq gives a simple test: will I need to look at this tool output again later, or do I just need the conclusion? Only if you just need the conclusion is it a good fit for a subagent.

The problem is that many people treat subagents as a way to divide labor: one agent per team, one agent per type of problem. The motivation shifts from "managing context" to "carving up territory," and that's where things go wrong.

Why splitting too much makes things worse

Media image

The Anthropic post sums up the most common traps large organizations fall into when building agents. They all looked very familiar to us:

  • Lossy handoffs. Once you split by problem type, agents pass messages back and forth through summaries, and every handoff drops a little detail. The post calls it a game of telephone.
  • Subagent sprawl. Every team ships its own subagent, until you end up with hundreds of agents with overlapping functionality, no shared standards, and no owner.
  • A Frankenstein system prompt. Every team adds a line, the rules start contradicting each other, and the external voice stops being consistent.
  • Fragmented evals. Each team only writes evals for its own slice. Local scores look great, nobody owns the whole, and decision-makers see diluted numbers.
  • Stacked latency. Every extra agent layer is another round of model calls. One customer compared a multi-agent setup with a single loop, and the single loop ran roughly 2x faster.
  • The architecture becomes the org chart. One subagent per team, one per problem type — Conway's law, agent edition.
  • On the flip side, the post gives three reasons a single loop can now hold up:

  • Shared context, better answers. The main agent has seen the raw results of every previous step and can connect them, which is more complete than stitching together summaries handed back by subagents — and it skips several lossy handoffs.
  • Load on demand, so context doesn't blow up. Skills and tools normally expose only a short description and load in full only when used (tools are deferred via tool search). The main reason people used to split into subagents was fear that one prompt couldn't hold everything; that reason mostly no longer applies. Anthropic says they cut Claude Code's system prompt for newer models by more than 80%, partly by switching Skills and tools to on-demand disclosure.
  • Models got better. New models can handle more within a single loop than most teams expect. The more hard-coded workflow you put in the harness, the less room a new model has to shine.
  • One more number that's easy to miss: once you go past 30–50 tool definitions, models start getting worse at picking tools. So group tools around user intent — don't do one tool per API.

    When you should still use a subagent

    Default to the main loop, and only consider splitting if one of these applies:

  • The single loop shows a measurable drop in quality because the context has grown too large. You need eval data; gut feeling doesn't count.
  • You have several things to do in parallel, each needing a clean context that can be thrown away afterward. For example, several unrelated research threads.
  • The main agent keeps picking the wrong tools, or the instructions in the system prompt conflict with each other.
  • Media image

    Even once you decide to split, how you cut matters a lot. Cut along context, not along problem type. A good cut is a subtask that barely depends on the rest of the system and hands back a compact result — an independent research thread, a component with a clean interface, a black-box verification. Cut by problem type and you're right back in the game of telephone.

    Subagents you do split out are best exposed to the main agent as tools, so the main agent always holds the conversation with the user. It's only worth handing over the whole conversation when the subagent has to talk to the user directly.

    How we think about it in MCode

    Media image

    Code review: the reviewer needs its own context

    AI writes code faster and faster, so what keeps code quality in check? That's one of the questions we've thought about most while building MCode. Our answer: the agent that writes the code and the agent that reviews it don't share a context.

    The reason is simple. Along the way, the coding agent made a lot of decisions and talked itself into each of them. If the reviewer inherits that conversation, it reads the code along the same line of reasoning, and whatever the author missed, it will most likely miss too. Only by starting the reviewer from a clean context can it really look at the change from the outside.

    Concretely, here's what we recommend:

  • Give the reviewer exactly three things: the diff, the requirements, and the test results.
  • Don't give it the author's conversation or intermediate reasoning. The reviewer's job is to answer "does this change meet the requirements?", not "does the author's reasoning hold up?"
  • Return conclusions to the main loop as structured feedback. For example, list each issue with its location and rationale. The main agent doesn't accept it wholesale; it checks each point against the real code and tests, and only fixes what holds up.
  • A typical case: early in the conversation, the authoring agent sets itself a premise, say "every caller of this function already null-checks its input," and everything after builds on it. Ask it to review its own work and it follows the same premise, so naturally it sees no problem. An independent reviewer, holding only the diff and the requirements and none of that conversation, will just ask: what happens if this value is null?

    This is exactly the "black-box verification" from the previous section: a clean subtask boundary, a compact conclusion handed back — a textbook example of cutting along context. Thariq's post gives a similar use: spin up a subagent to verify the work you just finished against a spec file.

    Day-to-day development: one main loop, Skills loaded on demand

    For everyday coding, we try to keep one task per session and don't split out extra subagents. Workflows and know-how the team uses over and over get written up as Skills or project rule docs. Normally they expose a one-line description and only load in full when actually needed. The main loop can always see the requirements, the plan, and the raw results of every step, without relying on summaries passed back and forth.

    For a team that writes code, the things usually worth capturing are:

  • Coding conventions: naming, directory structure, error handling — the rules you follow every time.
  • Release process: which checks to run before shipping, and in what order.
  • How to use internal libraries, and their gotchas: which API has a hidden precondition, which pattern has bitten you before.
  • Verification and testing steps: how to run tests after a change, and how to confirm you actually fixed it.
  • Putting these in Skills — rather than having a dedicated subagent "own conventions" or "own releases" — means the main agent can read them itself when needed, with no extra handoff.

    Don't let important state live only in the conversation

    Dex Horthy has a line we strongly agree with: the things that matter should never only live in the context window. His advice is to capture context and decisions in docs, so whether you're continuing after a compact, starting a new session, or handing off to someone else, it all goes smoothly.

    It's not complicated: when a long task starts, create a design or progress doc, and keep writing the plan, key decisions, rejected options, and review conclusions into it. When a new session starts or someone else takes over, just @ the doc; the agent reads it and picks up where things left off, no need to dig through the chat history.

    There's a side benefit too: it removes a lot of the urge to "split off a subagent just to protect the context." The state is already in the doc, so you can safely clear the session and start fresh.

    Already have a pile of subagents? How to fold them back in

    Plenty of teams already have an orchestrator agent plus a row of specialist agents running in production, and there's no tearing that down overnight. Anthropic lays out a step-by-step path that we find very practical:

  • Start with a small end-to-end eval. 10 golden examples is enough to begin. Ideally a central team maintains a shared end-to-end set, and each team ships a small eval with its own Skills. Before merging, also check routing accuracy (was the right subagent picked?); after merging, check whether the main agent loaded the right Skills and called the right tools.
  • Start merging with the most-used, most tightly coupled ones. Subagents that are often called back to back, read and write the same data, or feed one's output into another's input should be merged first.
  • During the transition, wrap subagents as tools for the main agent. No need to rewrite them, and you get a baseline first.
  • Merge one at a time. Rewrite its prompt as a Skill, turn its API calls into MCP tools, and compare evals before and after.
  • Don't just look at the overall score — look at which tasks flipped. Anthropic tried this on a sample customer-support agent: after merging one subagent, latency went down, but a flow that used to pass broke. The main agent had the order-lookup tool in hand and just answered directly, without asking the shipping specialist for the delivery date.
  • Run each task several times. That problem showed up in only one of two runs. Every agent chain that runs back to back in production, and every rule that must never break, needs a corresponding eval task.
  • Anthropic also released a set of Claude API Skills to help with this, tied together by a migration kit into a guided flow, with a demo you can try against a simulated system first:

  • /claude-api build-eval to build the eval
  • /claude-api prompt-audit to find instructions written for older models that now slow the agent down
  • /claude-api hillclimb to iterate on Skills and tool descriptions against the eval
  • /claude-api cost-optimize to analyze cost and latency
  • Their closing principle is simple: measure first, change one thing at a time, keep what survives testing. Keep a subagent only if the merged version scores worse; then move on to the next one.

    A pre-split self-check list

  • Will this subtask's intermediate output be needed later? Only split if you just need the conclusion.
  • The reason for splitting is context, not "this is another team / another type of problem."
  • You have eval data showing the single loop actually got worse — not just a feeling.
  • Are you already past 30–50 tool definitions? Merge around user intent first, and defer-load with tool search.
  • Workflows and rules are written as Skills, actions and live data are tools, reference material goes in a knowledge base — all loaded on demand.
  • Plans, decisions, and review conclusions are written into a design or progress doc, not left only in the conversation.
  • You ran end-to-end evals before and after merging, looked at the tasks that flipped, and ran each task more than once.
  • Closing thoughts

    In the end, whether to split into subagents is just the surface. Underneath is one thing: get the right information into context at the right time. Put what belongs in the main loop in the main loop, store what should be stored in Skills and docs, and hand only what truly needs isolation to subagents.

    Models are still getting better fast, and an architecture that makes sense today may not in a few months. More worth remembering than any particular structure is the principle: measure first, change one thing at a time, keep what survives testing.

    Give MiniMax Code a try, and come talk to us on GitHub about how you use subagents and manage context. We'd love to hear how other teams are doing it.

    References

  • Anthropic, Building agents: When to fold subagents into your main agent loop
  • Thariq (@trq212), Using Claude Code: Session Management & 1M Context
  • Dex Horthy (@dexhorthy), On subagent overuse
  • Dex Horthy (@dexhorthy), Capture context in docs for cross-session handoffs
  • Boris Cherny (@bcherny), Claude Code ships nested subagents
  • Actions
    What You Can Do
    • Export as PDF or Markdown
    • Batch Export to Notion
    • Bookmark & Highlight
    • Screenshot Tweet
    Create Free Account

    Includes 7-day Premium trial

    Advertisement