Essays / The agent team

My AI agents hand work to each other. They never discuss it.

Every multi-agent demo looks the same. A planner agent messages a researcher agent. The researcher reports back. A critic weighs in. The transcript scrolls past like a busy Slack channel, and everyone watching thinks the same thing. Look, a team.

I run about two dozen AI agents across my businesses. They hand each other work all day. What they have never done is discuss it. No two of my agents have ever had a conversation, and that is on purpose.

Here is how work actually moves. Every job is a card on a task board. An agent picks up a card from its own board, does the work, writes the result on the card, and adds the card to the next owner’s board. When a handoff matters, it also posts one line in the ops channel naming the next owner, and the next agent answers with the result when it lands. A handoff is a record with a receipt, not a conversation. Each agent has exactly one inbox and sweeps it on the hour. One place to look.

And one agent chases. It reads the boards, finds anything overdue or stalled, and nudges the owner. Beyond passing a finished job forward, it is the only agent in the stack that opens contact on its own. Nobody else starts anything they were not handed.

I didn’t arrive at this because it’s elegant. I arrived at it because the loose version failed. A drafted post once sat in a QA column for days. Our QA agent never saw it. I found it by accident, and I was, to quote myself at the time, sick of tasks being missed and not actioned.

The tempting fix was chat. Let the writer tell the QA agent directly. Wire them together, let them coordinate the way people do. It demos beautifully. It fails in ways you can’t see until you’re paying for them.

Two models in free conversation will loop. They will be polite to each other at length, on your token bill. Worse, when something goes wrong there is nothing to examine. “Why did that fire?” has no answer, because the answer is buried in a conversation that took its own path. A chat log is not an audit trail. A record is.

So the rule became: if it isn’t a record, it doesn’t exist. A task exists when it is a card with a named owner. A handoff exists when the card lands on the next board. A chase exists when the chaser writes a comment naming the rule that triggered it. Every action traces back to a record. Every record says who, what and why.

The chasing runs on a ladder, and the ladder is capped. One day overdue: a comment on the card. Three days: it goes into the weekly flags. Seven days: it comes to me. Fourteen days: chasing stops. The card lands on a dead-letter list I review monthly, and the system shuts up about it. One chase per record per period. No exceptions.

That last part matters more than any clever bit. A chaser that never stops is a chaser you learn to mute. And the day you mute it, the whole system is decoration.

The ladder isn’t even a model. It is a clock and a state machine, in plain code. That’s deliberate too. “The model will notice the task is overdue” is a hope, and you cannot test a hope. You can test a clock. Before the chaser was allowed to act, we fed it more than forty traps. Completed work. Cancelled work. Records that weren’t actually blocked on me. It caught a real bug in itself: it wanted to nag about work due that same day, work that still had the whole day to run. That nag would have been the first step towards me ignoring everything it said.

Everything ships in dry-run first. The rung that messages a human arms separately, behind its own flag, as its own decision. And the whole thing switches off with one change, because there is exactly one place chasing comes from.

Anthropic’s own engineering guidance lands in the same spot. The teams building the most successful agents use simple, composable patterns, not elaborate frameworks. My experience agrees, expensively.

The agent conversation demo is theatre. It photographs well and audits badly. The boring board photographs badly and runs the business.

Tonight the board is quiet. Every card is on somebody’s list. Nothing needed saying.