SIGMAERA
Tenant Isolation, Governance & Security Architecture B2B / On-Prem
Security White Paper · v2 · 2026-08

Isolation and governance, enforced by construction.

Sigmaera turns an organization's most sensitive unstructured content — meeting transcripts, documents, connected email — into structured intelligence. The question that governs every design decision is isolation: between customers, between workspaces inside a customer, and between clearance levels for the same content. This paper specifies the controls at each layer, the principles behind them, and how each one is proven.

Row-level security, forced, role-split Membership-verified tenancy at every token Governance policy point · fail-closed Consent-gated multi-org access Append-only audit
4
Independent isolation layers
1
Tenant per token — always
0
Privileged cross-org read paths
730d
Min. intel-read audit retention
01

Executive summary

Sigmaera holds confidential content under a layered, mechanically-enforced security model. No single control carries the isolation guarantee on its own — each layer is designed to hold if the one above it is bypassed, and each is verified by an automated test or a build gate rather than by procedure. The controls an enterprise reviewer cares about most:

Tenant isolation

Row-level security, forced

Every domain table carries tenant_id NOT NULL with PostgreSQL row-level security and FORCE ROW LEVEL SECURITY. A privilege split between the migration role and the runtime role means the application cannot bypass it, and a startup assertion refuses to run in production if it could.

Identity

Membership-verified tenancy

A user token's organization is verified against live membership data at every token issuance and renewal, failing closed. There is exactly one organization per token — the platform issues no multi-organization tokens.

Workspace isolation

Narrowing-only policy layer

Inside an organization, a second database policy enforces personal, team, and department boundaries. It is structurally incapable of widening visibility — it can only narrow it — and returns nothing if its context is unset.

Ownership-aware derivation

Derived data inherits its source

Insights, signals, and graph entities inherit the workspace boundary of the evidence they were derived from, most-restrictive-wins. Private material does not become organization-visible by being analyzed.

Multi-org access

Per-person, never privileged

Parent organizations can hold consented, derived views across the organizations they manage. The parent never holds a credential that reads its children — every cross-organization read resolves through the individual user's own access.

AI governance

A real policy decision point

Every agent run and model call passes a policy decision point before it executes: budget, quota, approval, and per-organization policy. No budget attribution, no call.

Sensitivity model

Tag-and-gate, fail-closed

Content is indexed but every read of a tagged row is filtered against the caller's clearance, fails closed, and emits an audit record. Two categories default to withheld-from-index rather than gated.

Portability

Your boundary, your keys

S3-compatible storage, OIDC, SMTP, OpenTelemetry, Vault, PostgreSQL. The data plane runs identically in our cloud and inside your perimeter, including air-gapped. On-premises is the same code with a single tenant.

How to read this document Every control described here is Implemented — built into the product, shipped, and backed by an automated test or a build gate. Controls differ in where they are enabled, not in whether they exist: some are Platform-wide and cannot be turned off, others are enabled Per organization, Per capability, or By deployment. Only genuinely future work is marked Roadmap, and we say plainly what enforces in its place today. §19 is the consolidated register with both dimensions, and §20 describes how each control is verified.
02

Security design principles

Six principles govern the platform's security architecture. They are the reason the controls in this document look the way they do, and they are applied consistently rather than per-service.

Principle 01

Defense in depth, by construction

Isolation is enforced at four independent layers — the database connection role, the tenant policy, the workspace policy, and the content-sensitivity filter. Each is designed to hold if the layer above it is bypassed. No single control is load-bearing.

Principle 02

Fail closed, everywhere

An unset tenant context returns zero rows, not every row. An unset workspace context returns zero rows. Unestablished clearance excludes the row. An unclassified document is not yet visible. An exhausted budget denies the run. A failed policy read degrades to the most restrictive setting.

Principle 03

Enforce mechanically, not procedurally

Every platform rule has a matching enforcement mechanism — a schema lint, an API compatibility check, an isolation test, a custom code guard, or a build gate. A rule that cannot be enforced automatically is treated as a gap in the rule, not a matter of developer discipline.

Principle 04

Three orthogonal isolation axes

Organization, content sensitivity, and workspace ownership are separate questions with separate mechanisms. Conflating them is a common source of subtle exposure, and the platform deliberately keeps them independent — see §03.

Principle 05

Least privilege includes machines

Service-to-service calls use asymmetric client authentication with no shared secrets, and each declares the minimum scope it needs. Machine credentials never hold blanket cross-organization access; where cross-organization work is legitimate, the credential is bound to a specific consented relationship.

Principle 06

Portability is a security property

Refusing cloud-vendor-locked primitives in the data plane is not an engineering preference. It is what makes it possible for your content and every derived insight to stay inside your perimeter, with your key management and your storage.

Where we have invested

Security work in the current cycle concentrated on five areas. Each is described in full later in this document.

Area of focusWhat we builtWhy it matters to you
Identity & tenancyOrganization selection at the identity provider, verified against live membership at every token issuance and renewalA user's organization context is now proven at each token rather than inferred from a stored record. One person, one credential, many organizations — with no weakening of the boundary between them
Workspace ownershipA narrowing-only database policy layer, plus inheritance of that boundary through every derived artifactPersonal and team material stays private to its owner even after the platform analyzes it and produces insights from it
Multi-organization accessConsent-gated relationships between a parent organization and the organizations it manages, resolved per personManaged-service providers, holding companies, and investors get portfolio visibility without any standing privileged read path into your data
AI governanceA policy decision point in front of every agent run and model call — budgets, quotas, approvals, per-organization policyAI workloads are bounded and attributable. Cost ceilings are a containment control, not just a billing feature
Operational assuranceFleet-wide metrics and alerting, authentication-failure instrumentation, backup and disaster-recovery procedures, signed container imagesFaster detection, verifiable recovery, and a defensible software supply chain
03

Data classification

The platform handles these categories of content, each with a defined home and handling shape.

CategoryDescriptionWhere it lives
Raw transcript textPre-transcribed vendor exports (Zoom, Teams, Otter, Fireflies, Granola, Read.ai, WebVTT) or text/markdownTranscript service database; original file in object storage
Uploaded document texttext/plain, text/markdown, PDF text layers, .docx, .emlDocument service database; original file in object storage
Connected-source contentEmail, Jira, Slack, Asana, SharePoint / OneDriveNormalized into the existing ingestion paths — connectors introduce no new data store
Canonical structureSpeaker turns, sentences, participant labels, document chunksTranscript and document services
Personal-data findingsType and position of detected personal data — the only place this is persistedClassification service, in a dedicated table
Sensitivity tags18-category labels, per segment and rolled upClassification service; the rollup is written back to the source record
Derived intelligenceEntities, signals, findings, work items, reports — inherit sensitivity tags and workspace ownership from their evidenceKnowledge, signal, insights and report services
Cross-organization artifactsLink edges, rollups and portfolio views referencing consented organizations by opaque identifier plus a bounded display snapshotThe parent organization's own records (§09)

Sensitivity taxonomy & handling shapes

