PASS, MASK, or BLOCK — along with the detected items that justify the decision.
System Guardian vs. Project Guardian
System Guardian
The master definition registered on the platform (e.g. the
VLM-OCR preset). It declares the capabilities a Guardian supports — Input Types, Policy Types, process types, operating limits, and model configuration.Project Guardian
A copy you create inside a Project. It owns the operational settings: which Guard Policies are assigned, model-config overrides, active categories, and its own lifecycle. This is what your API keys and Desktop Agents call.
Specs are frozen; settings are yours
Two rules explain most “why didn’t my change apply?” confusion:- A System Guardian’s spec is immutable after registration. Once registered, only its name, description, Endpoint URL, and visibility (scope + Enabled) can change. The capability spec — supported Input Types, Policy Types, process types, limits, and model-config keys — is frozen.
- A Project Guardian copies that spec at creation and owns it independently. Later edits to the System Guardian do not propagate retroactively; only the live Endpoint URL keeps being referenced. The compatible Policy Type set (what it can inspect) stays fixed by the System Guardian, while the operating values inside that range (assigned Guard Policies, text/file limits, active categories, model configuration) are yours to tune.
Input Types
A Guardian declares which kinds of content it can inspect. You enable a subset per Guardian:| Input Type | Examples |
|---|---|
| Text | prompts, messages |
| Image | PNG, JPG, WebP, GIF, … |
| Audio | WAV, MP3 |
| Video | MP4 |
| Document | PDF, DOCX, XLSX, PPTX, TXT, CSV, … |
| Archive | ZIP |
Process types: input and output
A Guardian evaluates content per process type — a free-form label the Guardian defines (commonlyinput and output):
input— content going to the model (the user’s prompt).output— content coming back from the model (the reply).
policies are sent on the call (it runs on its additional input alone).
The Guardian contract
Any Guardian implementation must satisfy a small baseline contract so the platform can drive it:- Stateless — every request is handled independently; user management, auth, and trace logging are the Bastion’s job, not the Guardian’s.
- Normalized format — it accepts the Guardian Input Format and replies in the Guardian Output Format.
- Three baseline endpoints —
/guardian(analysis),/info(self-description), and/health(liveness only), plus optional per-model diagnostics.
/info is a seed, not the source of truth: at registration its response pre-fills the form, and the System Admin’s saved result becomes the system’s source of truth.
Guardian Fail-Closed
A Guardian returns a success response only for requests it fully analyzed. If it cannot complete analysis — a model is down, a file can’t be extracted, or even one of several model calls fails (partial failure) — it returns an HTTP error, never an empty-detection “success.” This guarantees that “no detections” always means analyzed and found nothing, so an outage can never silently become a PASS.Model configuration
Each Guardian has an effective model configuration — engine defaults merged with any project-level overrides (for exampleconfidence_threshold). Admins view and override these on the Guardian’s detail page.
A Guardian only acts when it has policies assigned and those policy versions are applied to it. See Version & apply a policy update.