project

TenantFlow

Tenant isolation for AI agents on shared infrastructure, with machine-checked proofs.

A bank and an insurer run their AI agents on one platform and search one shared RAG index. A per-call policy (Cedar) checks each tool call on its own, so three individually allowed calls can still move the bank’s data to the insurer: read it, write it to the shared index, let the insurer search for it. TenantFlow adds an information-flow monitor with tenant labels that follow the data and cannot be forged by the data.

What is proven

In a Lean 4 model, for every agent behaviour and every Cedar policy: nothing that may depend on another tenant’s data reaches a tenant’s principals or tools (Model.isolation); data cannot lower or launder a label (Model.no_launder); for a fixed schedule, what a tenant observes depends only on data it may read (Model.noninterference); the executable monitor implements the model (Exec.refines); an agent that depends only on its own tenant’s trusted data and calls only tenant-private tools is never denied by the flow checks (Model.transparency).

Assumptions include a trusted session and tool registry, complete mediation, stateless tools and no side channels. The Python gateway and the game’s monitor are tested against the Lean oracle, not proven. Nothing is claimed about Cedar itself. Full list in the repository’s docs/spec.md.

Builds on

Cedar, AWS AgentCore Policy, FIDES, CaMeL and related work, cited in the repository. All data is synthetic.

← back