An 18-category canonical taxonomy is declared once in a shared package and distributed to every consuming service as TypeScript and Python siblings with parity tests — so the same tag means the same thing everywhere, and a category cannot drift between services. Representative categories: HR_Compensation, MA_Confidential, MA_HighlySecret, Board_Material, Customer_PII, Customer_PHI, Security_Incident, Security_Vuln.

tag_and_gate

Default for most categories. Fully indexed; access enforced at every read.

block

Withheld from the index entirely. Default for MA_HighlySecret & Board_Material.

redact

Placeholder substitution, available as a per-category override in configuration.

The default — index everything, gate at read — preserves analytical value while making authorization correctness load-bearing. The platform compensates for that with a single shared filter implementation, fail-closed semantics, two-user isolation tests on every read endpoint, and mandatory per-read auditing.

Three orthogonal axes

The platform separates three questions that are often conflated. Keeping them independent is deliberate: a control that answers one does not answer the others, and treating classification as though it answered ownership is a well-known source of subtle exposure in content platforms.

AxisQuestion it answersMechanism
OrganizationWhich customer owns this?Tenant column + forced row-level security + token binding + graph query wrapper
SensitivityIs this content categorically restricted?Tag-and-gate taxonomy + shared fail-closed filter + per-read audit
Workspace ownershipWhose is this, inside the organization?Workspace label + narrowing-only policy + server-resolved scope set
Classification is not ownership A routine private email carries no sensitivity tags at all — nothing about it is categorically restricted. A platform that relies on content classification alone therefore offers it no protection, because there is nothing to classify. Ownership is a separate property and the platform tracks it separately, on the workspace axis described in §08. This separation is why private material stays private even when it is entirely mundane.
Personal-data containment principle The classification service is the only component that persists detected personal-data positions. Every other service consumes the derived tag set, never the underlying findings. Personal data is excluded from logs, traces, and event payloads platform-wide, and this is verified by an automated test in every service.
04

Architecture & trust boundaries

The platform is organized into planes that form the primary trust-boundary structure. The data plane runs identically in our cloud and inside your perimeter — the code does not branch on deployment mode. Two edge-plane services exist only in our cloud and are never shipped on-premises.

Diagram 1 — Architecture & trust-boundary map (encryption zone dashed cyan; edge plane never ships on-premises)
Internet → Edge · TLS termination · WAF / ingress rate-limit Edge validates the token — and every service re-validates it Organization boundary — row-level security, forced, plus workspace policy, token binding and the graph query wrapper across every box below Intelligence plane transcriptingest · immutable documentextract · chunk classificationPII · NER · sensitivity knowledgegraph · wrapped signalextraction insightsfindings · work Core services plane identityOIDC · JWKS organizationmembers · spaces authorizationrole check auditappend-only storagesigned URL configpolicy · flags searchindex AI plane — every model call passes the decision point, then the enforcement point governancedecision point model gatewayenforcement point agenttools · runs chatpatterns Edge plane · cloud-only connectorsvault-held tokens billingout of path Multi-organization surface — parent organizations hold DERIVED artifacts only, per consented relationship; no privileged cross-organization read path exists Encryption at rest zone — PostgreSQL (row-level security) · S3-compatible object store · Vault (keys) · event bus (identifiers only)
BoundaryWhat crosses itControl
Internet → edgeEnd-user and application trafficTLS termination; WAF / ingress rate limits. Application-level rate limiting is additionally applied to the authentication surface
Edge → serviceToken, trace context, organization headerThe edge validates once; every service re-validates independently
Service → serviceInternal API callsOAuth 2.1 client credentials with asymmetric client authentication — no shared secrets; least-privilege scopes; cross-organization capability checks; mutual TLS via service mesh in production By deployment
Service → datastoreDatabase, graph, object and event trafficIsolation-respecting database role with a startup assertion; a single repository chokepoint; the graph query wrapper; signed-URL-only object access
Customer A ↔ Customer B(never, except via §09)Tenant column + forced row-level security + token binding + graph wrapper; verified by two-organization test suites in every service
Parent ↔ managed organizationConsented derived artifacts onlyConsent state machine + relationship-bound credentials + per-person read resolution
Workspace ↔ workspaceScoped records inside one organizationNarrowing-only policy on the server-resolved scope set, fail-closed
Reader ↔ over-clearance contentSensitivity-tagged recordsShared filter, fail-closed, mandatory per-read audit
Zero-trust internally The platform does not trust gateway-set headers without re-validation. Every service independently verifies the token signature against the published key set, validates issuer, audience and expiry, rejects user tokens without an organization claim, checks a local revocation list, and checks the organization's status. Standard security headers are applied uniformly across the service fleet rather than left to each service.
05

End-to-end data flow

The lifecycle of a piece of content, hop by hop. Click a stage to see the security control at that hop.

Diagram 2 — Ingest-to-access pipeline with per-hop control
01Upload / connectstorage · connectors 02Ingesttranscript · document 03ClassifyPII · NER · sensitivity 04Deriveknowledge · signals 05Accessread APIs classification result closes the sensitivity gate Organization policy applies at every hop · workspace policy at every hop · event payloads carry identifiers only
01Upload / connectsigned, time-limited
Files transfer directly between your client and the object store using a short-lived signed URL. File contents never pass through the application — the service issues metadata and signatures only, so a compromise of the service does not put a byte stream at risk. URLs are capped at one hour and object keys are organization-prefixed. Connected sources re-enter through these same paths, so a connector introduces no new storage surface. Email drawn from a connected mailbox is assigned to its owner as private, enforced server-side
02Ingestorganization + workspace
Vendor adapters canonicalize each export format. Speaker labels are stored as opaque strings — identity resolution is deliberately deferred to a later stage so that ingestion never performs person-matching. Finalized records are immutable; a correction supersedes via a new record rather than mutating the original, preserving the audit trail. A newly uploaded document is not organization-visible until classification completes
03Classifynarrow, dedicated scope
A durable queue consumer fetches content over an authenticated internal call, runs the three-stage pipeline, and writes the resulting tag set back — closing the sensitivity gate that every downstream read depends on. The write-back endpoint accepts one narrowly-scoped credential granted to the classification service alone. The result carries the source's workspace ownership forward
04Derivemost-restrictive-wins
The relational store is the authoritative, policy-protected source of truth; the graph is an eventually-consistent projection reached only through the organization-scoped query wrapper. Derived artifacts inherit the workspace boundary of their evidence, most-restrictive-wins. Personal and team evidence is excluded from the shared graph entirely
05Accessfail-closed × 3
Every read endpoint applies organization policy, workspace policy, and the shared sensitivity filter against the caller's clearance; rounds any hidden-result count so that exact counts cannot be used to infer what was withheld; emits exactly one audit record; and returns only what the caller is cleared for. Graph query endpoints carry the same workspace and sensitivity filtering as every other read path
Event payloads carry identifiers only Across all five hops, internal event payloads carry identifiers only — never document bodies, personal data, or finding statements. Consumers fetch content from the producer's read API, under that API's full authorization checks. This keeps confidential content out of the event bus's retention window entirely, and it is verified by an automated cross-service test.
06

