Skip to content
Live

AccessControl

Per-document permissions that filter answers, not just pages.

What it does

Every folder and every leaf document carries an access policy: public, signed-in, or owner-approved. These policies resolve into a per-session envelope that filters what an agent can retrieve before it answers. A capability registry gates entire features per tenant, and the critical access checks fail closed.

Why it matters

Retrieval-augmented answers turn a permissions bug into a data leak with a friendly tone. Filtering the corpus before generation, rather than trying to redact afterwards, is the only version of this that holds. You cannot un-say a sentence.

How it works

  • The access envelope filters grounding, not just routes

    Permissions narrow what the agent can retrieve, so a document you cannot open also cannot be paraphrased at you.

  • Critical checks fail closed

    When policy cannot be resolved, the safe answer is refusal. The embed policy, for instance, falls back to "frame nowhere" rather than "frame anywhere".

  • Capabilities are gated per tenant

    A feature registry with presets and bundles decides what a workspace can even reach, independent of document permissions.

Questions

Can I make one document public and keep the rest private?
Yes: policy is per leaf as well as per folder, and it applies to what the agent can retrieve, not only to what a browser can open.
How fast does a permission change take effect?
Policy is cached per session for performance and invalidated on change. It is fast, but it is not a guarantee about requests already in flight.
Back to the story

That was step 4 of 6: access narrows the corpus. Next, retrieval over your own material, documents, and whatever tools it has been given; each call priced as it happens.