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, and observe-only means it is not denying. 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:
A rule can also name result columns instead of an entity, 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
Turning rules on against real traffic is easier when nothing breaks first. Set enforcement off and every statement is still inspected and recorded, but nothing is refused:enforce: true.
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:
policy.rules concatenate with the listener’s first, while a listener’s mask block replaces the top-level list rather than extending it.
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.