Skip to main content
ControlFrame

Trust center

The status of every claim, with a date on each and the command that re-checks it. Claims stay conservative until third-party review is complete, and the ones ControlFrame does not make are listed at the same weight as the ones it does.

Review status
No independent SOC 2 report is available or claimed. Business Associate Agreement readiness is under review; ControlFrame does not claim HIPAA certification or platform-wide HIPAA compliance. The effective privacy notice describes the implemented public lead-data path, while signable contracting artifacts still require counsel review.
Verify this posture

This page carries its own re-checkable artifact: the terminal SHA-256 chain digest of the eight-envelope reference trace, recomputed from the compiled contract at render time — not quoted from a report.

synthetic reference trace · fixture data, real hashes
Reference signing key

The demo-tenant sealing key shown across the sealed demo surfaces. No customer key appears on a public page.

Terminal chain digest · RUN-8837

SHA-256 across all eight ordered envelopes; the terminal event still records the package release as held for human authorization.

Re-check the digest
curl -sI https://controlframe.ai/api/reference-proof/trace | grep -i x-controlframe-event-chain-digest

The live endpoint answers with the same chain digest — compare it with the value shown here. The proof room replays the full envelope-by-envelope recompute in your browser.

Measured 2026-08-24

Where the platform stands, with every target named

A trust center without dates reads as aspirational. The schema figures below were measured against the complete repository migration chain, while the runtime-role and break-glass observations were measured separately against production. The target is part of the evidence, not fine print.
81
tables in the public schema
53
carry forced row-level security
18
unshielded because a predicate cannot apply
0
neither shielded nor ledgered

Measured 2026-08-24 against all repository migrations applied to an empty PostgreSQL database. The command seeds probe tenants and creates a role, so it runs against a disposable database with migrations applied — it refuses a remote one unless explicitly overridden.

Re-run the table census
psql "$DATABASE_URL" -Atc "select count(*) filter (where c.relrowsecurity) || ' shielded of ' || count(*) || ' tables' from pg_class c join pg_namespace n on n.oid = c.relnamespace where n.nspname = 'public' and c.relkind = 'r'"

A read-only catalog query. Running it against production would produce a fresh production census; the published figures above remain labeled as migration-chain results.

Re-run the closed-world migration check
CONTROLFRAME_TEST_DATABASE_URL="$DISPOSABLE_DATABASE_URL" npm run security:tenant-shield:verify

This check creates probe roles and tenants, so it belongs on a disposable database with every migration applied—not on production.

Separately dated production observations
ObservationValueMeasuredTarget
Application database rolecontrolframe_app; no superuser or BYPASSRLS2026-08-17the production database
Break-glass role holders02026-08-17the production database
Re-check the production runtime role
psql "$DATABASE_URL" -Atc "select current_user, rolsuper, rolbypassrls from pg_roles where rolname = current_user"

Run as the application connection. The answer is about the role serving requests, not an administrator.

The register

Every claim, its status, and the date it was established

The rows that read not claimed and not available are the important ones. A buyer will accept an absence with a reason attached and will not forgive discovering one after signing.
ControlFrame claim register
ClaimStatusAs ofWhat backs it, or what is missing
The repository migration chain constructs forced row-level security on 53 of 81 public tablesverified2026-08-24

Measured by applying every repository migration to an empty PostgreSQL database. This is not presented as a current production census; the published command can be run read-only against production for a fresh comparison.

psql "$DATABASE_URL" -Atc "select count(*) filter (where c.relrowsecurity) || ' shielded of ' || count(*) || ' tables' from pg_class c join pg_namespace n on n.oid = c.relnamespace where n.nspname = 'public' and c.relkind = 'r'"
The application connects as controlframe_app, which is neither a superuser nor BYPASSRLSverified2026-08-17

The fact that makes the shield real rather than decorative. It became true on 17 August 2026, and this page says what it was before.

psql "$DATABASE_URL" -Atc "select current_user, rolsuper, rolbypassrls from pg_roles where rolname = current_user"
The migration-chain inventory is closed-world: 18 by-design exceptions, 10 explicit tenancy gaps, 0 unaccounted tablesverified2026-08-24

Run on a disposable database built from every migration. The check fails if a table is neither shielded nor explicitly classified, if an unshielded table is granted to a web role, or if an inventory entry outlives its table.

CONTROLFRAME_TEST_DATABASE_URL="$DISPOSABLE_DATABASE_URL" npm run security:tenant-shield:verify
The platform holds no super-admin accounts: 0 holders of the break-glass roleverified2026-08-17

The verifier is read-only by construction and may be pointed at production.

CONTROLFRAME_VERIFY_DATABASE_URL="$DATABASE_URL" npm run security:super-admin:verify
The measured posture is published as a signed, offline-verifiable receiptverified2026-08-24

Ed25519 over canonical JSON. The signed body identifies each measurement target, keeping migration-chain results separate from production observations, and is verifiable without a ControlFrame server in the trust path.

Findings against our own controls are published with the date found and the date fixedoperating2026-08-17

Two findings are published with containment and remediation details, including a tenant-isolation defect corrected on the date reported.

Tenant access is recorded in a hash-chained logoperating2026-08-18

audit_access_logs carries prev_sha256 and row_sha256 per row, so a removed or edited entry breaks the chain.

Where inference happens is published as the enum values the router itself returns, rendered liveoperating2026-08-18

