Pattern one: single agent with tools
This is the default, and it should stay the default until you have a specific reason to leave it. One agent, one context window, a scoped set of tools it calls in a loop. No handoffs, no shared state between agents, because there's only one agent. Most support workflows, most internal copilots, and most document-processing tasks fit here without strain.
The failure mode people worry about, "the agent gets confused with too many tools," is usually a tool design problem, not an orchestration problem. Twelve well-scoped, well-named tools with typed inputs beat four agents each holding three tools and passing messages between them. You avoid an entire class of bugs, message-passing bugs, state-sync bugs, ordering bugs, by staying in one loop.
We reach for a second agent only when one of three things is true: the subtask needs a materially different context (a long document the main loop shouldn't carry around), the subtask needs a different model for cost or capability reasons, or the subtask needs an isolated failure boundary so a crash there can't take down the main loop. Absent one of those three, stay single-agent. Read more on when to size the stack up in our take on agents vs agentic AI.