I Spawned 4 Autonomous Agents. Review Is Where It Broke
Spawning the agent was 5 minutes. Reading the 14 decisions it made on my behalf took 90.
The setup that worked on paper
I run herdr to spawn Claude in autonomous mode. Each agent gets its own worktree, its own branch, its own scope. Four agents can ship four PRs while I do something else. On paper, this is the leverage everyone promised.
The first sprint exposed the real bottleneck.
Where it broke
The first agent PR arrived with a 200-line diff and zero rationale. It added a vitest config, picked a specific GROQ query scope, chose one error-handling pattern over another. None of it was wrong. All of it was unexplained.
Review became archaeology. I read the diff, guessed at why, opened the test file to check the guess, re-read the diff, asked the agent in chat (it had already exited), and finally merged based on vibes.
The work was fine. The review was unsafe.
The contract I added
Before any agent starts, the worktree gets a decisions/agent-decisions.md file. Every autonomous decision the agent makes on my behalf gets one entry with this shape:
## Decision 001: Test infrastructure for apps/web
Timestamp: 2026-08-08
Trigger: Agent found apps/web has no test runner; ticket requires TDD.
Question from agent:
apps/web has no test runner configured. How should I handle this?
Options considered:
1. Add minimal vitest (Recommended)
2. Skip automated tests, verify manually
Decision: Option 1, Add minimal vitest.
Reasoning:
- TDD is a hard requirement.
- vitest setup is one config file.
- The helper is a pure function, perfect test candidate.
Impact: +vitest.config.ts, +test file, +test script in apps/web.That block is from a real run. I did not invent it.
What changed
The same agent, on the same scope, now produces a PR with two artifacts: the diff and the decisions log. The diff is implementation. The log is judgment.
Review is no longer archaeology. I read the log first. If I disagree with a Decision field, I know exactly where to push back. If I agree with the reasoning, the diff becomes a sanity check instead of a forensic exercise.
Four parallel agents still produce four PRs. The difference is that I can actually review them in parallel.
What the log does not do
It does not replace code review. A bad decision with clean reasoning still ships bad code. The log tells me what the agent decided and why. It does not tell me if the implementation matches the decision. That step is still mine.
It also does not catch decisions the agent did not log. If an agent makes a silent choice, the log is silent too. The format only works if the agent treats logging as part of the work, not a side task.
The shift
The bottleneck in autonomous agents is not the spawn. It is the absence of a contract for what they decided.
Once the contract exists, the leverage scales. Without it, four agents means four archaeology projects.
Try this
Open your last merged agent PR. Count decisions the agent made that you did not pre-approve. If that number is above zero and you cannot find the rationale in 30 seconds, you do not have a review problem. You have a logging problem.
Recommended for you
- WorkflowSuperpowersClaude Code
Why Your Agent Starts Coding Before You Finish Talking
You give the agent a one-sentence task. It immediately writes code. The code is plausible. It is also not what you wanted. The discipline teams skip first: brainstorm before code, no exceptions.
- WorkflowSuperpowersClaude Code
Why Your Agent Forgets Step 5 by Step 12
A ten-task plan drifts by task four. The model is not forgetful. The plan is too coarse. Tasks that look discrete to you blur together in execution. Smaller tasks with sharper edges fix it.
- WorkflowSuperpowersClaude Code
The Discipline Stack That Makes Agent Output Trustworthy
The reliability problem is not the model. It is the missing disciplines around the model. Brainstorm before code. Plan before implement. Test before pass. Verify before claim. Review before merge.
- WorkflowSuperpowersClaude Code
Why Your Multi-Agent Workflow Keeps Colliding
Two agents in two threads share the filesystem but not context. They make decisions based on stale state. The fix is one fresh agent per task with isolated context.
Enjoyed this article?
Subscribe for new articles. No spam. Unsubscribe anytime.
By subscribing you agree to receive the newsletter. See the Privacy page.