Identity & tenancy

A single identity service is the only token issuer, implementing OpenID Connect and OAuth 2.1. It supports authorization code with PKCE for user login, client credentials for service-to-service calls, refresh tokens with rotation on every use, and RFC 8693 token exchange for delegation. The implicit and resource-owner-password grants are not supported. No other service may issue or sign anything resembling a platform token.

The full authentication surface is implemented: multi-factor authentication with recovery codes, password reset and email verification using single-use hashed tokens, session termination and revocation, personal access tokens, and key publication with rotation.

Membership-verified organization selection

One person frequently belongs to several organizations — a consultant across clients, an executive across portfolio companies, a contractor across engagements. The platform supports this with one credential and one multi-factor enrollment, without weakening the boundary between those organizations.

At authorization time the identity service computes the caller's eligible set from live membership data and issues a token for one organization chosen from it.

eligible set — resolved at authorization time
-- a token may only ever be issued for an organization in this set
eligible(user) = ( { home_organization(user) } ∪ { org | membership(org, user) = 'active' } )
                 ∩ { org | org.status = 'active' }

-- membership is re-verified at EVERY issuance and EVERY renewal,
-- and fails closed: never to a different organization.
MechanismSecurity property
A requested organization is honored only if it is in the eligible set; a single eligible organization is selected automatically; otherwise the identity service presents its own selection screenAn ineligible request never silently falls back to a different organization. Tampering with the request cannot widen access
Authorization codes and refresh tokens record the granted organizationRenewal does not re-derive the organization from a stored user record; the granted organization survives rotation deterministically
Membership is re-verified at every issuance, briefly cached, and fails closedA revoked membership stops producing tokens. Failure is always to an error, never to a different organization
Silent renewal is never interrupted by a selection screen — it returns a standard interaction-required responseBackground renewal cannot be redirected into an organization the user did not choose
Membership data is read over a dedicated internal endpoint holding a capability no human role can be grantedThe lookup is machine-only and every use is attributable in the audit log
Issuing a token for an organization other than the user's home organization emits an audit event with the membership evidenceCross-organization token issuance is always attributable
Trust is narrowed by this design A user token's organization is now proven against live membership at every issuance, where a conventional design infers it from a stored user record. Invariants that do not change: exactly one organization per token — the platform issues no multi-organization tokens; the organization header must match the token; database policy is untouched; and there is no server-side blending of data across organizations. Any multi-organization view is a client-side composition holding one token per organization.
Revocation semantics & timing Access tokens are short-lived (15 minutes maximum) and the short lifetime is the primary revocation mechanism, with a distributed revocation list as defense in depth. When a membership is revoked, token issuance for that organization stops immediately; an already-issued access token remains valid until it expires, bounding worst-case residual access at approximately 16 minutes (membership cache plus token lifetime). Session termination and explicit revocation take effect immediately through the revocation list. Organizations requiring tighter bounds can reduce the access-token lifetime as a configuration change.

Service-to-service & delegated access

Every service is a registered client obtaining tokens with asymmetric client authentication — never a shared secret. Service tokens carry a service subject and the least-privilege scopes that service needs.

For features that must act with an end user's permissions — an analyst agent answering a question on your behalf — the platform uses standards-based token exchange. The delegated token's scope is the intersection of what was requested with what the user actually holds, so delegation can never broaden privilege, and a dedicated claim records the delegation chain for audit. Delegated tokens inherit the same 15-minute lifetime.

Delegation is load-bearing, not convenience Where the platform derives intelligence from a person's private material, it runs under a delegated user token rather than a service credential — which is what allows the workspace policy in §08 to accept the write with the correct ownership label. Features that read a person's own mailbox use the caller's delegated token with no service-credential fallback: a machine identity cannot read a user's private material on their behalf.
07

Tenant isolation

The most consequential control in a multi-customer intelligence platform. The defense is layered and mechanical, and identical whether the platform runs in our cloud or inside your perimeter.

Layer 1 · application

Repository chokepoint

All data access flows through an organization-scoped repository that refuses to operate without an organization in context. Direct database access outside that module is blocked by an automated code guard in every service, so the chokepoint cannot be quietly bypassed.

Layer 2 · query

Explicit predicate

Every query carries an explicit organization predicate — both for index performance and as defense in depth, so correctness does not depend on the database layer alone.

Layer 3 · database

Row-level security

The database drops other organizations' rows even if a query omits the predicate entirely. This is the backstop, deliberately never the primary defense.

The policy stack

applied to every domain table · enforced at migration time and in the build
ALTER TABLE <table> ENABLE ROW LEVEL SECURITY;
ALTER TABLE <table> FORCE  ROW LEVEL SECURITY;   -- required: without FORCE the owner is exempt

-- The organization boundary.
CREATE POLICY <table>_tenant_isolation ON <table>
  USING      (tenant_id = current_setting('app.tenant_id', true)::uuid)
  WITH CHECK (tenant_id = current_setting('app.tenant_id', true)::uuid);

-- The workspace boundary — RESTRICTIVE, so it is AND-ed beneath the policy
-- above and is structurally incapable of widening visibility.
CREATE POLICY <table>_scope ON <table> AS RESTRICTIVE
  USING      (scope_id = ANY(string_to_array(current_setting('app.scope_ids', true), ',')))
  WITH CHECK (scope_id = ANY(string_to_array(current_setting('app.scope_ids', true), ',')));

Both policies read their context from a transaction-local setting established at the start of every transaction, so context cannot leak between concurrent requests sharing a connection pool. If that context is unset, the predicate evaluates false and the query returns zero rows — not an error, and emphatically not everything. Both fail closed by construction.

Diagram 3 — The isolation stack: what each layer answers, and what survives a bypass of the layer above
Each layer narrows independently — any single layer failing still leaves the others intact 1 · Connection rolepolicy-respecting, no bypassstartup assertion refuses otherwise 2 · Organization policypermissive · forcedunset context → zero rows 3 · Workspace policyrestrictive · AND-edcan only narrow, never widen 4 · Sensitivity filtersingle shared implementationno clearance → row excluded What each layer answers Can this process see pastthe policy layer at all? Which customerowns this record? Whose is it, insidethat organization? Is the caller cleared forthis class of content? How each layer is proven Isolation tests run as the restricted runtime role · two-organization suites per service · ownership-inheritance tests that fail if a label is dropped · database-grant regression guards in the build · parent / managed / unrelated-third-organization triad · cross-user-within-organization suites

Privilege separation at the database

Schema migrations and grants run under an administrative role. The application runtime connects under a separate role that has no policy-bypass privilege at all. Every service asserts its own runtime role at startup and refuses to start in production if it is connected with a role that could bypass policy.

Why the check refuses to start rather than warn Because isolation is enforced by the database connection role, a service misconfigured with an administrative connection would be silently unisolated — there is no error to observe, only correct-looking results that include too much. A control whose failure mode is invisible must be verified positively at startup, which is why this is a hard startup requirement and not a log line.

