ABERNATE

An agent gets approved once. Then it acts a thousand times.

ABERNATE checks each action before it happens. Four rules have to agree, or the action does not run. A person has to clear a release, and that person can only say no. Every step writes a signed receipt, and a recipient who was given the right verification key can check it themselves.

82.9%of organizations report that security or compliance reviews have delayed AI projects from moving into production
80%+report deploying AI agents in a diminished state at least occasionally because of security concerns

Both figures are EMA's, from their April 2026 survey of 152 IT and security leaders, quoted from EMA's own published summary. Not our numbers and not about this product. Two further figures were on this page earlier today and have been removed: they came from trade-press summaries and could not be confirmed against the publishers.

Approval happens once. The work happens all day.

Security review does real work. It decides which AI tools are allowed, which vendors clear procurement, and what data those tools can see. All of that is about what the agent is.

The gap that follows is not our observation. Four independent groups have described the same missing layer in 2026 alone, under four different names, and at least one has argued the whole category is aimed at the wrong place. Sources in the technical packet.

Then the agent runs. It calls an API, writes to a database, triggers a workflow, holds a document. Nothing sits between that call and the consequence, and more than half of agents in production run with no oversight or logging at all. A third of organisations say they could not immediately stop a rogue agent.

A reviewer has two options: hold the project, or let it through with the agent restricted. More than 80% of organizations report doing the second at least sometimes, and end up running a smaller version of what they paid for.

ABERNATE covers the part nobody checks: what the agent is allowed to do, at the moment it does it.

WHAT THE CUSTOMER'S COUNSEL GETS HANDED. VERBATIM.
{
  "mission_id": "legal-hold-sweep-4471",
  "purpose": "Sweep a custodian folder under legal hold: catalogue
              every file, hash each one for chain of custody, look
              inside archives, and flag material appearing across
              more than one source. No network access.",
  "operational_status": "PASS",
  "steps_executed": 4,
  "receipt_chain": "VALID",
  "release_required": true,
  "released": false,
  "squad_leader": "BLOCKED: no clearance recorded for
                    legal-hold-sweep-4471. Run the go/no-go
                    board and record a GO before release.",
  "final_receipt_hash": "fc1244d6c1c8ff789c951f8be42b2627...",
  "metrics": { "completion": 1.0, "success": 1.0,
              "authority_coverage": 1.0, "receipt_integrity": 1.0 }
}
PASSThe job worked. Four steps ran, none errored.
VALIDEach step wrote a signed record, and they still agree with each other.
1.0 ACROSS THE BOARDNothing partial. Every action covered by a stated authority.
released: falseIt shipped nothing. squad_leader is the named human who has to clear a release, and none had.

Output from the sample that ships with the package. Every step ran, every check passed, and it shipped nothing, because no human had cleared it. Success is not permission, and being able to show the difference is what the review is asking for.

Agents ship late, or ship restricted.

An agent that clears review with its autonomy cut is not a win, it is the budget spent and the capability withheld. An agent still in review at month six is the same money with nothing to show at all.

Both happen for one reason: the reviewer has no control to point at, so the only levers left are delay and restrict. Give them a gate that refuses on the action itself, and a signed record of every refusal and every clearance, and the conversation changes from how much to take away to what evidence gets produced.

Regulatory exposure, audit cost and liability allocation all follow from this and none are ours to quantify. They are the buyer's arithmetic, not our claim.

No customer has measured a dollar of any of this, so no dollar figure appears on this page.

hello@abernate.com  ·  the technical packet, on request

The four checks

Permission is not one setting. Before an action runs, four separate questions have to answer yes.

01Can this worker do this at all? Its contract lists the actions it has and the paths it may read.
02Does the command being run permit it? A command is a narrower grant than the worker's full capability.
03Does standing policy allow it? Risk class, network access, evidence thresholds, step limits.
04Did this job actually ask for it? An action nobody requested is refused even when all three above allow it.
ALL FOUR, OR NOTHING  ·  five strong properties and one dead one is a refusal, and the dead one gets named. Nothing averages out.

A named human has the last word and can only say no. Their GO cannot push an action through a check that already failed, and a policy written without that gate is rejected the moment it loads, so no engineer disables it by forgetting it.

Every step writes a receipt, hash-linked to the one before it and signed. A step can cover many files, so this is a record per step, not per file touched. That file goes to the customer's lawyer, the SOC 2 auditor or opposing counsel. Each checks it with a command that ships in the package, against a verification key they were given separately. They still have to trust where that key and that package came from. What they do not have to accept is the operator's word that the ledger is unaltered.

What makes it different

Check it without talking to anyone

The figures below came from one run against a public corpus that anyone can download. Not a demo folder, not a benchmark we built.

INThe CPython 3.12.0 source release, straight off GitHub.
sha256 ddfaf383c97f393a7768943630ea01e6c3cfb9af4fbc02655a37a2f3680013d6
014,579 files catalogued and hashed. 100,613,159 bytes. Twelve receipts picked at random and re-hashed off disk: twelve of twelve match what the receipt says.
028 archives opened, 19 entries read. 3,014 patterns traced across more than one source.
03Two independent runs, identical final hash. Deterministic on one machine. The hash embeds absolute paths, so it will differ on another and is not something to compare across machines. The figures are.
04Ten forgeries against the resulting 4.7 MB signed ledger. All ten caught.
AND IT DID NOT SHIP  ·  every check passed and released stayed false, because no human recorded a decision

The check ships in the package. reproduce.py downloads that tarball, verifies the sha256, grants the corpus through a contract it prints and then revokes, runs the sweep, and compares the five figures above against what it measured. Exit 0 means those five held on that machine. It takes about nine seconds.

One more thing happened on the way in, and it was not staged. The first attempt was refused before a single file was read: read path outside authority. No worker contract declared that corpus, so nothing touched it until one did. That is the gate working on data it had never seen.

What it will not do

What it needs to run

46 of 46 tests pass from a cold extraction on Python 3.12. Standard library only. No dependencies, no network, no account, no GPU, nothing to host. The internal file manifest is generated from the folder and refuses when the two disagree, because a hand-typed count is what went wrong twice.

What transfers

Sold outright or licensed. The transfer includes the source, the hashes, the provenance record, the full adversarial test corpus and every defect ever found in it, including the ones still open. Evaluation copies are confidential.

hello@abernate.com