Methodology
How we measured what we publish.
Every benchmark on the product page links here. For each number we give the dataset and version, the filter we apply, the pipeline that produces the score, the model pins, the hardware class, when it was measured, and a single command to reproduce. Where a figure is pending re-run we say so explicitly. We'd rather show the gap than a polished but irreproducible number.
Detection pipeline shorthand. L1: pattern matching (synchronous, no I/O, deterministic). L2a: on-device ONNX classifier via @huggingface/transformers (no data leaves the host). L2b: embedding similarity using OpenAI text-embedding-3-small against a reference corpus. L3: LLM judge (gpt-4o-mini default, or Groq llama-3.1 when configured) for ambiguous L2 scores.
Headline tiles
The four numbers from /product.
Deterministic floor
L1-only ground truth.
These numbers are pinned in the test suite; they change only when pattern or keyword lists change, and a regression flips the test red. Use them as the reproducibility floor when L2/L3 inference isn't available (no GPU, no API key, no model cache). Reproduce with npx jest --testPathPattern="benchmark" SKIP_ONNX=1.
Latency
Production timing reference.
In production the prompt-injection and jailbreak detectors run concurrently; wall-clock scan time is the slower of the two, not the sum. Numbers below are CPU-on-device for L2a and network + API for L2b/L3.
Source: scripts/benchmark-detectors.ts (Latency section, captured 2026-05-19). The L1 deterministic floor (tests/benchmark.test.ts Benchmark 4) is asserted at p99 < 5 ms by the test suite.
Datasets
Public corpora used.
Every benchmark above pulls from a public, citable source. We don't use proprietary or unreleased data; auditors can fetch the same corpus and re-run the harness.
- hackaprompt/hackaprompt-dataset ↗: competition submissions; correct=true rows are successful injections
- deepset/prompt-injections ↗: labeled injection (1) vs benign (0)
- microsoft/llmail-inject-challenge ↗: indirect injection via mail body, Phase1 split
- HumanCompatibleAI/tensor-trust-data ↗: 776 prompt hijacking attacks (Toyer et al., 2023)
- llm-attacks/llm-attacks ↗: AdvBench, 520 direct harm requests (Zou et al., 2023)
- centerforaisafety/HarmBench ↗: 300 standard + contextual text behaviors (Mazeika et al., 2024)
- lmsys/toxic-chat ↗: real chatbot logs, jailbreaking=1 are social-engineering attempts
- rubend18/ChatGPT-Jailbreak-Prompts ↗: 79 named jailbreak techniques
Spot a discrepancy or want the raw harness output?
→ Talk to us