inferenceBoundary, costBoundary and rawDataPolicy travel on every route and every run trace. The residency page renders them from the router at request time rather than describing them.

Runner data movement is protocol-specific and published without a local-only overclaimoperating2026-08-28

Credentials and signing private keys remain runner-side. Legacy collection may submit bounded raw artifact bytes for custody, scanning, redaction, and review. Runner v2 is verify-only and grants no target, credential, artifact, evidence, or execution authority.

Restricted evidence is denied to external model endpoints by default, and the decision is recordedoperating2026-08-18

The gate is fail-closed per deployment; a blocked call raises a typed error so the block itself is sealed as an auditable event.

The migration chain closes the database REST surface and revokes web-role grantsverified2026-08-24

The disposable-database verifier proves anon and authenticated grants are revoked, including default privileges for future tables, and fails if an unshielded table is granted to either. This is a migration-chain result, not a production grant census.

CONTROLFRAME_TEST_DATABASE_URL="$DISPOSABLE_DATABASE_URL" npm run security:tenant-shield:verify
The subprocessor list is published with purpose, data categories, and regionoperating2026-08-28

Derived from the dependency manifest, the host configuration, and the modules that open outbound connections — each row names the file it was derived from.

A vulnerability disclosure path is publishedoperating2026-08-28

Scope, safe-reporting guidance, triage, and out-of-scope categories are published.

SOC 2not available2026-08-28

No independent SOC 2 report is available or claimed. Readiness work does not constitute an examination or attestation.

HIPAAnot available2026-08-28

Business Associate Agreement readiness is under legal and security review. HIPAA has no product certification to hold, and ControlFrame does not claim platform-wide HIPAA compliance.

ISO 27001not claimed2026-08-28

Not held, not in progress, and not claimed anywhere on this site.

Third-party penetration test with a published summary letternot available2026-08-28

Internal adversarial testing covered privileged access and evidence-sharing surfaces on 17 August 2026. No independent penetration-test report or summary letter is available.

Signable DPA and BAAnot available2026-08-28

Both remain templates pending counsel review. The effective privacy notice describes the implemented public lead-data path.

Pre-filled CAIQ v4 and SIG Litenot available2026-08-28

No pre-filled questionnaire is currently available. Buyers may provide their standard questionnaire for a scoped response.

EU data residencynot available2026-08-28

The platform runs in AWS us-east-2 today. EU residency is a build, not a configuration setting, and no date is committed here yet.

Customer-managed encryption keysnot claimed2026-08-28

Not available. ControlFrame will not claim customer-managed encryption keys until a customer-held key wraps the credential root and the boundary can be verified.

Per-organization bring-your-own-key inferencenot available2026-08-28

A deployment can be pointed at a customer-controlled model endpoint today. Per-organization keys are not shipped, and the platform-key fallback is a deployment setting rather than a tenant one.

Execution-capable enterprise runner appliancenot available2026-08-28

A release-bound Runner v2 verify-only package and root-owned installation contract are available for signed binding verification. They grant no browser, target, credential, artifact, evidence, or CMS execution authority. The separate execution-capable appliance and custody contract are not released.

Single-tenant application deploymentnot claimed2026-08-28

No customer-dedicated application stack is currently offered. The shared topology relies on forced row-level security, a dated non-bypass production runtime-role observation, migration-chain closed-world verification, and production-safe adversarial probes.

Status words, in full: verified means reperformed against the target named in the evidence with the command published; operating means implemented and running but not reducible to a single number; in progress means under way with nothing claimed until it completes; not claimed and not available both mean it is not true today, and the evidence column says what stands in its place.

Tenant isolation

The migration chain constructs forced row-level security on 53 of 81 tables and names 18 by-design exceptions plus every pending tenancy gap. Separately dated production checks cover the runtime role and an adversarial cross-tenant read.

Read the isolation mechanism

Posture receipt

Named-target measurements sealed as an Ed25519 governed receipt, keeping migration-chain results distinct from production observations. Verifiable without a ControlFrame server in the trust path and fetchable as JSON.

Open the posture receipt

Subprocessors

Current and deployment-selected subprocessors are listed with purpose, data categories, region, and DPA status, each row derived from the module that establishes the outbound dependency.

See the subprocessor list

Data residency

Five residency questions answered separately, with the live model routing table and the egress gate decisions rendered from the code that makes them rather than described.

Read the residency answers

The private runner

A protocol-specific boundary: what remains runner-side, what legacy collection can submit for governed custody, and what the released Runner v2 verify-only package expressly cannot execute.

Read the runner boundary

Vulnerability disclosure

Scope, safe-reporting guidance, triage, out-of-scope categories, and the remediation priorities that protect artifact custody and audit-log integrity.

Report a vulnerability

AI governance

Prompts are source-controlled; agent runs are traceable; humans keep review and signature authority. Restricted evidence is denied to external model endpoints by default.

Read the responsible-AI posture

Proof room

Current product proof, safe claims, demo route, and diligence gaps for investor, buyer, security, and audit review.

Open the proof room

Privacy and legal artifacts

The privacy notice is effective for the implemented public lead-data path. Terms, DPA, BAA, and subprocessor contracting artifacts remain under counsel review.

Read the privacy notice

Product assurance

ControlFrame exercises its own release, tenant-isolation, dependency, evidence-integrity, and adversarial boundary checks. These internal controls are not an independent SOC 2 examination or third-party audit.

Trust | ControlFrame