A separate reserved administrative role exists for explicitly-audited operations that must legitimately span organizations — retention cleanup, re-classification, index maintenance, and the event outbox drain. Each re-establishes per-organization context before touching customer data, so even these paths operate one organization at a time.

Graph isolation

The knowledge graph is the highest-consequence surface in the platform: an unconstrained traversal could otherwise disclose an entire organization's decision, project and personnel structure. It is protected by a single enforced path:

  • The graph driver may be imported in exactly one bootstrap module; all access goes through an organization-scoped session wrapper.
  • The wrapper parses every query at runtime and rejects any that does not bind the organization on every node and relationship — including variable-length paths, which must carry an explicit predicate across the whole path.
  • An automated code guard fails the build on any attempt to open a raw graph session outside the wrapper.
  • Callers cannot submit graph queries. The query endpoint accepts only a closed set of named, parameterized patterns — no client-supplied query fragments, and no runtime string construction.
  • Graph read endpoints apply the same workspace and sensitivity filtering as every other read path in the platform.

Machine-identity organization selection

Service credentials are organization-agnostic by design, so a background job selects the organization it is operating on per request. Selecting an organization requires a dedicated capability that is deliberately separate from any data-access permission — holding broad read permission does not confer the ability to choose which organization to read from. The two are independent, and both are required.

Enforcement mode — set by deployment Implemented By deployment Strict enforcement of this capability check is implemented and tested, and runs in observation mode by default while capability grants are confirmed across every legitimate background worker. This sequencing is deliberate: enabling enforcement before grants are complete would fail closed on legitimate platform work. Database policy remains fully in force throughout and is what carries the isolation guarantee. The user-facing path is unaffected and has always rejected any mismatch outright.
08

Workspace isolation

Beyond the organization boundary, the platform provides a finer in-organization boundary so personal, team, and department material can live inside a single organization yet remain invisible to other members. The organization invariant is unchanged: workspaces exist strictly inside one organization and can only narrow, never widen, what that organization's members can see.

WorkspaceVisible toNotes
OrganizationAll membersThe default for material that is genuinely shared
DepartmentDepartment membersResolved from the membership registry
TeamTeam membersExistence can be hidden, not merely contents
PersonalOwner onlyHidden from everyone else, including organization administrators

Workspace membership is data, not a token claim. A caller's authorized workspace set is resolved server-side on every request from the membership registry — it is never asserted by the client, never carried in a token, and never resolvable by a service credential. Reading personal or team material requires a delegated user token.

Administrative access, and its limits A break-glass path exists for audited platform operations, and it is deliberately constrained: it can be activated only from server-side operator configuration inside the data-access chokepoint — never from any caller token, request header, or API parameter, so it is not reachable by anything a user or an attacker can send. It relaxes only the workspace layer. It cannot expose another organization's data under any circumstance, because the organization policy remains in force at all times.

Ownership travels with derived intelligence

A platform that analyzes content produces new records from it — signals, findings, graph entities, rollups. If those inherit only the classification of their source and not its ownership, private material can become organization-visible in derived form even while the original stays private. The platform treats this as a first-class design requirement rather than a downstream concern.

The inheritance rule Every derived artifact inherits the workspace boundary of the evidence it was derived from, most-restrictive-wins where evidence blends several sources, and never defaults to organization-wide. This is a platform-wide requirement enforced in the shared standards, and it is verified by tests that fail if any persistence path drops the label.
ControlHow it works
Boundary travels on the wireWorkspace ownership is a first-class field on classification results, the extraction pipeline context, and the signal and finding schemas — so every downstream writer has it without an additional lookup
Current ownership, not staleConsumers re-resolve the source's current ownership at processing time rather than trusting a value carried on an older message, so re-filing a document is never overtaken by an in-flight event
Shared graph holds shared evidence onlyPersonal and team evidence is excluded from the shared knowledge graph entirely. The graph is a shared-context structure, so the conservative choice is exclusion rather than in-graph filtering
Aggregates follow the narrowest inputA finding blending personal and organization evidence is scoped to the most restrictive input and rendered to its owner only, rather than surfacing organization-wide in summarized form
Ownership is a stored propertyDerived records carry an owner attribute so they can be bound to an individual, and the derivation path runs under a delegated user token so the workspace policy accepts the write
Connected email is private by defaultEmail drawn from a connected mailbox is assigned to its owner as personal at ingestion, enforced server-side regardless of what the caller requests, and an unattributable message is rejected outright
A file you upload is your filing decisionManually uploaded message files are the deliberate exception: a person uploading a file is making a filing decision, so the uploader chooses. Bulk drive synchronization is off by default
Nothing is shared without approvalThe platform may recommend sharing and may file material into the owner's own private collections, but private-to-shared is always an explicit decision by the owner. The recommendation and its audit trail must not reveal the private item's content or its existence to anyone else
Deletion retracts derivationsDerived records carry provenance back to their source, so deleting a private item retracts the signals, findings and graph edges produced from it
Not visible until classified A newly uploaded document is not organization-visible until classification has completed. The platform treats "not yet classified" as "not yet cleared" rather than "no tags found, therefore safe to show" — closing the window between ingestion and classification by default rather than by timing.

Activation

Built and enforcing — enabled per organization Implemented Per organization The workspace layer is implemented across every service that holds content or derived intelligence, with the policies live in the database and the inheritance rule enforced platform-wide. Because turning on a new visibility boundary changes what people can see, it is enabled per organization rather than switched on globally: until you enable it, all material is organization-wide as before, and the policy layer enforces that single boundary. If the platform cannot read your setting it fails closed to the safer interpretation. Enablement is a configuration change, not an upgrade, and we will walk your administrators through it.
Sequencing is a safety property Extraction of typed signals from documents and email is delivered but not enabled by default. The order in which these capabilities are enabled matters: ownership inheritance must be active before derivation runs across private material, and the platform enforces that sequence rather than leaving it to configuration discipline.
09

Multi-organization access

Managed-service providers, parent companies, investors and shared-services teams need visibility across the organizations they are responsible for. The platform supports this without weakening single-organization isolation, and the design deserves close review because it is the one place the platform deliberately spans an organization boundary.

The approach we did not take A central aggregation service holding standing privileged read access across organizations would have been simpler to build. It was rejected by design: it creates exactly the always-on cross-organization read path this architecture exists to prevent, and concentrates the consequences of a single compromise. There is no such component in the platform.
Diagram 4 — Parent organization model: derived artifacts are parent-held; content resolution is per person
Parent organization — ordinary single-organization records under its own policy Link edgesopaque references +bounded snapshots Rollupsaggregates only —nothing written back Portfolio viewsstatus snapshot +drill-down reference Relationship recordstatus · permitted classes · consented byACTIVE only after the managed org consents Reads of referenced CONTENT never use a parent credential Member of parent + orgs A, Bsees A + B composed …but not org CC renders as inaccessible placeholders Team / personal material inside a managed orgtrimmed per person by that org's own workspace policy Design guarantee The parent never holds a credential that reads its managed organizations. There is no service-side cross-organization read path. Revoking a person's membership in a managed organization closes their view of it immediately — no parent-side cleanup required.

