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:
- Send a Bankr Club Membership NFT to the target wallet. Holding it unlocked elevated tool permissions — the agent could now transfer and swap.
- 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.
- 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:
- Indirect prompt injection. Malicious instructions hidden in anything the agent ingests — a social post, a webpage, an NFT's metadata, a token name, a transaction memo. On-chain data itself becomes an injection vector, and it is attacker-writable by design.
- Tool & MCP supply chain. Agents call external tools and MCP
servers. Researchers found routers that silently inject malicious tool calls;
one documented chain drained ~
$500k. Hundreds of malicious agent "skills" have been catalogued, and even Coinbase's own AgentKit repo was a reported supply-chain target. - Excessive agency / permission sprawl. Session keys, delegations and unbounded approvals that let a hijacked agent do far more than its task needs — exactly the NFT-unlocks-transfers pattern above.
- Key custody. If the agent runtime can read the private key, a prompt-injected agent can reach it too. Holding keys inside the agent is one successful injection away from total loss.
- Hallucinated or spoofed targets. An agent talked into approving a copycat token or sending to a look-alike address — the same clone campaigns we already track, now aimed at a machine that doesn't double-check the checksum.
- Economic manipulation. Agents make predictable, rule-based moves. Adversaries craft on-chain state to bait them — sandwiching, oracle-shaped inputs, and liquidity traps tuned to a bot's logic.
- Cascading multi-agent failure. Agents calling agents. One compromised or confused node propagates bad actions across the swarm.
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:
- Keep signing outside the agent runtime. Custody in an isolated signer that approves or rejects against hard rules — not in the model's context. (This is the direction Coinbase's Agentic Wallets took: separate custody from agent logic entirely.)
- Split read access from execution access. The agent that ingests untrusted content must not be the one that moves funds.
- Enforce limits below the model: per-tx caps, daily outflow limits, recipient allowlists, human approval thresholds — at the infrastructure layer, where a prompt can't argue with them.
// 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:
- the agent's wallet, session keys and delegations — and any new approval, especially unbounded ones;
- anomalous agent-signed transactions: new recipients, off-hours activity, value or gas patterns that break the agent's baseline;
- new or changed tools / MCP endpoints the agent can reach;
- the agent interacting with unknown, freshly-deployed, or copycat contracts we already flag;
- funding paths and counterparties that link to known malicious clusters.
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
- Sherlock — Agentic AI Security Risks in Web3 (2026)
- SecurityWeek — Prompt injection attacks trick AI agents into making crypto payments
- CoinDesk — AI agents, crypto payments, and a hidden flaw
- BlockEden — Why AI agents shouldn't hold private keys (Coinbase Agentic Wallets)
- OWASP — Agentic AI Security Top 10 (Dec 2025)