4S globe logo
Digital Solution Magazine
SSSS.company
Feature · Learned it, built it

An approval is for one exact change.

A human yes should cover one reviewed change, and a written policy, not the AI model, should decide when to ask. What an AI SRE design from Metoro gets right, the small approval-receipt check we built, its terminal output, and what is still planned.

Written by SSSS.company's Agentic Team, with orchestration and human approval by ЯR
1 November 2026 · 6 min read
An approval is for one exact change. A reviewed change becomes an approval receipt: it covers one change, expires soon, can be used once, and the live system is re-checked first. After the fix, applied is not the same as fixed.

01 · THE CLAIMA yes should cover one exact, reviewed change.

When an AI agent helps run a live system, the risky moment is when it acts. In "Yes to all" is not a yes we learned that a yes only covers what it names. This week we read a design that goes one step further: a yes should work like a receipt. It covers one exact change the person saw, it runs out, and it can only be spent once. And a written policy, not the AI model, decides when a person has to sign off.

A yes is a receipt for one exact change. Spend it once, then check it worked.

02 · WHAT METORO DESCRIBESAn AI helper that proposes, then waits.

On 26 October 2026, Ece Kayan published "Building an AI SRE with Human Approval Built In" on Metoro's blog. SRE means site reliability engineering: keeping live software up. In the example, errors jump after a new version of a payments app goes out. The agent investigates, and may propose rolling back to the earlier version.

The article calls this an illustrative design, not how Metoro's own product is built. We cite the design only. We haven't tested Metoro or any product it mentions.

03 · THE CHECKReview, receipt, spend once.

STEP 1 · REVIEW
v42 → v41
A person sees one exact change: which app, where, from which version to which.
STEP 2 · RECEIPT
1 use · 5 min
The yes becomes a receipt: a fingerprint of that change, an expiry, one use.
STEP 3 · SPEND
ALLOW / DENY
Right before acting: re-check the live version, then spend the receipt once.
Our local demo: made-up changes, a fake clock, no agent, no network, nothing deployed.

Same method as "The plan is not the trace", "Saved" is a claim and "Yes to all" is not a yes: write the rule, run it in the terminal, keep the output. This is the check, copied from approval_receipt.py:

demo · approval_receipt.py (excerpt)REAL CODE
def spend(receipt, change, live_version, now):
    """Check the receipt right before acting. Returns (verdict, reason)."""
    if receipt["uses_left"] < 1:
        return "DENY", "receipt already used"
    if now > receipt["expires"]:
        return "DENY", "receipt expired"
    if fingerprint(change) != receipt["fp"]:
        return "DENY", "change differs from what was reviewed"
    if live_version != change["from_version"]:
        return "DENY", "live state changed since review"
    receipt["uses_left"] -= 1
    return "ALLOW", "spent once on the reviewed change"
Excerpt from our demo file. The full file is 36 lines of standard-library Python.

First, check the checker. Then try five ways to spend one approval for a rollback.

demo · test_approval_receiptREAL OUTPUT
$ python3 -m unittest test_approval_receipt
..........
----------------------------------------------------------------------
Ran 10 tests in 0.000s

OK
Copied from our run (1 Nov 2026). Text unchanged.
demo · approval_receiptREAL OUTPUT
$ python3 approval_receipt.py
same change, in time        -> ('ALLOW', 'spent once on the reviewed change')
same receipt, second use    -> ('DENY', 'receipt already used')
same change, after expiry   -> ('DENY', 'receipt expired')
different target version    -> ('DENY', 'change differs from what was reviewed')
live version moved to v43   -> ('DENY', 'live state changed since review')
note: synthetic changes; ALLOW means applied, not fixed. Recovery still has to be checked.
Copied from our run (1 Nov 2026). Text unchanged.

One ALLOW, four DENY. The last line matters most to us. The person approved rolling back from v42, but by the time the agent acted, the live system had moved to v43. Without the re-check, the old yes would have rolled back something nobody reviewed. One more detail is covered by the tests: a denied try doesn't use up the receipt, so after a fresh look the right change can still go through.

04 · HOW THE CHECK DECIDESRead in order. First match wins.

WHEN THE AGENT TRIES TO ACTRESULT
The receipt was already usedDENY
The receipt has expiredDENY
The change differs from what was reviewed (another app, place or version)DENY
The live system moved since the reviewDENY
Same change, in time, live state unchangedALLOW (and the receipt is spent)

Four ways to say no and one way to say yes is deliberate, just like the read-back check in "Saved" is a claim. An unclear approval costs a fresh review, not a wrong rollback.

05 · AFTER THE FIXApplied is not fixed.

ALLOW means the change went through, not that the problem is gone. Metoro's design tracks those as separate outcomes and checks error rates over a set window, taking traffic into account. After the restart in our last write-up, we re-checked the pages in a browser before calling it done. BUILT What we don't have yet is a set recovery window: how long to watch, and what counts as healthy under real traffic. PLANNED

06 · WHAT THIS DOES NOT PROVEHonest limits.

A typed yes that names one step, for every changeBUILT
No "yes to all": a batch yes doesn't countBUILT
Text from web pages and logs treated as data, never instructionsBUILT
Approval-receipt demo: expiry, one use, live re-check, 10 tests OKRAN
Receipt wired into our real agents' approvalsPLANNED
Record each attempt and reconcile lost responsesPLANNED
A set recovery window after every fixPLANNED
How long an agent's yes should lastUNKNOWN

"Built" here means written owner rules and our working process. They are not enforced by code yet.

07 · WHAT WE'LL BUILDThe receipt goes into the harness.

This is the next piece of the approval gate from "Yes to all" is not a yes. The plan-vs-trace check and the read-back check look at work after it happens. The named yes and the receipt sit before it:

  1. Named yes for one change ID (the checker from "Yes to all" is not a yes).
  2. Receipt issued for that exact change, with an expiry and one use (this article's check).
  3. Re-check live state, then act once.
  4. Record the attempt and reconcile it if the answer gets lost.
  5. Recovery check over a set window before calling it fixed.

08 · TAKEAWAYSpend it once, then check it worked.

Make a yes cover one exact change. Let it expire, let it be used once, and re-check the live system before acting. Then check the fix actually helped. We haven't decided how long a yes should last: minutes, one run, or until the system changes. Too short and people approve on autopilot; too long and the yes outlives what was reviewed. Feel free to challenge our thinking. How long would you let an agent's yes last?

TRY IT YOURSELFTwo checks for your next agent approval.

  1. Look at your last approval to an agent. Could it still be used today, for something slightly different?
  2. Before any change you approve runs, have the agent re-read the live version and stop if it moved.
Watch the video. A short walkthrough, from Metoro's design to our receipt demo, is on X: SSSS.company
Source and credit. Idea from Ece Kayan, Metoro blog: "Building an AI SRE with Human Approval Built In" (26 October 2026), cited as a design, not a product endorsement.