Consent is the precondition

A relationship between a parent and a managed organization is a first-class, consented, auditable grant. It becomes active only after an owner or administrator of the managed organization consents, and only if that organization has enabled linking at all. Every state change — request, consent, decline, revoke — is audited and emits an event. Consent is granted by the organization whose data is at stake, never by the parent, and never by us.

What the parent actually holds

Cross-organization derived artifacts are records in the parent's own organization, protected by the parent's own policy like any other record, holding references as opaque identifiers plus minimal display metadata — a name, a type, a last-seen timestamp — whose refresh honors current access. Source content is never copied.

The consequence for isolation is the important part: a parent record is an ordinary single-organization record that references an identifier. Every read of the referenced content resolves through per-organization access at the time of reading. There is no server-side blending, and the graph remains strictly single-organization — a parent's graph holds link nodes referencing identifiers, never a copy of a managed organization's structure.

Credentials are bound to the relationship

Where a background process computes portfolio rollups, it uses a credential bound to one specific consented relationship, verified against that relationship being currently active — not a general cross-organization capability. The check is deny-by-default: no active relationship, no access. The process writes only into the parent; it never writes into a managed organization.

The guarantee that carries this design The parent view never holds a privileged credential that reads its managed organizations, and there is no service-side cross-organization read path. Every spanning read is per-person, resolved through the requesting individual's own membership and workspace grants in each organization, at the time of the read. The practical consequences are exactly what a security reviewer should expect: a parent member with access to two of three managed organizations sees two, with the third rendered as inaccessible placeholders; personal and team material inside a managed organization is trimmed per person by that organization's own policy; and revoking someone's membership closes their view immediately, with no parent-side cleanup step that could be missed.

Revocation

Relationship revoked

Immediate, then purged

Either side can revoke. Parent-held artifacts referencing that organization are hidden immediately by a query-time check on relationship status, and removed by a cleanup process within the retention window — including cached display metadata.

Membership lost

Fails closed

Institutional artifacts remain in the parent, but that individual's ability to resolve any reference into the managed organization fails closed at their next token.

Organization deleted

Cascade extends

Deletion propagates into parent-held references under the same purge commitments that govern the rest of the platform.

Every capability class — linked graph, rollups, portfolio views, live spanning reads — is consented separately by the managed organization and enabled separately by the parent. All default to off. Consent to one class is never consent to another.

Composed answers stay ephemeral Where the platform composes an answer spanning several organizations, it runs under the requesting user's own token, governance and budget; its inputs are the per-organization answers only, never raw content from another organization; organizations the user cannot access are flagged as omitted rather than silently blended; and the composed output is ephemeral — rendered to the person who asked and never persisted into any organization.
10

Authorization & RBAC

A dedicated authorization service owns the permission catalog, roles, and role assignments, and exposes an evaluation endpoint that every service consults. The permission catalog is append-only — permissions are never silently redefined — and built-in roles are protected at the database layer so they cannot be edited into something more permissive.

CapabilityPurposeGrant posture
Membership lookupOrganization selection at the identity serviceMachine-only. No human role can hold it
Relationship managementRequest, consent, decline, revoke a parent relationshipBuilt-in owner and administrator roles only
Organization selection (machine)Choosing which organization a background job operates onDeliberately separate from any data-access permission
Sharing decisionsApproving a private-to-shared promotionBound to the owner of the material

Sensitivity clearance is expressed as authorization scope: a caller's granted scopes determine which sensitivity categories they may read, and the shared filter takes that scope set as its input. This is why authorization correctness is load-bearing for content confidentiality, and why the filter is centralized rather than reimplemented per service.

Granted scope is bounded by role state Token scope is intersected against the caller's actual role grants — a narrowing operation that can only remove privileges, never add them. A permission that is not in the catalog is not granted, which means a new capability must be catalogued and assigned before it can be exercised. New capabilities therefore start closed rather than open.
Authorization roadmap Roadmap The delivered authorization path is the platform's own policy evaluator. A future iteration moves policy evaluation to per-service policy engines with relationship-graph authorization for finer-grained delegation. Reviewers should evaluate the current evaluator on its own terms; the roadmap item is an architectural refinement, not a gap in enforcement.
11

Governance & AI policy

Authorization answers may this identity touch this resource? Governance answers a different question that conventional access control does not address: may this AI workload run at all — at this cost, on this data, right now? A dedicated governance service is the platform's policy decision point; the model gateway is the policy enforcement point. Neither is optional, and both fail closed.

Diagram 5 — Governance decision path: no agent run and no model call executes without a decision
Agent / chat runrequested Policy decision pointevaluated before executionpolicy · budget · quota · approval allowproceed denyfail closed queue · throttle Policy enforcement pointrejects any call without budget attributionvault-held provider keys · usage ledger · failover Every decision is audited denials and quota exhaustion approvals requested / granted / expired budget consumed, per organization durably queued into the append-only audit log Approvals are token-based with an atomic claim and explicit grant verification — an approval cannot be replayed or raced.

What governance decides

Budgets & quotas

Cost as a containment control

Per-organization budgets are consumed through the gateway's usage ledger. A run whose budget is exhausted is denied, not degraded. This bounds the blast radius of a runaway or manipulated workflow — extraction through compute is a cost attack as much as a data attack, and a hard ceiling is the control that bounds both.

Approvals

Human in the loop

Policy can require explicit approval before a run proceeds. The lifecycle is token-based with an atomic claim and grant verification, so an approval cannot be replayed, raced, or reused. A paused run resumes only against a verified grant.

Per-organization policy

Policy is configuration

Sensitivity handling shapes, re-classification behavior, workspace enablement and cross-organization capability classes are all per-organization configuration — changeable without a deployment, versioned with optimistic concurrency, and audited when changed.

Tool authorization

Validated before the decision

Agent tool arguments are validated against each tool's declared schema at dispatch, before policy and authorization evaluate. A malformed or injected argument is rejected before it can reach a decision point at all, so the decision point only ever sees well-formed input.

Policy surfaces & their defaults

Policy surfaceScopeDefault
Sensitivity handling shape, per categoryPer organizationTag-and-gate; withheld from index for the two most sensitive categories
Workspace boundary enablementPer organizationOff — enabled with you; fails closed on a read error
Cross-organization linking and spanning readsPer organization, per capability classOff, and separately consented
Re-classification on model upgradePer organizationCritical categories only
AI budgets & quotasPer organizationFail-closed when exhausted
Member self-connection of their own accountsPer organizationConfigurable; organization-wide connectors remain privileged
Policy engine roadmap Implemented Platform-wide The governance service is delivered and enforcing: policy evaluation, the approvals lifecycle, budgets and quotas, seeded baseline policies, and audited decisions are all live.

Roadmap A declarative policy-language runtime, for organizations that want to author complex custom policy themselves, is the next iteration and is not available today. The configuration-driven policy path, budgets and approvals are what enforce in its place.
Billing cannot affect data access The billing and entitlement service deliberately does not sit in the request path. Subscription changes propagate as events; governance seeds budgets and configuration sets capabilities from them. Enforcement stays at those points, so a billing outage can neither take down your data plane nor silently grant an entitlement you do not have.
12

