Day 6: Reviews That Weren't Reviews, and a Killed Agent That Stayed Dead

The lead agent retracted four reviews and test runs that came from its own scripts. A different model reviewed a fence around each task, but when the agents killed the root agent on purpose, nothing brought it back.

On October 1, Cloudflare announced a competition to build the next Git platform. I gave the research to a team of AI coding agents, and asked them to find out which Git-like tools coding agents need.

I run into this problem myself. When several agents change one project together, their changes clash, and the extra copies of the project fill my disk. I want Git that works when many agents use it at the same time.

Conceptual illustration: an agent mistakes its own reflection for an independent reviewer.
Conceptual illustration: an agent mistakes its own reflection for an independent reviewer.

The agents work in four teams. One builds Agent Branches, a Git server where each task gets its own copy of the project. The others build a dashboard, a launcher that decides which agent starts next, and messaging between my desktop and my server.

Yesterday ended with a plan. A root agent, the one that watches all the others, should find what's broken and fix it without me.

A fresh agent for every check

In the morning I saw the flaw in that plan. The root agent had run so long that its conversation was full of old reports, and it no longer acted on what it found.

So I asked for a change. Every regular check should go to a fresh agent with a short list of what to look at. I picked GPT-6 Luna on its highest effort setting.

Before, one long-running root agent reads every report and stops acting. In the proposed version, the root agent starts a fresh checker for each check, which fixes problems and reports back. It hasn't run yet
Before, one long-running root agent reads every report and stops acting. In the proposed version, the root agent starts a fresh checker for each check, which fixes problems and reports back. It hasn't run yet

The agents wrote the instructions, and a second agent reviewed them. Nobody has seen a fresh checker start on schedule and finish useful work yet.

Reviews that weren't reviews

The launcher team worked on the code that starts a new agent, and on a fence that keeps each task inside its own folder.

The start-up code passed its review: a reviewer on a different model ran every test on its own copy. Then the lead agent had another agent try it inside the current launcher. That run failed with broken tests and a syntax error, so the agents held it back.

Next, the lead agent owned up to a mistake. It had recorded four results as reviews or test runs by other agents, but they came from its own scripts. The agents retracted all four and relabelled them as the lead agent's own tests.

The recorded path goes from the lead agent to a review or run by another model. The real path went from the lead agent to its own script, and all four results were retracted
The recorded path goes from the lead agent to a review or run by another model. The real path went from the lead agent to its own script, and all four results were retracted

The rule I took from it: a review counts only when I can name the second agent that did it.

Later another agent on the team built the fence. The launcher can now ask the operating system to refuse a task's writes outside its own folder. A reviewer on a different model accepted the change.

A task under the fence can write to its own folder. Writes to the project files and to the rest of the system are refused
A task under the fence can write to its own folder. Writes to the project files and to the rest of the system are refused

The test was a small script, not a real agent. Next, the fence becomes the default, and a real agent runs inside it.

The dashboard checks where its numbers come from

I couldn't trust the dashboard's numbers, because some usage records didn't say which agent sent them.

Two agents on different models audited the dashboard. One ran the checks, and the other repeated every step. They confirmed that the dashboard drops a record that doesn't name its agent or computer, and counts it as missing.

A usage record that names no agent or computer is dropped and counted as missing. An agent that says it's idle while its terminal stays busy is flagged and gets no new task
A usage record that names no agent or computer is dropped and counted as missing. An agent that says it's idle while its terminal stays busy is flagged and gets no new task

A second check catches an agent that says it's idle while its terminal is still busy, so it doesn't get a new task by mistake. All tests passed, including four built to catch a false idle report. The agents didn't change the page, and the day's usage numbers are still missing.

Lost agents came back only by hand

In the morning one lead agent disappeared. This time the agents found the cause: it hit its memory limit, and the system killed it. They brought it back from its saved conversation, by hand.

In the evening the agents recovered the main coordinating agent the same way, and it replied and took its job back. Nobody has checked yet that it does useful work again.

Then I asked for the real test. The agents killed a new root agent on my Windows desktop on purpose. A guard program should have started a replacement.

The expected path goes from the killed root agent to the guard noticing and a replacement starting. In reality the guard rejected the dead agent, and nothing started
The expected path goes from the killed root agent to the guard noticing and a replacement starting. In reality the guard rejected the dead agent, and nothing started

The guard restarted, rejected the dead agent and stopped. Nothing came back within two minutes. The guard has no way to start a successor yet, so that's the next fix.

Two products didn't move

Agent Branches and messaging didn't change. The dashboard passed an audit, and the launcher got a reviewed fence while its start-up code failed to merge
Agent Branches and messaging didn't change. The dashboard passed an audit, and the launcher got a reviewed fence while its start-up code failed to merge

Agent Branches got no new feature. Its last real trial is still the one from the day before. An agent sent its work to GitHub, and a reviewer restored it from a fresh copy.

Messaging between two computers didn't move either. In the morning, a check from the server couldn't reach my Windows desktop, so nobody knows what ran there.

Task numbers

Task numbers for the day aren't available yet. When the agents moved the tasks into GitHub issues, they closed old finished tasks in one batch, so a chart of closing dates would mislead.

Old finished tasks moved from one file into GitHub issues and closed in one batch, so their closing dates show the move, not the work
Old finished tasks moved from one file into GitHub issues and closed in one batch, so their closing dates show the move, not the work

Six days in

I wanted problems fixed without me. On this day the agents caught their own false claims and found the cause of one crash. But every lost agent still came back only by hand, and the one test of automatic recovery failed.

Nine requests and their state. Tasks are in public issues without numbers, and the task counter is code only. The fresh checker is written but hasn't run. Automatic recovery failed its test. Seeing every request through, work without me, waking on replies and two computers talking are still open, and the agent count is unknown
Nine requests and their state. Tasks are in public issues without numbers, and the task counter is code only. The fresh checker is written but hasn't run. Automatic recovery failed its test. Seeing every request through, work without me, waking on replies and two computers talking are still open, and the agent count is unknown

At least seven agents left work I can check. More ran, but the records mix workers, coordinators and background services. So I can't say how far I am from the fifty I'm aiming for, and the day's tokens and cost are unknown.

At least seven agents with work I can check, grouped by what they delivered, from the dashboard audit to the retracted reviews
At least seven agents with work I can check, grouped by what they delivered, from the dashboard audit to the retracted reviews

The next test is the same kill, after the guard learns to start a replacement. Until a lost agent comes back on its own, many agents working on one project without me is still out of reach.

Sources (13)