/agent/policy. This page covers what that policy looks like and
which backend endpoints the agent talks to.
What policy controls
All of these are managed centrally. The agent never makes a local
policy decision; it fetches the latest version from the cloud.
Where to edit policy
The agent picks up policy from the App it’s attributed to (see Apps). Thresholds, custom phrases, custom PII rules, tool policy, all the same as SDK‑mode Runtime Security. Edit them in Runtime Security → Apps → [your DLP App] → Config. The additional DLP‑only settings (AI host rules, MITM scope) live under Runtime Security → Apps → [your DLP App] → DLP policy.AI host rules
The agent only intercepts traffic to hosts on the AI host list. Every other connection passes through untouched.Built-in host pack
Blindsight maintains a default host pack covering every supported provider. DLP policy → Use default host pack toggles it on; you can layer your own overrides on top.Verdict enforcement on the device
The agent runs the verdict logic locally for speed, but the same scoring path as the cloud. Each intercepted request:- Is MITM’d locally with the org root CA.
- Goes to
/agent/scanfor a verdict. - Is enforced according to the verdict:
allow, forwarded to the upstream provider untouched.redact, PII spans replaced with category markers (<EMAIL>,<API_KEY>, …) before forwarding.block, returned to the calling app as a provider‑shaped error so the source application surfaces a refusal.
enforce=false) records every verdict but never
blocks. Useful when piloting a tighter threshold on a new App.
Backend endpoints (agent ↔ cloud)
The agent uses a small, dedicated set of endpoints under/api/runtime-security/agent/. Same workspace, same scanners, same
event store as in‑app Runtime Security.
These endpoints share Apps, thresholds, and the event log with
/scan/input, /scan/output, and the proxy routes. Dashboards do
not distinguish DLP events from SDK events except via the source
attribute on the event row.
Event source
Events from the DLP agent carry:source = "agent".device_id = "<uuid>"referencing the row in Devices & Enrollment.user_id = "<directory_user>"once identity is bound.host = "api.openai.com"(or whatever was intercepted).- The usual
verdict,injection,pii,redacted_text,blocked_reasonfields.
source=agent in Observability
to slice DLP traffic separately.
Editing policy safely
Policy changes propagate to every agent within ~30 seconds. To roll out a tightening change safely:1
Note the current policy version
The DLP policy page shows the active version number. Bookmark it
in case you need to roll back.
2
Apply the change to a pilot App
Clone the App, apply the change to the clone, point a pilot
device group at the cloned App via DLP policy → App
attribution.
3
Watch drift
Use drift on the cloned App
to see what shifts. PSI > 0.25 on
verdict mix is your
canonical “something just changed” signal.4
Promote to the full fleet
Apply the change to the production App and push policy from
Devices & Enrollment for an immediate refresh, or wait the
cache TTL.
Common workflows
Add a new LLM provider to coverage
Add a new LLM provider to coverage
- DLP policy → AI hosts → Add. Enter the provider’s API hostname.
- Pick which App owns the traffic.
- Toggle
enforce=trueonce you’re confident.
Exempt a sensitive internal site
Exempt a sensitive internal site
- DLP policy → Exclude hosts → Add. Add the hostname.
- The agent passes through it without MITM. Useful for sites that pin certs or are otherwise sensitive to inspection.
Run observe‑only for a launch week
Run observe‑only for a launch week
- Clone the production App into
staging_<original>. - Flip every host rule to
enforce=falseon the clone. - Move pilot devices to the clone for a week. The verdict log fills up without breaking anyone’s workflow.
- Review the verdict mix before flipping
enforce=trueon the production App.