Sensitivity gating

The sensitivity filter is a single shared implementation used by every service. Reimplementing it locally is blocked by an automated guard that flags any code touching sensitivity data without using the shared filter — so the filter cannot drift or be quietly weakened in one service.

#Invariant
1Organization context is established before any query runs
2The filter is applied on every endpoint that returns tagged content
3A broad-read clearance bypasses the filter only with the bypass recorded in the audit event alongside the requester's identity; cross-organization broad read is administrative and separately controlled
4Counts of withheld results are rounded — an exact count is itself an inference channel about what you cannot see
5Every filtered read emits exactly one audit record, in the same transaction as the response, so a read cannot succeed without being recorded

If clearance cannot be positively established, the record is excluded. The filter fails closed.

13

Content classification

The classification service determines what is sensitive, and its result closes the gate that every downstream read depends on. Three independent stages run over each segment, behind a language gate.

Personal data

Detection & redaction

Findings are stored in redacted form with their position — enough to support downstream redaction and investigation, without copying the underlying personal data into structures intended for indexing.

Entities

Named-entity recognition

Produces the entity mentions that feed knowledge resolution. Models are pinned as explicit dependencies so builds are deterministic and no model is fetched from the network at runtime.

Sensitivity

Context-aware classification

Runs through the model gateway, inheriting governance, budget attribution, routing, failover and provider-key isolation rather than calling any provider directly.

A strict one-model-library-per-module rule isolates each model, keeping boundaries explicit and making a model replaceable without touching pipeline logic.

Defense against prompt injection Content submitted for classification is untrusted by definition — it may contain text crafted to manipulate a model. The load-bearing control is output-schema validation: the response is validated against a strict schema whose category field is a closed set of exactly the canonical categories. Adversarial content cannot cause a category outside the taxonomy, because validation rejects anything else, and an injected additional field causes the run to fail closed rather than proceed. Confidence thresholds still apply on top — the model is one signal, never the final word.

Reliability & deletion behavior

  • Exactly-once semantics — work is reserved before processing, so a redelivered message is skipped rather than duplicated, and work held by another worker is returned to the queue rather than discarded.
  • Durable publication — every event is written in the same transaction as the state change it describes and drained separately, so a state change and its notification cannot diverge.
  • Deletion is ordering-independent — a deletion records a marker that suppresses any later-arriving work for that item, so a delayed in-flight message cannot re-materialize content you deleted.
  • Replay-safe — reprocessing the full event history produces the same result as processing it live.
Where content meets a model All classification runs through the platform's model gateway — never a direct third-party call from a service — so routing, budget attribution and key isolation apply uniformly. In our cloud, the default classification model is a hosted model, which means content is processed by a third-party sub-processor under that configuration. A fully in-boundary configuration is supported and is the on-premises default: pointing the gateway at a locally-hosted model keeps content inside your perimeter end to end. Which providers are reachable at all is a deployment configuration decision. See §18 for the sub-processor discussion.
14

Encryption & key management

In transit

TLS, and mutual TLS internally

External traffic terminates TLS at the edge. Internal service-to-service traffic is mutually authenticated and encrypted via a service mesh in production. By deployment Where a mesh is not available, the documented fallback is TLS with service tokens still required plus a signed deployment manifest pinning expected service identities.

At rest

Your storage, your keys

Database storage is encrypted by the deployment substrate — your managed volumes or your storage class. Uploaded files are encrypted at rest by the object store. The storage service holds metadata and signing keys only, never file contents. Notification recipients are encrypted with AES-256-GCM before persistence.

Key materialHandling
Token signing keysEdDSA (Ed25519), with RSA available for clients with limited library support. Symmetric signing is prohibited and blocked by an automated check in every service
Private signing keysHeld in HashiCorp Vault and injected at runtime. On-premises deployments use your own Vault — we never hold your signing keys
RotationA new signing key every 90 days; the previous key remains published for verification only for 30 days — covering the longest refresh lifetime — before removal
Public keysPublished at a standard discovery endpoint and validated by every consumer with a bounded cache. No key material is embedded in any service
Object-store credentialsVault-issued in production and mounted as secrets. No credentials are baked into container images
Model provider keysRead from Vault with a startup verification probe, so a key store that has lost its contents is detected at startup rather than failing silently under load
Connected-source tokensVault only. The database row holds a non-secret reference path, never the token itself — verified by automated tests asserting no credential ever reaches the database, logs, traces or events
15

Audit & observability

The audit service consumes durably from the platform event bus into an append-only store. Updates are prohibited outright, and deletion exists only within the retention process. Corrections are made by appending a new event, never by altering history — so the audit trail is evidentially sound rather than merely informative. Cross-organization audit access requires an administrative clearance and is itself audited.

What is audited

  • Every authentication event and every authorization denial.
  • Every administrative or cross-organization action, with a mandatory reason.
  • Token issuance for an organization other than the user's home organization, with membership evidence.
  • Every change to a cross-organization relationship.
  • Every sensitivity-filtered read, retained for a 730-day minimum. The audit record is written in the same transaction as the response, so a read cannot succeed without being recorded.
Auditability without eroding privacy The audit trail for a sharing recommendation records identifiers and counts only — it must not reveal a private item's content or its existence to teammates, administrators, or auditors. The two requirements are reconciled by recording that a decision occurred rather than what it concerned. Privacy from your colleagues and accountability to your auditors are both preserved.

Observability & operational resilience

Every service emits distributed traces carrying the organization identifier, structured logs carrying it on every request-scoped line, and health and readiness endpoints. Traces and logs never carry content or personal data — attributes are restricted to identifiers and counts, because the audience for telemetry is broader than the audience cleared for the content.

Detection

Metrics & alerting

Fleet-wide metrics with a monitoring and alerting stack covering both infrastructure and business-level indicators, so anomalous processing volumes are visible and not only outright failures.

Detection

Authentication visibility

The identity service records the code and detail of every client error it returns and every token rejection, so credential-stuffing patterns are distinguishable from ordinary misconfiguration.

Recovery

Backup & disaster recovery

Documented backup procedures and a tested restore runbook. Restore procedures explicitly account for credential state and for re-running any outstanding deletion obligations, so recovery cannot silently reinstate data you asked us to remove.

Software supply chain

Container images are built and signed in the pipeline, with a vulnerability scanning gate. Dependency updates are automated and grouped, with major-version changes held for explicit review. Build tooling is version-pinned rather than resolved at build time, so a build cannot silently take an unverified upstream change.

16

Data lifecycle & your rights

