Data governance for AI agents

Sensitive data belongs in context — not in your logs.

Verus detects and redacts sensitive data before supported downstream systems persist it.

Customer & tool data AI agent reads everything Verus inspects · redacts · blocks Logs · Traces Memory · Evals 123-45-6789 [REDACTED:ssn] sk_live_51H8… [BLOCKED:api_key]

How it works

Detect, trace, control, ship.

Four steps, all inline with the agent — nothing round-trips to classify a value.

01

Detect, in-process

Sensitive values are found where the agent runs — common PII and credentials, plus your own custom patterns.

detect(value) → kind: "ssn"
02

Trace provenance

Every match is connected to where it came from and where it's headed.

source: ticket.body → dest: langfuse
03

Apply destination-aware controls

Most values are redacted with a typed marker and moved into a vault. Secrets can be blocked from writing at all.

[REDACTED:ssn] · [BLOCKED:api_key]
04

Ship clean

Logs, traces, memory, and evals persist without the sensitive payload.

→ logs · traces · memory · evals

What Verus protects

Not just the obvious fields.

Detection covers the defaults and the values only your company would recognize.

Common PII & identity

Names, emails, phone numbers, physical addresses, SSNs and other government IDs.

Credentials & secrets

API keys, access tokens, passwords, private keys — blocked outright, not just redacted.

Custom & company-specific

Internal account IDs, case numbers, proprietary terms — your own patterns, not just the defaults.

Visibility without plaintext

See what was protected, not what it was.

3 sensitive fields detected

scanned in 43ms · policy pol_crm_001
SSNGovernment ID · will be redacted
ticket.body → crm.notes
EmailPersonal identifier · will be redacted
contact.email → hubspot.contact
API keyCredential · will be blocked
ticket.body → blocked before crm.notes
View provenance →

Sanitized in 37ms

ready to store · all policy checks passed
Safe to persist
contact.nameSarah Chen
contact.email sarah@northstar.io [REDACTED:email]
redacted
customer.ssn 123-45-6789 [REDACTED:ssn]
redacted
ticket.idZD-4821
note.body Refund denied. Ref key sk_live_51H8xJ2n… Refund denied. [BLOCKED:api_key]
blocked
crm.destinationHubSpot CRM

Built for agent workflows

Runs in-process, in Python, alongside what you already use.

Detection happens inline with your agent — no round-trip to classify a value.

$ pip install verus
from verus import boundary

# wrap once, where the ticket enters the run
agent = boundary(
    agent,
    watch=["ticket.body", "ticket.email"],
    destinations=["langfuse", "otel", "eval_store"],
)

# unchanged — agent still reads and responds with the full ticket
response = agent.run(ticket)

# everything persisted downstream is redacted or blocked in place

Get started

See what your agents are actually writing.

If you're running agents in production and you're not sure what's ending up in your logs, traces, or eval data, we want to help you find out.

Got it — we'll reach out shortly.
Book a call →

Or write directly: hello@verus.dev