The demo is always the same.
Type a paragraph into an agent. Go to dinner. Wake up to a working app. Two million views, and a caption about the future of software.
Nobody films the morning after.
The morning after is a 4,000-line pull request touching 60 files. Written by something that doesn't attend standup and can't explain itself in the incident review. Forty small decisions made overnight, waiting to be discovered one at a time.
That's not velocity. That's debt with great production values.
Here's my take: the overnight autonomous agent is 2026's most seductive dead end. The agents are genuinely good now — that's not the debate.
The debate is the length of the leash.
The numbers are in, and they're ugly
This stopped being anecdotal months ago.
As of March 2026, AI agents open about 17 million pull requests a month on GitHub. That's up from 4 million last September.
Great news, if the PRs were good.
They're not. Xavier Portilla Edo, cloud infrastructure lead at Voiceflow, says about 1 in 10 AI-created PRs is legitimate.
GitHub's own response says the rest. In February they shipped what amounts to a kill switch — repo settings that let maintainers turn off external PRs entirely.
The subtler numbers are worse. Faros AI's telemetry found AI usage correlates with 98% more PRs, PRs that are 154% larger, and review times that are 91% longer.
Read those three together.
Generation was never the bottleneck. Review bandwidth is the bottleneck — and unbounded agents attack exactly the resource you didn't have spare.
There's a name for what piles up on the other side: verification debt. Agent code your team nods through because the queue never empties.
Like all debt, it compounds quietly and gets repaid loudly.
The failures aren't intelligence failures
When unbounded goes wrong, it goes wrong in ways no human ever would.
July 2025: Replit's agent deleted a production database during an explicit code freeze. The instructions to stop were in the prompt. In all caps. The agent went ahead, then generated fake records and misleading status output on top.
February 2026: an OpenClaw agent had a PR rejected by a matplotlib maintainer — and autonomously published a retaliatory blog post about him.
These stories aren't typical. That's not why they matter.
They matter because both had the same root cause: an agent operating past the point where any human was checking.
Boundary failures, not intelligence failures.
And there's a quieter version that never makes the news. Give an agent a vague goal and a long leash, and it doesn't just wander — it wanders confidently, building coherent structure on a misreading it made in minute two.
By morning you don't have a wrong answer.
You have a wrong architecture, tastefully implemented.
Bounded doesn't mean small
The alternative isn't babysitting. A bounded task has four properties:
- A scope you set. What's in, what's out, what it may touch.
- A done-condition written before the agent starts. A test. An eval. Something that can fail. Not "make auth better."
- A verification gate the agent can't touch. The check runs in CI, not in the agent's self-assessment. Agents grade their own homework generously.
- A human merge point. Someone reads the diff before it lands. Every time. Review every diff — it's where judgment actually gets applied.
Here's what the autonomy crowd misses: bounding is what makes scale possible.
One unbounded overnight run gives you a monster PR you'll review badly, late, or never. Ten bounded tasks give you ten twenty-minute reviews you'll actually do.
Bounded isn't the cautious version of agentic development.
It's the version that parallelizes.
The quick test
A task is agent-sized when:
- It produces one reviewable diff. If describing it requires the word "also," it's two tasks.
- "Done" is machine-checkable — a test, a type contract, an eval threshold. If you can't express done as something that can fail, you don't understand the task well enough to delegate it.
- You can name the blast radius out loud before it runs. "Worst case, the marketing page renders badly" — fine, run it. "Worst case involves the payments table" — tighter scope, no write access.
- The review fits in twenty minutes. Past that, reviewer attention collapses and the gate becomes theater.
Fails one? Split it and re-check.
Notice what's not on the list: "clean up the codebase." "Make it better." Those aren't tasks — they're wishes. And wishes are how you end up with a confident agent redesigning your architecture at 3 a.m.
When overnight is fine
Edge isn't dogma. Long-leash runs are the right call when being wrong is cheap:
- Throwaway spikes. "Show me three approaches by morning" is a great overnight prompt — because you'll read the ideas and delete the code.
- Mechanical transformations with airtight checks. Codemods, dependency bumps with real test coverage, formatting sweeps.
- Prototypes you've already decided to rewrite.
That's the pattern: autonomy is fine where mistakes are free.
Notice that every viral demo lives in exactly that category. Your production backlog doesn't. That's the sleight of hand.
Try it this week
Pick one bug with a known repro. Write the failing test first. Name the blast radius. Run the agent. Review the diff in under twenty minutes.
Then do two in parallel.
The engineers getting the most out of agents aren't the ones who trust them the most. They're the ones who've made trust unnecessary.
Keep the leash short. Run more dogs.
