Claude Code Subagents for Client Work: How I Run Two Builds in Parallel

- A subagent is a named, scoped role inside a single Claude Code project, defined once and reused, not a second client session and not a second terminal tab open on the same work.
- The setup that holds up under a paying deadline is a primary session that plans and reviews, plus two or three subagents each owning a distinct file surface, never the same files two agents could both touch.
- Subagents earn their keep on builds that decompose cleanly into independent pieces. On ambiguous or tightly coupled scope they add a coordination tax that costs more time than running it serially.
The Short Answer
Define a subagent for each independent piece of a client build, give each one its own instructions and its own file surface, and run them inside the same project so their work lands in one place. That is the whole idea. The primary session stays in charge of the plan and the review; the subagents each go do one bounded piece of it, in parallel, instead of you or one long session doing the backend, then the tests, then the docs, in a row.
The win is not that Claude Code gets smarter with subagents. It does not. The win is wall-clock time on work that was always going to happen anyway, just spread across parallel tracks instead of stacked in a queue. That only pays off when the pieces genuinely do not depend on each other finishing first, which is the test that decides whether subagents help a specific build or just get in the way.
What a Subagent Actually Is (and Is Not)
A subagent in Claude Code is a role you define once, usually as its own file under a project's agent configuration, with its own name, its own scoped instructions, and often its own restricted set of tools. You invoke it from the primary session for a specific task, it does that task inside the same project, and it hands the result back. It has less context than the primary session by default, which is a feature: a subagent whose whole job is writing tests does not need to be carrying the marketing copy from earlier in the conversation.
This is a different tool from running several terminal sessions across several client folders, which is a workspace-isolation problem covered in [how to run multiple Claude Code client projects at once](/blog/run-multiple-claude-code-client-projects-at-once). That earlier setup is about keeping Client A and Client B from ever touching each other. Subagents operate inside one client's project, splitting one engagement into parallel pieces. You will likely use both: isolated folders across clients, and subagents inside any single client's build that is large enough to decompose.
The Setup I Run for a Client Build
The primary session never writes code directly once a build is big enough to split. It writes the plan, breaks the plan into pieces that do not depend on each other's output, and dispatches each piece to a subagent scoped to exactly that piece. For a typical client build this lands on two or three roles, not ten. More than that and you are spending more time coordinating than you are saving.
- A build subagent scoped to the feature code itself, with instructions naming the exact files and directories it owns, and nothing else.
- A test subagent scoped to the test suite only, dispatched once the build subagent's interface is settled, so it is writing against a real shape instead of guessing.
- A docs or client-update subagent scoped to a changelog or a client-facing summary, which can run the moment there is a diff to describe, in parallel with the test work.
The rule that keeps this from turning into a mess is that each subagent's scoped instructions name the specific files or directories it is allowed to touch, and no two subagents are ever given overlapping ownership. That is the entire discipline. Get that one rule right and parallel work stays clean. Skip it and you get the exact failure mode described below.
When This Actually Saves Time
Subagents pay off on builds that decompose into pieces with a clean interface between them and no real dependency on each other's output mid-task. A feature with an API layer and a UI layer that only needs to agree on a request and response shape is a good candidate: define the shape first, then let one subagent build the endpoint and another build the interface against it, at the same time.
They also pay off on the boring-but-necessary work that has zero creative dependency on the main build: writing tests once an interface exists, generating a client-facing changelog once a diff exists, running a lint or accessibility pass once code exists. None of that needs to wait in line behind the next feature, and none of it needs the full context the primary session is carrying.
When It Just Adds Overhead
Skip subagents on anything where the scope is still being discovered. If you cannot yet describe the interface between two pieces of a build, there is nothing to hand to a second subagent yet, and splitting early just means both roles are guessing at a shape that has not been decided. Do the discovery in the primary session first, and only fan out once there is a real boundary to fan out across.
Skip them too on tightly coupled changes, where a decision in one file forces a change in three others you cannot predict in advance. That is exactly the situation a single session with full context handles better than two scoped agents that would spend more time reconciling their outputs than either spent producing them. A small refactor across a shared data model is almost always faster run straight, not split.
The Coordination Failure Mode
The way parallel subagents go wrong is two roles ending up with overlapping file ownership, so agent one's output half-overwrites agent two's, or agent two starts working against a version of a shared file that agent one is mid-edit on. This looks like a tooling bug the first time you hit it. It is almost always a scoping mistake made when you defined the roles, not a limitation of the feature itself.
The fix is the same file-ownership rule from the setup section, applied strictly: write it into each subagent's instructions in plain language, not just implied by the task description. Named boundaries, checked before you dispatch, not discovered after two agents have already collided.
What This Changes About What You Can Quote
Parallel execution on a well-scoped build is real time back, and real time back is a pricing conversation, not just a workflow tweak. If a build that used to take three serial days now runs closer to two because the test suite and the client-facing changelog were happening alongside the feature work instead of after it, that changes your estimate for the next build of that shape, which is exactly the estimating discipline covered in [how to estimate a Claude Code build so you do not lose money](/blog/estimate-a-claude-code-build).
It also changes what you can promise on a rush job, which connects directly to [how to charge a rush fee without losing the client](/blog/charge-a-rush-fee-without-losing-the-client). A build that decomposes cleanly into parallel subagent tasks is a build where a tighter deadline is genuinely achievable, not just a deadline you agreed to and hoped Claude Code would bail you out of.
Join the Profit Room
Inside the Claude Code Profit Room we share the actual subagent configurations builders run on paying client work, including which roles are worth defining and which ones are not worth the coordination cost. Join us at https://www.skool.com/claudecodeprofitroom/about and bring the build you are trying to figure out how to parallelize.
Short, practical drops on offers, outreach, pricing, and closing clients with Claude Code. No spam, unsubscribe anytime.
Frequently asked
What is a Claude Code subagent, in plain terms?
A named, scoped role you define once inside a project, with its own instructions and usually its own restricted set of tools and file access. You dispatch it from a primary session for a specific bounded task, it works inside the same project, and it hands the result back. It is different from opening a second terminal session, because it is a defined role with narrower context, not just another window doing the same kind of work.
Are subagents the same as running multiple Claude Code sessions for different clients?
No. Running isolated sessions per client is a workspace-boundary problem, covered separately in how to run multiple Claude Code client projects at once. Subagents operate inside a single client's project, splitting one engagement into parallel scoped pieces. Most builders end up using both: one isolated folder per client, and subagents inside any single client's build that is large enough to decompose.
How many subagents should I define for a typical client build?
Two or three is typical: a build role scoped to the feature code, a test role scoped to the test suite, and often a docs or client-update role. More than that usually means you are spending more time coordinating handoffs than you are saving by parallelizing, which defeats the point.
What causes subagents to collide or overwrite each other's work?
Overlapping file ownership. If two subagents are dispatched against the same file or directory in the same pass, one's output can half-overwrite the other's, or one can start working against a version of a shared file the other is still editing. The fix is to name each agent's exact file boundary in its instructions before dispatching, and never assign the same file to two agents in one pass.
When should I not bother with subagents on a build?
Skip them when the scope is still being discovered, since there is no real boundary to split work across yet, and skip them on tightly coupled changes where a decision in one file forces unpredictable changes in several others. Both cases are handled better by a single session holding full context than by two scoped agents that would spend more time reconciling outputs than either saved.
Last reviewed August 24, 2026.

Co-founder of the Claude Code Profit Room. Went from shipping software to closing paying clients, and now teaches builders the selling half of the equation.
More from David Iya →

