Last Friday afternoon the quality-gate agent reviewed a PR from backend-developer and rejected it with a 312-word critique. Fair feedback. The PR went back, backend-developer rewrote three functions, re-submitted. quality-gate rejected it again. Same 312-word critique. Same three functions.

I was watching this and realized backend-developer had been told to "improve test coverage" by quality-gate in the previous turn, had written tests, and quality-gate's second pass was now complaining the tests existed because they overlapped with what backend-developer had earlier been instructed to skip. The agents were in a loop. Neither was wrong. Both were operating on the spec they had been handed.

This is what happens when you let 35 specialized agents act on the same codebase without rules. They don't fight humans. They fight each other.

The orchestration problem

I keep 35 agents in ~/.claude/agents/. They include backend-developer, frontend-developer, postgres-pro, golang-pro, quality-gate, flow-architect, security-engineer, test-automator, client-communicator, cfo, cto, ceo, inbox-monitor, and 22 others. Most invocations involve 2 to 4 of them in a chain. About 1 in 7 sessions hits a real conflict like the one above.