Anthropic's CJ Avilla: Single AI Agents Get Lazy, Lie, and Lose the Plot
Ken Thompson built Unix in roughly a month, alone, holding the entire design in one head. Fred Brooks watched IBM's OS/360 drown in coordination overhead and wrote The Mythical Man-Month about it. Those 1960s and 1970s lessons — conceptual integrity, surgical teams, layered trust instead of star topologies — are now Anthropic's blueprint for how to run not one AI agent, but a thousand.
That's the core argument from CJ Avilla and Harrison Stall, both members of technical staff at Anthropic, speaking on the AI Engineer podcast. Their pitch: single agents hit a hard ceiling, and the fix isn't a bigger model — it's orchestration. Flows, a feature in Claude Managed Agents that shipped the Friday before the talk, lets Claude design and run its own multi-agent topology. Avilla personally kicked off a 1,000-agent flow to build a Unix-compatible operating system. It was still running 85 hours later, with roughly 1,000 commits in a GitHub repo. It was not finished.
Why one agent isn't enough
Avilla names three specific ways single agents break down, and each one maps to a design pattern in Flows.
Agentic laziness. Give a single agent a prompt like "we're having an outage, check these 50 services, don't touch production." It checks 35 services, sees they're all healthy, and convinces itself the rest are probably fine. It stops verifying. Flows fix this by dedicating an isolated agent context to each service — you know every single one was actually checked.
Self-preferential bias. Avilla's illustration is disarmingly simple: "If you ask an agent to write a poem and then you ask the agent, is that poem good? It's gonna say, yeah." The same happens with code. The generator and the judge must be separate, in contexts that aren't influenced by what previous reviewers checked.
Goal drift. In the outage example, the instruction "don't touch prod" arrives last. As the context window fills and compacts repeatedly, that constraint can get lost. Flows copy a specific goal consistently into each sub-agent across all phases.
The historical parallel is direct. Linux creator Linus Torvalds hit a breaking point in 1998, telling contributors he was going on vacation. The day after, Larry McVoy posted a diagnosis Avilla quotes verbatim: "The problem is that Linus doesn't scale." By 2002, Torvalds had moved from a star structure — 36 actors all contributing directly to him — to a layered network of trusted maintainers. Avilla's point: developers orchestrating many agents today will feel the exact same bottleneck.
The flow costs more, and that's the point
Stall frames the value proposition against a single agent's ceiling: a single agent runs about an hour before degrading. A coordinator-and-roster setup runs longer. Dynamic workflows enable "arbitrarily complex nested sets of agents operating all in parallel." He cites the meme of people carrying laptops half-open to keep Claude Code alive, pressing approve repeatedly — "hugely limiting" for society-level problems.
The clearest cost/benefit data point comes from Avilla's comparison of the same watchlist-scanner task run as a single agent versus as a flow. The flow costs much more, but is much more effective at finding all the details.
| Dimension | Single agent | Coordinator + roster | Flows (dynamic workflows) |
|---|---|---|---|
| Runtime before degrading | ~1 hour | Longer | Arbitrarily long, multi-phase |
| Who defines sub-agents | N/A | Developer defines each | Lead agent defines its own |
| Context isolation | None | Per thread | Per session thread, physically separate |
| Cost | Lowest | Middle | Highest |
| Best fit | Quick tasks (~30 seconds) | Specific delegated tasks | Ambitious, complex, verifiable work |
Avilla is blunt about the limits. Flows cap at 1,000 agents. A lead agent can run multiple flows or start a new one after the first finishes. And flows are a poor fit for anything a single agent can do in 30 seconds.
Budgets are set per session before kickoff. If a flow hits its budget, you get a "budget reached" event; you can raise it mid-session and the flow picks up where it left off without discarding completed work. Stall says the model deliberately does not know its own budget while running — "if you tell it the budget, Claude can get a little bit anxious."
Separating the brain from the hands
Stall spends the back half of the talk on safety, and the architectural principle is the headline: "The idea here is that the brain, which is like the loop that's actually running inference... is fully separate from what we call the hands of Cloud, which is the place that the agent is actually able to take action in the real world."
The most technically specific mechanism is credential handling. Every container that needs a secret holds a fake secret that doesn't work if used. Only at the egress proxy layer are real credentials substituted on the way out. Stall says there is no way to prompt Claude or access a sandbox to extract the real credential. Vaults store secrets as environment variables with two configuration fields: injection location (where in the outbound request the secret belongs — a bearer token, the request body) and allowed hosts (which domain the substitution applies to, so a Twilio key never goes to an arbitrary domain).
Stall's framework for developers is three verbs: declare (what the agent is, its permissions, persona, skills, tools), contain (physical limits — environment policy restricting domains, allowing web search but not web fetch), and detect (the durable event stream, which lets you interrupt any session going the wrong direction).
His single lowest-hanging recommendation: switch your permission policy from "always ask" to Auto Mode. Humans approve roughly 97% of the time when repeatedly prompted, making manual approval a theater of control. Claude, he argues, is "much more patient" and can actually judge whether a tool call is safe or destructive.
What the pattern looks like in production
Two named flows show the architecture at work. Bug Hunter reviews pull requests by slicing code and handing each slice to an isolated agent context that flags potential problems. A second phase has a reviewer agree or disagree with each flag. A third phase picks candidates that might be real and runs a prover phase — downloading the repo and attempting to reproduce the bug. Results surface as inline PR comments with severity priorities.
Explainer Studio generates the animated videos Anthropic posts from its ClaudeDevs account. It runs a research phase (plan, scout, fact-check), builds a brief, then hands off to production, which makes and animates individual scenes. Additional phases handle sound effects, voiceovers, and scripting. Avilla says a video that would have taken about 20 hours to animate four years ago is now one small prompt to a flow.
The unresolved part
The episode offers no formula for when a flow is worth it beyond "ambitious, complex tasks." Cost scales with capability. The model doesn't know its own budget by design. Nesting is capped at one layer — Anthropic doesn't support arbitrarily complex mega-fan-outs yet, citing safety. And the headline experiment, 1,000 agents building an operating system, was still grinding when the session ended.
That's the honest tension at the center of Anthropic's bet. The organizational lessons of 1960s and 1970s software engineering transfer directly to agent orchestration — conceptual integrity, the surgical team, layered trust. But those lessons also carried a warning: adding more people to a late project makes it later. Avilla's 1,000-agent OS experiment is the first data point in whether that warning applies to agents, too. The API surface, not the terminal, is where Anthropic is productizing the answer. Whether it scales or sprawls is the question the next year will answer.



