Workspace Isolation
Every query is scoped byworkspace_id. Data from workspace A is never visible to workspace B queries. This is enforced at every layer — storage, retrieval, packing, and receipts.
Workspaces are the primary isolation boundary for multi-tenant deployments.
Per-Request Policies
EveryPOST /v1/context-pack request can include a policy object that controls which evidence is allowed:
| Field | Type | Effect |
|---|---|---|
allowed_sources | string[] | Only include artifacts of these types |
denied_sources | string[] | Exclude artifacts of these types |
allowed_actors | string[] | Only include artifacts created by these actors |
rbac_required | string[] | Require these RBAC tags on included artifacts |
privacy_level | string | default or strict |
Artifact Permissions
Each artifact can have its own permissions set at ingest time:| Field | Effect |
|---|---|
visibility: "public" | Visible to all actors |
visibility: "private" | Visible only to the creator |
visibility: "restricted" | Visible only to allowed_actors |
allowed_actors | Whitelist of actors who can see this artifact |
denied_actors | Blacklist of actors explicitly denied access |
rbac_tags | Tags that must match the request’s rbac_required |
How Policies Are Enforced
Policy enforcement happens after retrieval and before packing:- Retrieval channels return candidate spans
- Policy filter removes spans that violate the request’s policy
- Feedback filter applies corrections (private, marked_wrong, etc.)
- Remaining candidates are passed to the packer
exclusions array with reason POLICY: