Scrutineer is an open-source, Kubernetes-native governance control plane for autonomous AI agents:
per-session policy, scoped human approvals, and runtime evidence produced outside the agent’s trust domain.
A prompt-injected or compromised agent can’t bypass enforcement or falsify the record of what it did.
The governance layer that wraps whatever you already run.
How one governed session runs:
flowchart LR
subgraph ctrl["Scrutineer controller"]
recon["session<br/>reconciler"]
rep["reporter service<br/>TokenReview on every caller"]
end
recon -- "provisions per session" --> sess
subgraph sess["one governed session"]
subgraph apod["agent pod"]
agent["agent container<br/>stock image · unprivileged<br/>credential-empty"]
end
subgraph ppod["egress proxy pod · own identity"]
envoy["Envoy"]
erep["egress-reporter<br/>sidecar"]
end
end
agent -- "the only working path" --> envoy
agent -. "bypass attempt:<br/>raw socket, direct DNS" .-> lock["dropped in the kernel<br/>default-deny NetworkPolicy"]
envoy -- "allow / deny by policy" --> up["allowed upstreams"]
envoy -- "access log<br/>(shared volume, tailed)" --> erep
erep -- "reports under the<br/>pod's identity" --> rep
agent -. "agent reports too" .-> rep
rep -- "assurance stamped<br/>by caller identity" --> ev["evidence in session status<br/>observed vs self-reported"]