StageCommitment
ImmutabilityFinalized content is immutable; a correction supersedes via a new record, preserving the original for audit rather than overwriting it
RetentionSoft deletion with asynchronous cleanup of the underlying objects; retention processes mirror the audit retention model. Every service declares a purge commitment of 1–30 days, defaulting to 7
Organization deletionEvery service holding your data must purge within its declared commitment and confirm completion. A reconciliation process verifies every expected confirmation arrived and flags any that did not — deletion is checked, not assumed
CascadeDeleting a source removes its classifications, retracts derived signals and findings, cascades graph evidence, and version-bumps affected reports. Verified end-to-end by an automated test
Ordering independenceDeletion records a marker that suppresses later-arriving processing for that item, so an in-flight message cannot re-materialize deleted content
Subject access & erasureData-subject requests cascade by participant, covering an individual's appearances across content and the intelligence derived from it
Deletion reaches derived intelligence Derived records carry provenance back to their source. Deleting a document or message therefore retracts the signals, findings and graph edges produced from it — derived intelligence does not outlive the content it was derived from. The same commitment extends to references held by a parent organization under a cross-organization relationship.
17

Threat model

The platform maintains a formal threat model; every service inherits its mitigations and adds tests proving they hold. The classes most relevant to a security review:

ThreatMitigationHow it is proven
Cross-organization data exposureGraph query wrapper; forced row-level security; privilege-separated runtime role with a startup assertionSuites seed two parallel organizations and assert every endpoint and every graph query returns only the requesting organization's data
Exposure through a parent-organization surfaceConsent-gated relationships; relationship-bound credentials verified against active status, deny-by-default; no privileged cross-organization read path existsA parent / managed / unrelated-third-organization triad proves the third organization is never reachable through any parent surface
In-organization exposure of private materialOwnership inheritance, most-restrictive-wins; shared graph holds shared evidence only; server-side ownership assignment for connected email; not-visible-until-classifiedTests fail if any persistence path drops an ownership label; cross-user-within-organization suites
Clearance bypassSingle shared filter, fail-closed, with a guard against local reimplementation; per-read audit; rounded withheld countsTwo-user tests on each endpoint; a report composed from mixed-clearance inputs contains nothing the reader is not cleared for
Organization confusion at the identity layerRequested organization honored only if eligible; membership re-verified at every issuance, failing closed; silent renewal cannot be redirectedIssuance for a non-member fails at every path — authorization, exchange, renewal, and under request tampering
Prompt injection from untrusted contentPer-organization scoped runs; output-schema validation as the load-bearing control; tool arguments validated before policy evaluation; budget ceilings bound the blast radiusAdversarial fixtures assert the validator rejects manipulated output and records the rejection
Privilege escalation via workflow registrationA registered workflow's permitted scopes must be a subset of the registrant's own grantsRegistration requesting excess scope is asserted to fail
Runaway or manipulated AI workloadGovernance evaluated before any run; the gateway rejects calls without budget attribution. Fail-closedWith budget exhausted, the next run is asserted denied and audited
Personal data leaking into telemetryRedaction in every service; traces exclude payload bodies; only the classification service persists findingsAn adversarial personal-data string is asserted absent from all process output
Stale-read exploitationConsistency is selectable per read; write-then-read paths default to the authoritative storeSimulated projection lag asserts strong reads route to the authoritative store
Extraction via signed URLs or eventsSigned URLs capped at one hour, with any extension requiring a recorded architectural decision; event payloads carry identifiers only; file contents never pass through the applicationReviewed at design time; payload discipline is test-enforced
Credential abuse at the authentication surfaceRate limiting on login and token endpoints; uniform security headers; multi-factor authentication; single-use hashed reset tokens; refresh rotation; short token lifetimes; revocation listRate-limit behavior is unit-tested; authentication failures are instrumented for detection
18

Deployment, residency & sub-processors

The data plane is identical in both models. In our cloud, customers are isolated by the mechanisms in this document. On-premises, you run the same code for a single organization. The reference target is Kubernetes via a Helm chart with your own or bundled PostgreSQL, event bus, object storage, Vault and telemetry collector. Air-gapped deployment is supported: offline installation bundles, no outbound calls at startup, offline license validation, and telemetry that can be disabled with no loss of function.

No cloud-vendor lock-in — and why it is a security property A platform rule prohibits cloud-vendor-locked primitives in the data plane: S3-compatible storage rather than a proprietary SDK, SMTP rather than a hosted mail API, OIDC rather than a proprietary identity service, Vault rather than a hosted key service, OpenTelemetry rather than a proprietary agent. For an on-premises customer this is what makes it true that your content and every insight derived from it stay inside your perimeter. The rule is enforced by an automated check that rejects prohibited imports, and by a startup test asserting services become ready with no external name resolution at all.

Connected sources — a contained, opt-in exception

Connectors are the one place the platform deliberately speaks a third-party API. The exception is contained, not granted:

  • Optional and off by default — the platform is fully functional with no connector configured, and air-gapped deployments cannot run external connectors at all.
  • Confined to the edge — no core or data-plane service imports a provider SDK; the coupling cannot spread inward.
  • Per-connection and consented — a provider you connect is a sub-processor of your own choosing, adding no default third-party dependency for anyone else.
  • Credentials in Vault only, never in the database, logs, traces or events — verified by automated tests.
  • Content re-enters through existing paths, inheriting classification, the sensitivity gate, isolation policy, per-read audit, and private-by-default ownership for email.
  • Individual self-connection is configurable per organization; organization-wide connectors remain a privileged operation.

Data residency

Data services are configurable per region and per organization; data does not cross regions without explicit configuration; audit events record their region of origin; and for sovereign or air-gapped deployments telemetry can be configured never to leave your boundary.

Model processing & training

What we commit to, and what depends on your configuration The platform commits that content sent for model processing is limited to what the task requires plus structural metadata, that it returns a schema-validated result, and that all model access flows through the platform's gateway under governance and budget attribution — never a direct call from a service to a provider. In our cloud, the default classification model is hosted, so content is processed by a third-party sub-processor under the default configuration. A fully in-boundary configuration is supported and is the on-premises default: with the gateway pointed at a locally-hosted model, content is not transmitted externally and is not available for third-party training. Which providers are reachable at all is a deployment configuration decision held in your key store. We do not assert a blanket no-training guarantee on behalf of third-party hosted providers — that depends on the provider's terms and your configuration, and we will confirm the specifics for your deployment during review. Where response caching is enabled it changes cost and latency rather than the data boundary, and belongs in the same review.

Standards alignment

Control areaHow it is enforced
Multi-tenancyIsolation tests run as the restricted runtime role; two-organization suites; parent/managed/third triad; database-grant regression guards; a migration check requiring isolation on every new table; ownership-inheritance tests
Authentication & authorizationKey-set validation; per-endpoint scope enforcement; asymmetric client authentication; automated checks prohibiting symmetric signing and hand-rolled validation; issuance-path tests
Event integrityTransactional publication; standard envelope; registered subjects; organization-less events prohibited; payloads carry identifiers only
On-premises packagingChart validation; air-gapped startup test; automated rejection of cloud-vendor SDK imports
API compatibilitySchema linting; automated breaking-change detection on every change; prohibition on open-ended response schemas
On certification Sigmaera does not currently claim certification against SOC 2, ISO 27001, HIPAA or any other framework, and this document makes no such claim. What it provides is control-coverage evidence: specific mechanisms, their enforcement, and how each is verified. We would rather give your assessors something concrete to test than a badge. We are happy to complete your security questionnaire and to walk your team through any control here in technical depth.
19

