Skip to content

Categories

A category is one kind of security question Patronus Ark can answer about a text. You choose the categories a gateway scans at construction time. Each category is backed by a specific set of layers — some are native-only, some are model-backed, one is transformer-only.

The ten categories

Category Question it answers L1 L2 L3 model
injection Is this a prompt-injection / jailbreak attempt? Wolf Defender (small) or unified Lion Warden
dlp Does this leak secrets or trigger a destructive/sensitive operation?
pii Does this contain format-validated PII (email, IBAN, card, …)?
dynamic-pii Which named entities (GLiNER labels) appear, with exact spans? GLiNER small v2.5 (edge)
sensitive_document What document class is this (legal, HR, finance, source code, …)? Orca Sonar
tool_class Which kind of tool does this call/operate (file, db, api, shell, …)? Husky Sight
tool_action Which operation does the tool perform (read, write, exec, …)? Husky Paw
tool_tags Data-flow properties (sensitive source, untrusted source, external sink)? Husky Nose
routing What is the operational intent of the request? Panther Read
threat What type of security threat is this? Wolf Defender Threat

The models are documented on Hugging Face under the patronus-studio organization and mapped to categories in rust/src/assets/specs.rs. See Models & the NTDB format.

By layer profile

Native-only (L1)

dlp and pii are resolved entirely by native Rust detectors. They never download model assets and are always available offline. pii uses format validators (checksum/structure verification for cards, IBANs, etc.); dlp matches secrets, destructive operations, and sensitive-material transfers. Both populate evidence_spans with exact offsets. See Native detectors.

Native + model-backed (L1 → L2 → L3)

injection starts with native L1 detectors and can escalate to an NTDB L2 classifier and, on promotion, a full transformer at L3. This gives immediate rule-based coverage plus learned generalization for novel phrasings.

Model-backed (L2 → L3)

sensitive_document, tool_class, tool_action, tool_tags, routing, and threat are learned classifiers with an NTDB L2 package and a dedicated L3 transformer. They have no native L1 stage; if their assets are not cached they simply do not produce a model verdict.

Transformer-only (L3)

dynamic-pii is an L3-only GLiNER pipeline with its own labels, thresholds, chunking, text limit, and timeout. It enqueues directly to the L3 worker and publishes only its completed entity result — there is no lower-layer fallback. See the dynamic PII how-to context in the tutorials and the configuration reference.

The agentic-tool trio

tool_class, tool_action, and tool_tags describe the same tool call from three angles — what kind of tool, what operation, and what data-flow risk. Combined, they let a policy engine reason about agentic actions (for example: an api tool performing a write whose tool_tags include an external sink). They correspond to the Husky model family.

The unified vs. dedicated split at L3

At L3 you can run one dedicated transformer per category (l3_strategy="dedicated") or a single coalesced multi-head model (l3_strategy="multi", the Lion Warden unified model) that serves several categories from one inference. The multi-head path trades a little per-category tuning for a large throughput win when several model-backed categories are active at once. See l3_strategy and Performance.

Choosing categories

Scan only what you need — every category adds work. A prompt firewall might run ["injection", "threat"]; a DLP gateway ["dlp", "pii", "sensitive_document"]; an agent guard ["injection", "tool_class", "tool_action", "tool_tags"]. See Choose categories & levels for guidance and the offline implications of each choice.