license: apache-2.0
task_categories:
- text-classification
language: - en
tags: - ai-safety
- prompt-injection
- jailbreak
- llm-security
- adversarial
- scbe
- sacred-tongues
- bijective-tokenization
- experimental
size_categories: - 10K<n<100K
configs: - config_name: default
data_files:- split: train
path: train.jsonl - split: validation
path: validation.jsonl - split: test
path: test.jsonl
- split: train
Status: experimental. Experiment-specific slice. Primary public dataset: scbe-aethermoore-training-data.
Prompt Injection → Bit Signatures
24,254 labeled prompts from 4 public prompt-injection datasets, each mapped through the Six Sacred Tongues bijective tokenizer from the SCBE-AETHERMOORE framework into a lossless per-prompt bit signature.
Stratified 70/15/15 train/val/test split by (source, label) so every source is represented in every split with its original label distribution.
Quick load
from datasets import load_dataset
ds = load_dataset("issdandavis/prompt-injection-bit-signatures")
print(ds)
# DatasetDict({
# train: Dataset({ num_rows: 16976 ... })
# validation: Dataset({ num_rows: 3634 ... })
# test: Dataset({ num_rows: 3644 ... })
# })
Schema
| Field | Type | Description |
|---|---|---|
id |
string | <source>:<upstream_split>:<row_idx> |
source |
string | Upstream dataset name |
split |
string | Upstream split (train/validation/test) |
text |
string | Original prompt, truncated to 2048 bytes |
label |
string | malicious, benign, or jailbreak |
category |
string? | Fine-grained upstream label if available |
byte_len |
int | UTF-8 byte length |
bit_signature |
object | Lossless statistical summary — see below |
bit_signature
| Field | Description |
|---|---|
hex_sha256 |
SHA-256 of the UTF-8 bytes — uniqueness fingerprint |
bit_histogram |
16-element list: zero/one counts across 8 bit positions |
byte_entropy |
Shannon entropy over the byte distribution |
token_parity |
Per-tongue even/odd byte counts (6 × 2 = 12 values) |
phi_weight_sum |
Sum of φ^i × count(bytes where b mod 6 == i), i ∈ 0..5 |
Source breakdown
| Source | Total rows | License |
|---|---|---|
reshabhs/SPML_Chatbot_Prompt_Injection |
16,012 | MIT |
neuralchemy/Prompt-injection-dataset |
6,274 | Apache-2.0 |
jackhhao/jailbreak-classification |
1,306 | Apache-2.0 |
deepset/prompt-injections |
662 | Apache-2.0 |
| Total | 24,254 | — |
Label breakdown (full dataset)
malicious: 16,541benign: 7,047jailbreak: 666
All four upstream datasets were harmonized: their label columns (ints, bools, or strings) were normalized to the three classes above. SPML and neuralchemy use integer 0/1; jackhhao uses strings like "jailbreak"/"benign"; deepset uses binary 0/1.
Baseline results
A gradient boosting classifier (scikit-learn, depth=4, n_estimators=120) trained on 31 features derived only from bit_signature — no text understanding, no embeddings, no language model.
Features: byte_len, byte_entropy, phi_weight_sum / byte_len, 16 normalized bit histogram counts, 12 normalized per-tongue parity counts.
| Model | AUC | Accuracy |
|---|---|---|
| Gradient Boosting | 0.9201 | 0.8522 |
| Logistic Regression | 0.8765 | 0.7967 |
Per-source within-distribution AUC
| Source | AUC | Test n |
|---|---|---|
neuralchemy |
0.9843 | 1,296 |
reshabhs/SPML |
0.8853 | 3,172 |
jackhhao |
0.8498 | 263 |
deepset |
0.8068 | 120 |
Leave-one-source-out (cross-distribution)
| Holdout | AUC |
|---|---|
neuralchemy |
0.8755 |
jackhhao |
0.7535 |
deepset |
0.6908 |
SPML |
0.6830 |
Within-distribution performance is strong (85–98% AUC); cross-distribution drops to 68–88% AUC. That's expected — the bit signature captures both universal attack patterns AND dataset-specific statistical fingerprints. Train on a mix of sources for best generalization.
31 features. No neural net. 92% AUC. That's the bar a bijective tokenizer sets.
Why a bijective tokenizer
The Six Sacred Tongues tokenizer is bijective: every UTF-8 byte (0–255) maps to exactly one token per tongue, and back, with zero loss. That's rare — BPE, WordPiece, and SentencePiece are not bijective. Building on a bijective layer means:
- Lossless feature extraction — the bit signature summarizes the bytes, but the full byte stream is recoverable from the token streams
- Auditability — every detection decision traces back to literal bytes
- No language understanding required — the detector learns on pure bit-level statistics
See the 500-row sample file (injection_bit_signatures_sample.jsonl) for the full 6-tongue token streams alongside each signature.
Reproduce
# Pipeline
git clone https://github.com/issdandavis/scbe-experiments
cd scbe-experiments
pip install datasets scikit-learn
python injection_to_bits.py --source all --out bits.jsonl
# Classifier
python train_injection_classifier.py
Tokenizer implementation: github.com/issdandavis/six-tongues-geoseal
Files
| File | Description |
|---|---|
train.jsonl |
16,976 rows (70%) |
validation.jsonl |
3,634 rows (15%) |
test.jsonl |
3,644 rows (15%) |
injection_bit_signatures_sample.jsonl |
500-row sample with full 6-tongue token streams |
dataset_manifest.json |
Machine-readable metadata + baseline results |
README.md |
This file |
Related
- Research article: From Prompt Injection to Bits
- Framework: SCBE-AETHERMOORE
- Pipeline + classifier code: scbe-experiments
- Evidence ledger: aethermoore.com/research/evidence.html
- Managed solutions: CX Refund Guardrail, AI Red Team
License
Apache-2.0. Upstream datasets retain their own (all Apache-2.0 or MIT).
Citation
@misc{davis2026injectionbits,
author = {Davis, Issac},
title = {Prompt Injection Bit Signatures via Six Sacred Tongues Bijective Tokenization},
year = {2026},
howpublished = {\url{https://huggingface.co/datasets/issdandavis/prompt-injection-bit-signatures}},
}