wasphole is an MCP honeypot. Byte-for-byte identical. Completely fake. Fully lethal.
go install github.com/riza/wasphole/cmd/wasphole@latest
tool_call("read_file", "/etc/shadow")
↓
AI agents explore MCP servers the same way attackers explore networks — silently, methodically, at scale. A probe for /etc/shadow arrives as a perfectly ordinary tool call.
wasphole answers in the agent's own language. It never refuses the connection — it refuses the file, and logs everything around the refusal.
The attacker learns nothing. You learn their entire playbook.
Every wasphole instance generates a unique AI-powered persona — hostname, users, running processes, directory trees. No two deployments look alike. Fingerprinting is impossible.
Ask for /home/alice/.bash_history — it references the same servers from /etc/hosts. Ask again tomorrow — same answer. The fake world is cached and self-consistent.
Every response carries an invisible canary token. When it shows up in an exfil payload, a log, or a model's next prompt — you know exactly which file, which session, which agent.
{"level":"info","ts":"2026-06-03T11:42:07Z","session":"a7f3e2", "src":"198.51.100.23","tool":"read_file","arg":"/etc/passwd", "canary":"c9d4…a1","action":"served"} {"level":"warn","ts":"…08Z","session":"a7f3e2", "tool":"read_file","arg":".aws/credentials", "canary":"e1b7…44","action":"served"} {"level":"error","ts":"…09Z","session":"a7f3e2", "tool":"exec","arg":"cat /etc/shadow", "action":"denied","alert":true}
{ "text": "wasphole · canary token observed", "alert": { "session": "a7f3e2", "first_seen": "2026-06-03T11:42:07Z", "src_ip": "198.51.100.23", "tools_called": 6, "canary": "e1b7…44", "leaked_in": "outbound model prompt", "transcript": "wasphole.local/s/a7f3e2" } }
Offer agent security testing as a service. Hand a client's agent a poisoned tool, then answer the only question that matters — did it run recon? Capture every file it touched, in order.
Stand wasphole in front of an MCP server before it ever touches your internal network. See who connects and what they reach for — without exposing a single real file.
Collect real attack patterns at the source. Which agent reads which file first, how a prompt-injection attempt actually looks on the wire, what "autonomous recon" means in practice.
Run wasphole as a public endpoint and mine the inbound traffic for AI-agent TTPs — the beginnings of a MITRE ATT&CK for the agent era.
Vet a third-party MCP tool before you trust it in production. Point it at wasphole and watch whether it quietly reaches past its stated mandate.
$ go install github.com/riza/wasphole/cmd/wasphole@latest
$ wasphole setup
$ wasphole server -config config.yaml