Skip to main content

bastioncorpus

The shared prompt-injection corpus for the bastion trilogy. One canonical, versioned dataset — attack strings, false-positive traps, taxonomy — that all three tools pull from instead of each rolling its own.

tool role depends on bastioncorpus since reads bastioncorpus as
agentbastion prevent v0.9.0 SemanticDetector intent templates
bastionprobe attack v0.17.0 fireable payloads (load_payloads)
bastiontrace investigate v0.2.0 injection signatures (analyzer._PATTERNS)

All three take bastioncorpus>=0.2.0 as a dependency and keep a built-in fallback, so one source of truth feeds prevent, attack, and investigate.

Same taxonomy, three directions. 150 rows (99 malicious payloads / 51 benign false-positive traps; en/it/de/fr/es). No LLM, no cloud, no dependencies — pure data plus a loader and three format adapters.

Install

pip install bastioncorpus

Use

Inspect:

bastioncorpus stats
bastioncorpus list --category indirect_injection
bastioncorpus validate

Export into each tool's native file:

bastioncorpus export --format probe    --out payloads.jsonl     # bastionprobe loads this
bastioncorpus export --format trace    --out signatures.jsonl   # bastiontrace matches these
bastioncorpus export --format semantic --out corpus.jsonl --templates templates.jsonl  # agentbastion

From Python:

from bastioncorpus import load_corpus, to_probe, to_semantic, to_trace

rows = load_corpus()
payloads   = to_probe(rows)       # fireable attack payloads
semantic   = to_semantic(rows)    # {"templates": [...], "corpus": [...]}
signatures = to_trace(rows)       # canary-stripped substring signatures

Schema

One row per attack (or benign trap). text may carry a single {canary} placeholder the attack runner fills per run; defense and forensics adapters strip it.

field meaning
id stable unique id
text the string (optional {canary} slot)
category canonical class: direct_injection, indirect_injection, instruction_override, jailbreak_persona, exfiltration, delimiter_injection, obfuscation, or benign_*
label malicious | benign (benign = false-positive trap, to measure over-blocking)
lang language code (en, it, de, …) — never baked into category
tactic framing tactic (authority, data-field, egress-legit, …)
channel where planted (tool_output, user_input)
check how a hit is scored (canary, tool, none)
forbidden_tool tool a check=tool payload tries to trigger
severity 0–5
intent plain-language restatement, for semantic templates

Direct/user_input rows are defense and forensics material; only tool_output payloads with a scoring check are fired as attacks.

Why

Before this, each tool hand-maintained overlapping payload lists that drifted apart. bastioncorpus makes one of them authoritative: fix a payload here, every tool in the trilogy gets it on the next export.

License

MIT

Metadata

Release files for bastioncorpus 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bastioncorpus 0.4.0
File Size Uploaded
bastioncorpus-0.4.0.tar.gz 20.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bastioncorpus 0.4.0
File Interpreter ABI Platform
bastioncorpus-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.8 kB

Release files / bastioncorpus-0.4.0.tar.gz

Download URL bastioncorpus-0.4.0.tar.gz
Size 20.5 kB
Tags Source
SHA-256 checksum
How to use checksums
274dbf7e3b085603e558a6423a8049162243ee5d5ed51a54e1868d4cb1edf2ec
BLAKE2b-256 checksum
How to use checksums
4907073b70c2d283a39f1324587cf7eeb37c0dfb165570b2ca7679833347eb90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / bastioncorpus-0.4.0-py3-none-any.whl

Download URL bastioncorpus-0.4.0-py3-none-any.whl
Size 18.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ceb1d47460d7a6735b966366d292b5f54b008adc94b64a5a3a628a8e20d9d1d9
BLAKE2b-256 checksum
How to use checksums
c13a67f647359b2f32bcd018ceeba7a45e663d0c954db780bedcddcb4da192e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page