The owner
Sets the agent identity, recipient allowlist, limits, expiry, and revocation authority.
RULES BEFORE REQUESTSAGENTSHIELD
Power to act. Authority to stop.
Loading the boundary

Your AI agent can be fooled. AgentShield is a NEAR Testnet vault that limits what it can pay, and you don't have to take our word for any of it: replay a real settled payment and three attacks the contract refused, then recheck every claim against public RPC yourself.
The machine can request. Only the mandate can release.
DEPLOYED / NEAR TESTNETThe owner writes the limits, the agent asks, the guardian enforces, and the attacker tries to talk its way past. Judge mode tells the whole story in six short scenes, using real Testnet records.
AgentShield is built around a contract-controlled vault, deployed on NEAR Testnet. Each boundary has a distinct role, a precise action, and an auditable outcome.
Sets the agent identity, recipient allowlist, limits, expiry, and revocation authority.
RULES BEFORE REQUESTSThe deployed NEAR contract checks exact amounts and nonces before constructing a payment.
CONTRACT AS BOUNDARYProposes an action. It cannot reach the owner's unrestricted wallet or bypass the vault.
REQUEST, NEVER CUSTODY
Spending rules belong at the execution boundary. The first native NEAR Testnet payment passed through the contract-held vault; authorization, transfer, and settlement are recorded separately.
A real Testnet mandate limits one agent, one recipient, and a total budget. The Evidence view rechecks the first payment against public RPC.
A function-call key is scoped to the vault payment method.
Version 2 of the onchain mandate allows up to 0.01 NEAR per payment, until 2026-11-30 00:00 UTC.
A 0.005 test NEAR transfer has a finalized receipt.
No wallet needed. Each link opens the raw evidence or the code behind it.
Judge mode · six scenes · about 70 seconds · no wallet
Meet the owner, the agent and the guardian. Then watch replays of a real Testnet payment that settled and real attacks the contract refused. Every fact on screen says where it comes from.
One agent. One guardian. One boundary that cannot be crossed.
SIMULATION Local model in your browser. No chain.
HISTORICAL ONCHAIN REPLAY A finalized Testnet transaction, replayed. Nothing is executing now.
LIVE RPC VERIFIED Appears only after a live recheck against public Testnet RPC passes during your visit.
LIVE MODEL REPLY A real reply from the model on NEAR AI Cloud during your visit, signed inside its TEE and checked. Nothing is signed or sent.
Open any scene in its finished state. The film stays paused until you press play. Keyboard: space plays or pauses, the arrow keys change scenes.
07 / Attack the vault · no wallet needed
Pick an attack and watch the boundary answer. All ten were really sent to NEAR Testnet (two payments and eight attacks), and you can recheck each one live. Revocation ran on a separate lab vault, because revoking the main one would stop it for good.
This runs in the local simulator, seeded with the mandate's rules: one agent, one allowed recipient, 0.01 NEAR per payment, 0.02 per UTC day, 0.05 in total, plus the one 0.005 payment that already settled. It takes the mandate's current expiry from the live check when that answers. Every result here is labelled SIMULATION.
SIMULATION
Challenge · prompt injection
A supplier note hides an instruction to send the money elsewhere. See what the agent's offchain preflight does with the proposal, and what the vault contract does on its own. The model step here is simulated so you can try both outcomes. Below it is what the real NEAR AI model did with the same note, and a box where you can write your own note and send it to the live model.
Draft a mandate to see the fields the vault checks. Saving keeps it in this browser only; it does not change the deployed Testnet mandate.
OWNER / HOLDS AUTHORITYThese fields draft a mandate locally. This draft remains local; it does not edit the live Testnet mandate.
NO TRANSACTION SIGNEDThe first restricted-agent payment is settled. This view rechecks its transaction, transfer receipt, and contract accounting.
DECISION / EVIDENCEBoth payments are checked against public Testnet RPC each time you open this view.
LIVE VERIFICATIONThe exact request passed policy checks. Funds may still be in transit.
Chain result and recipient balance are checked before the interface claims settlement.
A rejected request must have its own genuine contract result and show that no payout was initiated. Eight live rejection proofs are listed below, including a request refused after the owner revoked the mandate on a separate lab vault.
The public Testnet transaction and contract state are checked before settlement is displayed.
The owner must be able to stop future requests. Pending transfers remain a separate, visible state.
OWNER / REVOCATIONThe deployed vault holds an owner-signed mandate. Pause and revoke are owner-signed transactions sent from the owner's own machine; this site never signs.
CONTROLS UNAVAILABLEA pause would block new authorizations after the chain records it. Already submitted transfers may still settle.
Revocation blocks new requests. It cannot retroactively cancel a transfer already submitted.
Try a real set of policy rules in a local simulation. Every result here is simulated; no wallet, vault, or blockchain transaction is involved.
SIMULATION / NO CHAINThese decisions explain the intended rules. They do not prove that a deployed contract enforces them.
LOCAL / RESETTABLEUse example testnet identities. Changing a field resets the next scenario to a fresh local state, so each result can be read on its own.
Two authorized requests have settled on the deployed Testnet vault, one sent by an agent through the MCP server. Eight contract rejections, including one after revocation, are independently verified in Evidence.
Check the public Testnet state of the four accounts behind the vault. Everything here is read-only, and nothing is signed.
TESTNET / LIVE STATEAccount results come from finalized NEAR Testnet state. Open Evidence to inspect the independently verified payment.
ONE SETTLED PAYMENTThe demo account IDs are public and prefilled. Checking them is read-only, so no wallet or account is needed.
Only paste public account IDs here. Never paste a recovery phrase or private key into any website.
Enter your testnet account IDs, then run the live check. Blank roles are reported as unconfigured.
Before the agent signs, its guard reads the receiver from finalized Testnet state and compares it with the live mandate: the allowlist, look-alike names, a blocklist with evidence, and whether the account's code changed since the owner approved it. The guard warns and refuses. The vault contract still enforces every rule.
The same check runs in the AgentShield MCP server, so Claude, Codex or any MCP client calls it before it can request a payment. How to connect ↗
Pick an example or enter any receiver, then check it against live Testnet state.
This account check cannot prove a payment or rejection by itself. Open Evidence for the two finalized payments and the eight rejection proofs, revocation included.