Tenant Isolation

How one customer's data is kept physically separate from another's, and why we treat a cross-tenant match as a fatal error rather than a filtered result.

One customer's content must never reach another's answer. We treat that as the failure that ends the company, so it is enforced physically rather than by a filter that could be wrong.

  • Each tenant has its own index, its own storage prefix and its own derived encryption key
  • Every query carries a tenant identifier, and the tenant of every returned document is asserted against it
  • A mismatch aborts the entire response. It is not a filtered result

That last point is deliberate and it costs us availability. If the assertion fires, isolation has already failed somewhere upstream, and returning the other results would serve a partial answer over a broken boundary — hiding the breach behind a page that looks fine.

Enforced in the permission core and covered by the adversarial suite; see the benchmark for the current pass rate.