Confirm what it resolved
Inheritance is merged at startup, so the file tells you what you asked for and the Sidecar tells you what it built. Ask before you deploy — nothing needs to be running:+ masking means a mask block reached it. Ask a running process the same question:
Connect through it
Point the client at the Sidecar’s port instead of the resource’s. Nothing else about the client changes:Watch masking work
The rule in the file rewrites emails on the way out. The client never receives the real value:redact is one of four strategies, and swapping it is a one-line change:
entities is a list, so one rule can name several. A rule can also name result columns instead, which catches a value no detector recognizes:
Watch a guardrail refuse
Theoperation rule denies drop, delete and truncate, and the statement never reaches the resource:
message you wrote in the config, so the developer reads the reason in psql instead of watching a connection drop. On an HTTP listener the same denial arrives as 403 with an X-Hoop-Denied header.
operation is one of eight rule types. Deny by table, by pattern, by detected PII, by HTTP resource or status, by word list, or by AI verdict — all in Guardrails.
Measure before you deny
A rule set that reaches a lane enforces — there is no observe-only switch to leave off. To measure first, run the new rules on a lane pointed at a staging copy of the resource, send real query shapes through it, and read what got denied:violation names the rule that fired and the message the client read, so an over-broad rule is visible by name before it reaches production. For a rule you want live on production without deciding on its own, give it action: defer and let OPA allow it while you watch the findings.
Read what it recorded
Every session is recorded whether or not it issues a statement. The admin API is the fast way in:principal, connection, protocol, since, until, denied, open, and q for a substring, with limit and cursor for paging. /api/events also takes session_id and a repeatable kind.
The same events go to stdout as JSON lines, which is the durable copy — the admin API reads in-memory buffers sized by audit.memory_buffer and audit.query_sessions. Full detail in Audit.
Put it in front of something else
protocol picks the codec, and the rest of the listener keeps its shape. SQL Server:
Protect more than one resource
listeners is a list, so a second resource is a second entry rather than a second process. Each one carries its own rules and can override the top-level defaults:
guardrails.rules concatenate with the listener’s first, while a listener’s mask and opa blocks replace the top-level ones rather than extending them.
Pass the config another way
--config also reads HOOP_SIDECAR_CONFIG, which is the shape a Kubernetes deployment wants — mount the ConfigMap, set the variable, pass no arguments:
Where to go next
Running the Sidecar
Transports, putting it behind Envoy, and a compose stack that runs the whole thing on your laptop.
Config File Reference
Every section, every field, and what startup refuses.
Agentic Access
Put an AI Analyzer in front of the rules and let the risk level pick what happens.