What changed

A wave of frameworks now hands an LLM a wallet and lets it act: Coinbase's AgentKit and CDP wallets, Crossmint's GOAT, Base's MCP server, Eliza, Virtuals. The pitch is autonomous finance — agents that swap, bridge, pay, provide liquidity and manage positions without a human in the loop. The problem is the pitch: an agent that can sign is a drainer the moment someone else gets to drive it. And on-chain, a bad transaction settles. No chargeback, no support ticket, no undo.

The attack surface is no longer just the contract. It's the agent's reasoning, the tools it can call, and everything it reads.

The Grok / Bankr drain

The template incident happened in 2026 on Base. An attacker didn't touch a private key or a contract bug — they talked to the agent. Reported steps:

  1. Send a Bankr Club Membership NFT to the target wallet. Holding it unlocked elevated tool permissions — the agent could now transfer and swap.
  2. Reply on X with a hidden instruction encoded in Morse code, which the AI decoded and relayed as a command from Grok to the Bankr agent.
  3. The agent, believing it had a legitimate instruction, transferred roughly 3 billion DRB — on the order of $150k–$200k — to the attacker.

No key theft. No reentrancy. No storage collision. The exploit lived entirely in how the agent interpreted input, plus a permission it should never have held in that context. Every classic audit control would have passed.

The risk taxonomy

OWASP published its Agentic AI Security Top 10 in December 2025; the web3 subset that actually costs money looks like this:

Why an audit doesn't cover it

You can audit the contracts an agent talks to. You can review the agent's prompts and tools on the day you ship. Neither holds, because the agent's risk posture is a function of its inputs, and the inputs never stop arriving. A new tool gets added. A trusted feed gets poisoned. A fresh injection technique appears. A copycat contract is deployed and the agent finds it. The code didn't change; the world it reads did. This is the agentic version of the same thesis that drives everything we do: secure yesterday, exploited today.

What actually helps

Two layers, and you need both.

Architecture — assume prompt injection succeeds, and make it cheap when it does:

// policy the model cannot talk its way past
signer.policy = {
  maxPerTx:        500 * USDC,
  maxDailyOutflow: 2_000 * USDC,
  allowlist:       [treasury, router, knownLP],
  requireHuman:    tx => tx.value > 1_000 * USDC || !allowlisted(tx.to),
}

Continuous monitoring — because architecture is a snapshot too, and agents drift. What we watch for an agent-integrated protocol:

Takeaway

If you run agents that touch funds, an audit is table stakes and architecture is the foundation — but neither watches the agent read a poisoned prompt at 3am. Agentic web3 is autonomous, irreversible, and re-armed by every input. That is precisely the kind of system that needs a review with a heartbeat, not a snapshot.

Sources & further reading