LabsEssay7 min read

Four eyes for machines

Why an approval given in chat proves nothing, and how to bind the yes to the exact action.

Here’s an approval that happens a thousand times a day, in one form or another:

aliceagent wants to raise the EUR/USD limit for the afternoon, ok?

bob👍

Four minutes later the agent raises the limit. Everyone moves on.

Now read that thread the way an auditor would. Raise it to what? Two million or twenty? For this afternoon, or until someone notices? Did the agent do what Alice described, or something close to it? Was the thumbs-up for this change, or for the one Alice asked about an hour earlier in the same thread?

The thumbs-up was real. Bob meant it. It still proves almost nothing.

Why four eyes works for people

Banks have run the four-eyes principle for decades. One person prepares a payment and a second releases it. One person writes a limit change and another approves it. It works for a few plain reasons.

The checker sees exactly what will happen, not a summary of it. The checker is a different person from the maker, and the system enforces that. And the approval happens inside the system that does the work, so the yes and the action are welded together. Nobody has to work out afterwards which yes went with which payment.

Take any of those away and four eyes turns back into two eyes and a formality.

What agents quietly break

Agents take all three away at once, usually without anyone deciding to.

  • The checker sees a description, not the call.Alice describes what the agent wants to do. Then the agent builds the real call itself, with its own arguments. The description and the call can drift apart, and nobody compares them.
  • The maker can approve themselves.When the agent runs under a shared service account, the person asking and the person approving can be the same human, and nothing notices.
  • The yes lives somewhere else.Chat, email, a ticket. It isn't tied to one call, so it can be reused, misread, or matched to the wrong action months later.

Agents also bring a problem people never had: speed. An agent can send fifty calls in the time it takes Bob to read one. If the approval doesn’t happen in the path of the call, it happens after it, and an approval after the fact is just a signature on a report.

Binding the yes to the action

So what does four eyes look like when one of the actors is a machine? We think it comes down to five rules.

  • The call waits.A call that needs approval is held where it would have run. It goes nowhere until someone decides.
  • The approver sees the real call.Not a description, but the actual tool and arguments, the agent, and the person it acts for. EUR/USD, 2,000,000, until 18:00, agent:pricer-7, for alice.
  • The approver signs with their own key.A passkey on their own device, so the approval is theirs and nobody else's. "Bob approved" becomes something you can prove rather than something you assume.
  • An approval covers one call, once.It can't be saved and reused for the next change, or for the same change tomorrow.
  • Nobody approves their own call.If Alice asked, Alice can't sign. The rule is enforced, not hoped for.

Then the decision and the call go into the same record. The yes and the action are welded together again, the way they were when four eyes was invented.

The trap: approving everything

There’s a failure on the other side, and it’s just as real. If every agent call needs a human, people stop reading. The fiftieth request of the morning gets the same tired click as the first. Within a month, someone turns approvals off “for now.”

Four eyes was never meant for everything. Nobody asks a second person to approve a coffee order. It’s for the actions that matter: money above a threshold, changes to production, records someone will rely on later. So the real design work is deciding which calls need a person and writing that down as policy, such as “any limit change needs a desk head” or “any trade of one million or more needs a second signature.” Everything below the line runs on its own, and it’s still recorded.

Who reviews at machine speed?

That still leaves a gap. Below the line, nobody looks. Above it, a person reads every call. Agents keep getting faster, and there won’t be more Bobs.

That last part is the point. A machine reviewer can carry the volume. It can’t carry the responsibility. That stays with people, and the record has to show which people.

Back to the thumbs-up

Hold the call, show the real arguments, get a passkey signature from Bob, and make sure Alice can’t approve her own request. The same afternoon then looks like this:

agent
agent:pricer-7
acting for
user:alice
call
limits.set · EUR/USD · 2,000,000 · until 18:00
rule
limit changes need a desk head
signed by
user:bob · passkey · 14:01:12Z
valid for
this call, once
sealed
checkpoint #31

Same people, same afternoon, same decision. The difference is that now it counts.

The bank, the chat and the record above are illustrative.