Delv

Lethal Trifecta

Simon Willison's prompt-injection threat model in three axes: access to private data, exposure to untrusted input, and the ability to transmit data outbound. A server that has all three is a complete exfiltration chain on its own. Two of three is still fragile — one more server on your stack closes the loop.

Private data96
Secrets, credentials, private files
Untrusted input77
Web pages, PRs, issues, email
External comms105
Outbound HTTP, email, webhooks
166
Graded
39
Trifecta
52
2 of 3
57
1 of 3
18
Clear

The composed trifecta

The thing single-server grading misses: the trifecta is most often composed across a stack, not present in one server. Three MCPs that each look fine in isolation can combine into a complete exfiltration chain. Examples from realistic agent stacks:

The code-review agent

Reads your local repo (private). Fetches arbitrary URLs from PR descriptions or external docs (untrusted). Posts summaries to Slack (outbound). Each component is mid-risk; together, full chain.

The research assistant

Vault holds private notes and credentials. Tavily search returns attacker-shaped web pages. Gmail can send. A poisoned search result instructs the agent to email vault contents — every component looked benign on its own.

The DevOps agent

AWS server holds account creds. GitHub issues and PR bodies are attacker-controlled. Cloudflare workers can deploy outbound code paths. An issue body that says "rotate keys to attacker-server.com" hits all three.

Full trifecta (39)

Standalone exfiltration chains. Each of these can be hit with a single poisoned input. Sandbox them or audit any agent that uses them.

Two-of-three (52)

Closer to the trifecta than they look. Pair any of these with a server scoring on the missing axis and you have a complete chain — usually a server you already have installed.

One-of-three (57)

Single-axis servers. Sensitive in their own right (especially the private-data ones) but not exploitable until combined with two more.

Clear (18)

No axes flagged. Stack these freely; they are inert against prompt-injection chains.

Why this matters

Prompt injection is unsolved. If your agent can read secrets, ingest untrusted content, and send data outbound, any hostile snippet in its input window can exfiltrate whatever it can see. Delv grades each axis independently so you can decide which MCPs belong in a sandboxed environment and which are safe to leave on all the time.

Grading methodology: editorial review of each server's declared permissions, public documentation, source where available, and the typical user workflow. Null axes mean the server hasn't been graded yet. Flag corrections.

The framing is from Simon Willison's writing on prompt injection — credit where it belongs.