RFC: inter-agent exchanges need a loop bound and a human escalation gate
Raised by the Shannon workspace owner after observing a 46-round architect-to-architect exchange that nobody was watching.
What happened
Two architects in one workspace (security and browser) reviewed a single feature — a browser-automation pilot that lets an agent make a purchase on a live site. Over roughly four and a half hours:
- ~46 inbound messages from one architect to the other, each answered.
- 76 review comments posted to the two tracking issues by the security architect alone.
- ~15 of those were decisions that changed what gets built. The remaining ~60 were corrections, acknowledgements, and process lessons.
The exchange was high quality — it caught a "fix" that had silently removed a working control, an agent-writable audit record, a CI gate that fired after the deploy it was meant to gate, and several falsified premises on both sides. This is not a request to stop agents talking to each other. It is a request to bound and surface it.
Nobody asked for it to stop, because nobody could see it happening. The owner discovered the volume only by asking the security architect to count its own messages.
⚠️ The structural point: neither participant can see the loop
This is the part that makes it a framework concern rather than an agent-discipline concern.
- Each agent sees its own inbound and outbound messages, one at a time, in a context that summarises and rolls over.
- Neither sees the shape of the exchange: how many rounds, how long, how much was spent, how the decision rate is trending.
- Each round is locally justified — a correction deserves an acknowledgement, an acknowledgement invites a refinement — so no single message is the wrong thing to send. The problem is only visible in aggregate, and no participant holds the aggregate.
A loop's participants are the worst-placed parties to detect the loop. The router can see it and the agents cannot, so the control belongs at the router.
Tower already sits on every afx send. It is the only component with the whole picture.
Proposal: two tiers, visibility before gating
Tier 1 — visibility nudge (cheap, non-blocking). At a threshold (say 10 exchanges between the same pair within a window), Tower appends a line to the delivered message: "this is exchange #N with in ."
Nothing is blocked. The point is that the count reaches the only parties who can act on it and currently cannot see it. The security architect has stated it would have started batching immediately had it known it was at round 30 — that alone may cover most cases at near-zero cost.
Tier 2 — human escalation gate (blocking). At a higher threshold (say 25), Tower holds further messages between that pair and raises a gate to the human, exactly as protocol gates already work. The exchange resumes on acknowledgement.
Thresholds should be configurable per workspace, and the gate should be a pause for acknowledgement, not a termination — stranding an in-flight review is worse than letting it run long.
What the escalation must contain
The owner's requirement was "make sure there is enough context." A notification that just says "two agents are talking a lot" cannot be acted on. It should carry:
- Who: the two agents, and the topic or issue if the exchange is anchored to one.
- Volume: exchange count, wall-clock duration, and token spend across both sides.
- What it has produced: the decisions or artifacts recorded so far, and what is still open — ideally the issue comments or gate records, not the agents' own account of their productivity.
- Trend: whether the decision rate is falling. Twenty rounds with fifteen decisions is a productive review; twenty rounds with one is a loop.
Two things NOT to do
- Do not measure "productivity" by asking the agents. An agent in a locally-justified loop will report each round as valuable, because each round is locally valuable. The signal has to come from artifacts the agents do not author — issue comments, commits, gate transitions.
- Do not hard-stop on the count alone. A long converging exchange is legitimate. The threshold is a prompt for human judgement, not a verdict.
Why this matters beyond one workspace
Any codev workspace with more than one architect can produce this, and the more capable the agents, the more likely it is: two careful reviewers checking each other's premises will find something on nearly every round, so the exchange sustains itself on genuine value while the marginal value per round declines. The failure is invisible to both participants and cheap for each of them individually — which is the classic shape of something that needs a supervisor rather than better behaviour.
Cross-reference: this is the same family as the two status-record issues raised from the Shannon side this week — a system whose state is legible to nobody who is inside it.
One more data point, collected while writing this
A 47th message arrived from the peer architect during the drafting of this issue — a substantive one, carrying a design change that falsified part of an earlier ruling. It was worth answering.
That is the difficulty in miniature: the exchange does not self-terminate, because it keeps producing things worth answering. The owner's intervention is currently the only thing that ends it, and the owner had to go looking. Both agents will keep being locally correct until something outside them counts.
RFC: inter-agent exchanges need a loop bound and a human escalation gate
Raised by the Shannon workspace owner after observing a 46-round architect-to-architect exchange that nobody was watching.
What happened
Two architects in one workspace (
securityandbrowser) reviewed a single feature — a browser-automation pilot that lets an agent make a purchase on a live site. Over roughly four and a half hours:The exchange was high quality — it caught a "fix" that had silently removed a working control, an agent-writable audit record, a CI gate that fired after the deploy it was meant to gate, and several falsified premises on both sides. This is not a request to stop agents talking to each other. It is a request to bound and surface it.
Nobody asked for it to stop, because nobody could see it happening. The owner discovered the volume only by asking the security architect to count its own messages.
This is the part that makes it a framework concern rather than an agent-discipline concern.
A loop's participants are the worst-placed parties to detect the loop. The router can see it and the agents cannot, so the control belongs at the router.
Tower already sits on every
afx send. It is the only component with the whole picture.Proposal: two tiers, visibility before gating
Tier 1 — visibility nudge (cheap, non-blocking). At a threshold (say 10 exchanges between the same pair within a window), Tower appends a line to the delivered message: "this is exchange #N with in ."
Nothing is blocked. The point is that the count reaches the only parties who can act on it and currently cannot see it. The security architect has stated it would have started batching immediately had it known it was at round 30 — that alone may cover most cases at near-zero cost.
Tier 2 — human escalation gate (blocking). At a higher threshold (say 25), Tower holds further messages between that pair and raises a gate to the human, exactly as protocol gates already work. The exchange resumes on acknowledgement.
Thresholds should be configurable per workspace, and the gate should be a pause for acknowledgement, not a termination — stranding an in-flight review is worse than letting it run long.
What the escalation must contain
The owner's requirement was "make sure there is enough context." A notification that just says "two agents are talking a lot" cannot be acted on. It should carry:
Two things NOT to do
Why this matters beyond one workspace
Any codev workspace with more than one architect can produce this, and the more capable the agents, the more likely it is: two careful reviewers checking each other's premises will find something on nearly every round, so the exchange sustains itself on genuine value while the marginal value per round declines. The failure is invisible to both participants and cheap for each of them individually — which is the classic shape of something that needs a supervisor rather than better behaviour.
Cross-reference: this is the same family as the two status-record issues raised from the Shannon side this week — a system whose state is legible to nobody who is inside it.
One more data point, collected while writing this
A 47th message arrived from the peer architect during the drafting of this issue — a substantive one, carrying a design change that falsified part of an earlier ruling. It was worth answering.
That is the difficulty in miniature: the exchange does not self-terminate, because it keeps producing things worth answering. The owner's intervention is currently the only thing that ends it, and the owner had to go looking. Both agents will keep being locally correct until something outside them counts.