- Authority grants: an agent may act only under a grant for that action, with limits (for example, at most 100 per request) and an end date.
- Business signal sources: facts like “this invoice is paid” are asked of the system that owns them, which signs its answer, instead of being taken from the agent.
Make the action harmless
Parmana sends a signed release to the endpoint of the system that performs an approved action. So for the checks, two small endpoints were deployed, separate from everything else:- A release endpoint that acts on nothing. It verifies Parmana’s signed release exactly as a real system would, logs it and returns a receipt. No money moves.
- A demo ERP answering from a fixed table of three invoices: paid, unpaid, and one that does not exist. It signs every answer with its own key.
Check 1: authority grants
A test policy required a grant. Every request carried a valid signed human approval, so only the grant could change the outcome.- Amount 50, before any grant: refused,
NOT_AUTHORIZED, the agent holds no grant. - Amount 50, after a grant of at most 100: approved, released once, the grant in the signed record.
- Amount 500, same grant: refused,
NOT_AUTHORIZED, “500, above the granted maximum 100”. - Amount 50, after the grant was revoked: refused, no grant.
Check 2: asking the business system
A second test policy approved only if the invoice was paid, withinvoicePaid sourced from the demo ERP.
- Paid invoice, agent declares nothing: approved,
VALID; the ERP’s signed answer verified and recorded. - Unpaid invoice: refused by the policy; the ERP said “not paid”, signed and verified.
- Unpaid invoice, agent claims it is paid: refused,
INVALID: the request proposed true, the source reports false. - Invoice that does not exist: refused,
MISSING_DATA.
Clean-up is part of the test
Afterwards both test capabilities, the demo source and the grant were revoked, again through maker checker, and the demo source’s private key was deleted. Two things remain on purpose and are listed as remaining work: the two endpoints, which act on nothing and accept only releases or queries signed by Parmana, and the test agent’s key, which can no longer do anything because everything it could call is revoked.What this did not prove
- No real business system is connected. The demo ERP proves the protocol end to end, not a real order system.
- No shipped policy uses these features yet. Real refunds are decided as before until the refund policy is changed.
- One case was not reachable: a grant revoked between decision and release, refused at release. It is unit-tested, but not reachable in production without a test hook, so it is not claimed.
If you run agents in production
- Build a harmless twin of each action: an endpoint that verifies everything and does nothing.
- Set up tests through the real controls; a test that needs a bypass tests the bypass.
- Test refusals, not only approvals: three of four cases in each check were meant to fail.
- Verify the records, not just the responses.
- Clean up, and write down what was not proven.
examples/live-checks.
Grant an agent authority,
Connect a business signal source.