Control status & enablement

A consolidated view, on two independent dimensions. Status answers whether the control is built and enforcing — nearly everything here is. Where it is enabled answers the separate question of scope: whether it applies everywhere by construction, or is activated for your organization, per capability, or by how the platform is deployed. We publish both because a security document that collapses them is less useful — and less credible — than one that is precise about each.

Implemented built and enforcing, with a test or build gate Roadmap future work; the register states what enforces in its place today
Platform-wide always on; an invariant, not a setting Per organization activated for your organization Per capability each capability class consented and enabled separately By deployment determined by your deployment topology
ControlStatusWhere it is enabledNotes
Organization isolation — forced row-level security, privilege-separated runtime role, startup assertion, token binding, graph wrapperImplementedPlatform-wideTwo-organization suites in every content service; grant regression guards in the build
Membership-verified organization selection at the identity providerImplementedPlatform-wideEligible set, provider-hosted selection, granted-organization persistence, re-verified at every issuance and renewal, failing closed
One organization per token; no multi-organization tokensImplementedPlatform-wideA platform invariant, not a configuration
Short-lived tokens, rotation, revocation list, multi-factor authenticationImplementedPlatform-wide15-minute access tokens; 90-day signing-key rotation with a 30-day verification overlap
Delegated access with intersected scopeImplementedPlatform-wideStandards-based token exchange; delegation can never broaden privilege; chain recorded for audit
Workspace boundary — narrowing-only policy layerImplementedPer organizationLive across every content and intelligence service, with the policies in the database and the inheritance rule enforced platform-wide. Activated with you, because a new visibility boundary changes what people can see; fails closed on a configuration read error
Ownership inheritance through derived intelligenceImplementedPlatform-wideBoundary propagation, persistence-time inheritance, shared-graph exclusion, graph-read filtering, delegated derivation, provenance for retraction
Connected email private-by-default; not-visible-until-classifiedImplementedPlatform-wideEnforced server-side irrespective of the caller's request
Machine organization-selection capability, separate from data accessImplementedBy deploymentStrict enforcement is implemented and tested, and runs in observation mode by default while capability grants are confirmed across background workers. Database policy carries the isolation guarantee throughout, and the user-facing path always rejects a mismatch outright
Multi-organization relationships — consent, relationship-bound credentials, per-person resolutionImplementedPer capabilityConsent by the managed organization; capability classes consented and enabled separately; all default off
Portfolio rollups and composed viewsImplementedPer capabilityEnabled by capability class; each is separately consented
Sensitivity tag-and-gate, fail-closed, shared filter, per-read auditImplementedPlatform-wideSingle implementation with a guard against local reimplementation
Classification pipeline — personal data, entities, sensitivityImplementedPlatform-wideOutput-schema validation as the injection defense; findings stored redacted
AI governance — policy decision point, budgets, quotas, approvalsImplementedPlatform-wideFail-closed; approvals are token-based with an atomic claim
Agent tool-argument validation ahead of policy evaluationImplementedPlatform-wideEnforcing by default
Append-only audit; 730-day minimum on content-read eventsImplementedPlatform-wideWrite in the same transaction as the response; export and webhook delivery available
Authentication-surface rate limiting and uniform security headersImplementedPlatform-wideApplication-level rate limiting on the authentication surface; edge rate limiting is a deployment control for the rest
Metrics, alerting, authentication-failure instrumentationImplementedPlatform-wideInfrastructure and business-level indicators
Signed container images; vulnerability scanning; pinned build toolingImplementedPlatform-wideSupply-chain gates in the build pipeline
Signed-URL storage gateway; file contents never pass through the applicationImplementedPlatform-wideOne-hour cap; organization-prefixed keys
Deletion cascade and purge reconciliationImplementedPlatform-wideConfirmations verified rather than assumed; extends to derived intelligence and parent-held references
Typed-signal extraction over documents and emailImplementedPer organizationEnabled once the ownership boundary is active for your organization — sequencing that keeps derived intelligence inside the boundary it inherited
Backup and disaster-recovery proceduresImplementedBy deploymentDocumented and tested restore, accounting for outstanding deletion obligations; operated by us in our cloud and by your team on-premises
Connected sources (Jira, Slack, Microsoft, Asana, mail)ImplementedBy deploymentVault-only credentials, test-verified; coupling confined to the edge; available in our cloud, not in on-premises deployments
Mutual TLS service meshImplementedBy deploymentRequired in the production topology; documented fallback is TLS plus service tokens plus a signed manifest
Model processing boundaryImplementedBy deploymentHosted model by default in our cloud; locally-hosted model keeps content in-boundary and is the on-premises default
Declarative policy-language runtime for custom policyRoadmapThe configuration-driven policy path, budgets and approvals are what enforce today, with every decision audited
Per-service policy engines with relationship-graph authorizationRoadmapThe current evaluator enforces today
Physical isolation for search and graph enginesRoadmapThe relational store enforces the workspace boundary today; search and graph apply it at the application layer, with the conservative choice of excluding private evidence from shared structures
Third-party certification (SOC 2 / ISO 27001 / HIPAA)RoadmapNot claimed today; this document provides control-coverage evidence instead
20

Assurance & verification

A control that is not verified automatically is a control that erodes. The platform's governing discipline is that every security rule has a matching enforcement mechanism that runs on every change — so a regression fails a build rather than waiting to be discovered.

Isolation

Tested as the restricted role

Isolation tests connect using the same restricted database role the application uses in production — so they prove the policy actually applies, rather than proving it exists. Tests seed two organizations and assert every endpoint returns only the requesting organization's data.

Isolation

Guards against silent inertness

Database grant configuration is checked on every change, because a permission drift could make a policy inert without any visible failure. Ownership tests are written to fail if a label is dropped, so an inheritance regression cannot pass silently.

Multi-organization

The third-organization triad

Cross-organization suites include an unrelated third organization and assert it is never reachable through any parent surface — testing not just that permitted access works, but that unpermitted access is impossible.

Content protection

Adversarial fixtures

Personal-data strings are fed through request paths and asserted absent from all process output. Prompt-injection payloads are asserted to be rejected by schema validation and recorded.

Architecture

Structural code guards

Automated checks block direct database access outside the repository chokepoint, raw graph sessions outside the wrapper, local reimplementation of the sensitivity filter, symmetric token signing, hand-rolled token validation, and cloud-vendor SDK imports in the data plane.

Interfaces

Compatibility & supply chain

API schemas are linted and checked for breaking changes on every change. Container images are signed and scanned, and build tooling is version-pinned so a build cannot silently take an unverified upstream change.

Working with your security team We expect and welcome technical scrutiny of everything in this document. We are glad to complete your security questionnaire, walk your architects through any control in depth, discuss the specifics of your deployment topology and model-processing boundary, and support your own testing. If a control here matters to your assessment, we would rather show you the mechanism than ask you to take the claim.