Skip to content

RFC: inter-agent exchanges need a loop bound and a human escalation gate #1720

Description

@amrmelsayed

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

  1. 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.
  2. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/towerArea: Tower server / agent farm CLI

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions