Horizon-Labs/prompt-injection-eval-suite

Dataset

Prompt Injection Eval Suite

0

3 commits

1 linked in READMEs

updated Sep 24, 2026

See the code

README

Prompt Injection Eval Suite

This is the evaluation suite behind the Prompt Injection Guard model card, packaged so anyone can reproduce the comparison or evaluate their own detector. It covers over-defense (false alarms on benign text that looks suspicious), direct injection and jailbreaks, and indirect injection planted in documents, emails and RAG contexts.

Every row has text, label (1 = injection or jailbreak, 0 = benign), source, kind (direct / indirect) and lang. Under this suite's definition, plain harmful requests with no attempt to override instructions are benign. That is why XSTest's "unsafe" prompts are labelled 0.

configrowspositiveswhat it testssourcelicense
notinject3390over-defense: benign prompts with trigger words (all label 0)leolee99/NotInjectMIT
xstest4500safe and unsafe-but-not-injection prompts (all label 0 for injection detection)Paul/XSTestCC-BY-4.0
orbench_hard13190seemingly toxic but benign prompts (all label 0)bench-llm/or-bench (or-bench-hard-1k)CC-BY-4.0
deepset_test11660direct injections, en/dedeepset/prompt-injections (test)Apache-2.0
jackhhao_test262139jailbreak vs benign promptsjackhhao/jailbreak-classification (test)Apache-2.0
simsonsun_jailbreaks24262426contamination-filtered jailbreaks (all label 1)Simsonsun/JailbreakPromptsMIT
boundary_pairs_test240120agentic minimal pairs3nesdeniz/agentic-prompt-injection-boundary-pairs (test)CC-BY-4.0
agentic5k_test545280agentic injections and hard negatives3nesdeniz/agentic-prompt-injection-5k (test)CC-BY-4.0
neuralchemy_test942552direct injections and hard negativesneuralchemy/Prompt-injection-dataset (core test)Apache-2.0
slabs_test21011051direct injections and hard negativesS-Labs/prompt-injection-dataset (test)MIT
bipia31783000indirect injection in email/table/code contextsgeodesic-research/bipia (derived: attacked contexts + the same contexts with the attack removed)CC-BY-SA-4.0
piarena1500750indirect injection in RAG/QA contextssleeepeer/PIArena (derived: injected task inserted at a sentence boundary vs clean context)MIT
llmail_phase220002000real adaptive email injections (all label 1)microsoft/llmail-inject-challenge (Phase 2, deduplicated sample)MIT
synthetic_docs_test33541113documents in 45 types / 30 languages: clean, injected, hard-benignHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0
synthetic_direct_test31621585direct attacks and look-alike benign messages, 30 languagesHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0
synthetic_v2_test28391412role-play framing pairs and planted-task documentsHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0

Notes:

  • Each config keeps its upstream license. Please cite and respect the original datasets. BIPIA-derived rows are CC-BY-SA-4.0, so derivatives must keep that license.
  • bipia and piarena are derived: we built positive/negative pairs from the upstream contexts. See code/data/build_v0.py in the model repo.
  • The synthetic_* configs were generated by us and are in-distribution for our own models. Treat them as supplementary.
  • Two more sets used on the model card are not included, because they are gated and non-commercial: qualifire/prompt-injections-benchmark and Mindgard/evaded-prompt-injection-and-jailbreak-samples.

Results for 9 open detectors: Prompt Injection Detector Leaderboard.

Quick evaluation

from datasets import load_dataset
from transformers import pipeline
clf = pipeline("text-classification", model="Horizon-Labs/prompt-injection-guard-base", truncation=True)
ds = load_dataset("Horizon-Labs/prompt-injection-eval-suite", "notinject", split="test")
preds = [int(p["label"] == "injection") for p in clf(ds["text"], batch_size=32)]
print("accuracy", sum(int(p == y) for p, y in zip(preds, ds["label"])) / len(preds))
benchmark
evaluation
jailbreak
llm-security
prompt-injection

Horizon-Labs/prompt-injection-eval-suite

Dataset

Prompt Injection Eval Suite

0

3 commits

1 linked in READMEs

updated Sep 24, 2026

See the code

README

Prompt Injection Eval Suite

This is the evaluation suite behind the Prompt Injection Guard model card, packaged so anyone can reproduce the comparison or evaluate their own detector. It covers over-defense (false alarms on benign text that looks suspicious), direct injection and jailbreaks, and indirect injection planted in documents, emails and RAG contexts.

Every row has text, label (1 = injection or jailbreak, 0 = benign), source, kind (direct / indirect) and lang. Under this suite's definition, plain harmful requests with no attempt to override instructions are benign. That is why XSTest's "unsafe" prompts are labelled 0.

configrowspositiveswhat it testssourcelicense
notinject3390over-defense: benign prompts with trigger words (all label 0)leolee99/NotInjectMIT
xstest4500safe and unsafe-but-not-injection prompts (all label 0 for injection detection)Paul/XSTestCC-BY-4.0
orbench_hard13190seemingly toxic but benign prompts (all label 0)bench-llm/or-bench (or-bench-hard-1k)CC-BY-4.0
deepset_test11660direct injections, en/dedeepset/prompt-injections (test)Apache-2.0
jackhhao_test262139jailbreak vs benign promptsjackhhao/jailbreak-classification (test)Apache-2.0
simsonsun_jailbreaks24262426contamination-filtered jailbreaks (all label 1)Simsonsun/JailbreakPromptsMIT
boundary_pairs_test240120agentic minimal pairs3nesdeniz/agentic-prompt-injection-boundary-pairs (test)CC-BY-4.0
agentic5k_test545280agentic injections and hard negatives3nesdeniz/agentic-prompt-injection-5k (test)CC-BY-4.0
neuralchemy_test942552direct injections and hard negativesneuralchemy/Prompt-injection-dataset (core test)Apache-2.0
slabs_test21011051direct injections and hard negativesS-Labs/prompt-injection-dataset (test)MIT
bipia31783000indirect injection in email/table/code contextsgeodesic-research/bipia (derived: attacked contexts + the same contexts with the attack removed)CC-BY-SA-4.0
piarena1500750indirect injection in RAG/QA contextssleeepeer/PIArena (derived: injected task inserted at a sentence boundary vs clean context)MIT
llmail_phase220002000real adaptive email injections (all label 1)microsoft/llmail-inject-challenge (Phase 2, deduplicated sample)MIT
synthetic_docs_test33541113documents in 45 types / 30 languages: clean, injected, hard-benignHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0
synthetic_direct_test31621585direct attacks and look-alike benign messages, 30 languagesHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0
synthetic_v2_test28391412role-play framing pairs and planted-task documentsHorizon-Labs (generated with Qwen/Qwen3.8-27B)Apache-2.0

Notes:

  • Each config keeps its upstream license. Please cite and respect the original datasets. BIPIA-derived rows are CC-BY-SA-4.0, so derivatives must keep that license.
  • bipia and piarena are derived: we built positive/negative pairs from the upstream contexts. See code/data/build_v0.py in the model repo.
  • The synthetic_* configs were generated by us and are in-distribution for our own models. Treat them as supplementary.
  • Two more sets used on the model card are not included, because they are gated and non-commercial: qualifire/prompt-injections-benchmark and Mindgard/evaded-prompt-injection-and-jailbreak-samples.

Results for 9 open detectors: Prompt Injection Detector Leaderboard.

Quick evaluation

from datasets import load_dataset
from transformers import pipeline
clf = pipeline("text-classification", model="Horizon-Labs/prompt-injection-guard-base", truncation=True)
ds = load_dataset("Horizon-Labs/prompt-injection-eval-suite", "notinject", split="test")
preds = [int(p["label"] == "injection") for p in clf(ds["text"], batch_size=32)]
print("accuracy", sum(int(p == y) for p, y in zip(preds, ds["label"])) / len(preds))
benchmark
evaluation
jailbreak
llm-security
prompt-injection