AgentGuard

Policy-guarded vault for AI agents — NEAR testnet

Not connected

Vault

— Ⓝ
Contract
—
Owner
—
Agent
—
Day (on-chain)
—

Policy

Max per transaction
—
Daily limit
—
Spent today
—
Remaining today
—
Vault state
—

— of daily budget used

Allowlist

  • Loading…

Only these receivers can be paid by the agent. Anyone else is blocked on-chain.

Auto-refreshes every 10s

Try it — judge scenarios

No wallet? No problem — each scenario shows the recorded outcome from our real testnet runs. Connect a testnet wallet as the agent account to execute live spends, or as the owner to pause / unpause.

1

Agent pays 5 NEAR to a stranger

5 NEAR is over the 1 NEAR max per transaction, and the receiver is not on the allowlist. The contract must refuse.

Expected: BLOCKED
2

Agent pays 0.5 NEAR to the allowlisted shop

0.5 NEAR is within the 1 NEAR max and shop.agentguard-adt.testnet is allowlisted. The contract must allow it and move funds.

Expected: ALLOWED
3

Owner pauses the vault, agent tries to pay

The owner hits the pause switch. While paused, every spend is blocked — even a small payment to an allowlisted receiver.

Expected: BLOCKED (paused)

Decision log (on-chain, latest first)

TimeReceiverAmountDecisionReasonTx
Loading…

Every allow / block decision is logged by the contract. A blocked spend still costs gas (it is a real transaction) but moves no funds.

How it works

  1. Owner sets a policy on-chain: max per transaction, daily budget, receiver allowlist, and a pause switch.
  2. The agent gets a function-call key scoped to spend() only — it can never withdraw, change the policy, or move funds any other way.
  3. Every spend is checked by the contract: paused? over max/tx? over daily budget? receiver allowlisted? Each check that fails blocks the spend.
  4. Every decision is logged on-chain with the reason, so the owner can audit exactly what the agent tried to do.

Contract: guard.agentguard-adt.testnet · Network: NEAR testnet · Amounts shown in NEAR (1 NEAR = 1024 yoctoNEAR).