Skip to main content
Direct access is the default path through the Sidecar. A request arrives, the Sidecar decodes it, evaluates it against the rules you wrote, and forwards it. The response comes back through the same gate and sensitive values are rewritten before they reach the client. Nothing about this path is probabilistic. The same statement produces the same decision every time, there is no third-party API in the chain, and the only latency added is a parse and a scan.

Configuration

A listener is one upstream. Add guardrails to control what reaches the resource, and mask to control what comes back. Both are optional and independent.
config.yaml
Neither block takes a switch: a rule set that reaches a lane enforces, and a mask block carrying rules masks. Detection needs no pii section either — omit it and every supported entity is enabled. Validate before deploying — nothing needs to be running:
A lane always enforces. There is no observe-only switch, so a rule that reaches a listener denies from the first request. Roll out on a staging lane, watch /api/events?kind=violation, and use action: defer for anything you are not ready to decide locally — see Roll out without breaking anything.

What the user sees when a rule denies

The refusal is written in the protocol’s own frame, always to the client, carrying the message you wrote:
That is a real pgwire ErrorResponse, so the developer reads the reason in psql rather than watching a connection drop. On an HTTP listener the equivalent is a 403 with an X-Hoop-Denied header.

Direct or Agentic?

Both paths run in the same Sidecar and a listener picks per rule, so this is not an either/or for the deployment — only for a given class of statement. The usual shape is direct rules for everything nameable, and an ai_analysis rule as the backstop for the rest.

Next

Guardrails

Every rule type, and how a rule set resolves to a verdict.

Data Masking

Detection, masking strategies, and entity rules versus column rules.

Agentic Access

Let a model classify the statement and pick the tool.

Config File Reference

Every listener field, inheritance between listeners, and what startup refuses.