Hidden instructions
Looks through what the agent just read and the memo for text that tries to steer it: "ignore previous instructions", "send all", urgency, fake authority, and a payee address that was copied out of the fetched text.
Every payment an agent asks for goes through this gate first. Try it here with no wallet: pick a scenario or write your own request. The verdict comes from the live engine, simulated on Robinhood Chain.
Each one is plain code with a plain reason. No model guesses. You see the same list on every verdict.
Looks through what the agent just read and the memo for text that tries to steer it: "ignore previous instructions", "send all", urgency, fake authority, and a payee address that was copied out of the fetched text.
Reads the rules from the module on chain: token switched on, cap per payment, daily and weekly budget (fee included), and the line above which the owner approves. A frozen account fails here.
If the owner set paying hours, a payment outside them fails. Hours are UTC. A per-minute limit, if set, is checked here too.
Contract calls only go to allowed (contract, function) pairs. With the payee list switched on, plain payments only go to listed addresses.
The payment must fit the balance. One payment that moves more than half of a token balance is treated as a drain and fails.
Decodes the call. Approvals, permits, operator grants and token transfers hidden inside a call fail. An agent never grants allowances.
Any contract involved (the target and addresses inside the calldata) is looked up: does it have code, and is its source verified?
The exact transaction runs against the current chain state first. A revert, or tokens moving where the request did not say, stops it.
The full list the engine uses, read live from the engine.
Loading from the engine…