No privileged surface
The agent gets no capability the person it acts for lacks.
Everyone can make an agent talk. Mandate is what lets one near money, records and customers — without hoping it behaves.
Most agent safety is written in the system prompt, which means it can be argued with. Mandate moves it into deterministic code that runs before anything happens. An agent that has been jailbroken, prompt-injected or is simply confused can ask as many times as it likes and still move nothing.
The agent gets no capability the person it acts for lacks.
Limits live in a tested function, not in an instruction.
Every decision recorded — allowed and denied. The denials are where an attack shows up.
Running in this tab
You are the agent. Replay a spent confirmation, change the amount after someone agreed to it, use a standing permission to grant yourself a bigger one.
get_fee_balance()Every verdict above is the return value of authorizeWithContext() from @britelink/agent-core, executed in this tab. The kernel has no dependencies and does no I/O, so the code guarding a payment rail is the code running here.
Three signed endpoints and a list of what the agent may attempt. That is the whole contract — which is how one deployment drives a school, a payment rail and a shop without any of them knowing about each other.
resolve · prepare · executeWrites are a two-phase commit. Your system computes the exact figures and returns a reference only it can recognise; the person confirms those figures and nothing else. Consent is bound to them cryptographically, so an amount or a rate that moves after agreement invalidates it.
That is the difference between an agent that is convenient and one you can put in front of a customer's balance.
Each of these is a test in the repository, not a claim on a marketing page.
The decision engine has no dependencies, does no I/O, and never touches a key — which is why it runs unchanged on a server, at the edge, or in the browser you are reading this in. It is also short enough that whoever has to trust it can read all of it.
Enforced by CI — the build fails if the kernel ever gains one. No supply chain to audit.
Source and tests are published. Every refusal above is reproducible on your own machine.
Agent platforms built elsewhere assume a website, a CRM and a ticket queue already exist. Across most of Africa that is not true — WhatsApp is the storefront and the order book, and the agent is not a widget bolted onto software a business does not have. It is the software. Which raises the stakes on it being right.