Fighting Sycophancy and Role Collapse in Agent Councils: akiflow's Un-forked Reviewer
Sycophancy and role collapse make an agent praise its own code. akiflow counters them with a reviewer spawned fresh from a clean context that receives only the diff and closing criteria, plus five role-separated agent definitions.

Two chronic failures of AI agent systems are sycophancy (an agent always agrees and praises its own output) and role collapse (one agent carries several roles whose standards of "correct" conflict).
When one agent plans, writes code, and tests it, it builds a self-justification chain and lowers the quality bar so the roles fit together. This article describes how akiflow separates roles and isolates the reviewer from that chain.
Why is a reviewer forked from the main agent still biased?
[CAUTION] When a review is needed, many systems fork a subagent from the main agent. That subagent inherits the author's entire reasoning history, wrong assumptions included, so it tends to nod through faulty code as a "rubber stamp" without re-checking. Such a review is worse than none, because it emits an approval stamp.
akiflow does not use a context-inheriting reviewer. The reviewer is a plain subagent created from scratch.
How the independent reviewer works
1. Clean context: aki-challenger is a freshly created subagent that carries no history from the lead or the author. Its definition emphasizes what it is not given, not what it knows.
2. Minimal input: only the diff, the item's closing criterion (closes when), and the RULE-agent-behavior.md floor. The lead's reasoning, the room contents, and the rationale are withheld.
3. The first attack targets the decomposition: a requirement with no item, an item with two owners, a closing criterion nobody can check. Every review pass ends on two questions: "what can be cut?" and "does this answer the owner's actual words?".
4. Verification is separate from review: "did I do what I said?" is a mechanical comparison that needs context, so a different plain subagent handles it, given the diff and the promise. "Should this have been done?" is a judgment, and the less context it has the cleaner it is. The two look alike but demand opposite conditions.
Role separation through five agent definitions
Roles live in agent definitions, not in reminders, and the tool set sets the authority:
aki-hands (Read, Grep, Glob): retrieval, judgment forbidden. aki-judge (Read, Grep, Glob): judges against exactly one standard named at spawn, so several standards means several seats. aki-conduct (adds Bash): checks process, using scythe.py. aki-challenger (Read, Grep, Glob): attacks the result. aki-maker (Read, Edit, Write, Bash): the only agent allowed to write files. Read-only is a mechanism, because Edit and Write are simply absent from the list, rather than a reminder an agent could talk itself around.
The roster is not fixed. A seat is convened only when it traces to a requirement in the owner's words; the five files are a catalog, not a menu. Two agents agreeing is not a decision either: only the lead closes an item, and an agreement with no falsifier (a condition that would prove it wrong) counts as manufactured consensus.