Trust Center

Security, privacy & compliance

How Cogniseam protects your knowledge — described accurately, with each control backed by shipped code or a documented practice. Nothing here claims a certification we don't hold.

Back to features
Trust is one stage of the system — Governance
  1. Enterprise SystemsSlack · Microsoft 365 · Drive · ERP
  2. Connectorssync · live capture · CDC
  3. Normalizationone idempotent pipeline
  4. Knowledge Extractionfacts · entities · policies · skills
  5. Enterprise Memoryretrieval · history · supersession
  6. Knowledge Graphentities · relationships
  7. GovernanceRBAC · audit · approvals · encryption
  8. Executionanswers · skills · workflows · agents · API
  9. Business Outcomesfaster decisions · recovered revenue · provable compliance
Posture

Security & trust posture

Cogniseam is built with enterprise security principles: per-user permission-filtered retrieval, tenant isolation, encryption at rest and in transit, hardened authentication and SSO, a tamper-evident audit trail, verified backups, and an AI-safety egress gateway. Every claim on this page is backed by shipped code or a documented control, and anything not yet implemented is labelled Planned, In progress, or Not supported — never overstated.

Authentication & SSOImplemented
Tenant isolationImplemented
Encryption at restImplemented
Tamper-evident auditImplemented
AI safety gatewayImplemented
Verified backupsImplemented
Independent certificationNot supported

A note on accuracy. This page separates what is implemented from what is configured, in progress, or planned, and keeps technical controls strictly distinct from external certifications. Cogniseam does not currently hold SOC 2, ISO 27001, or any independent security certification, and no third-party penetration test has been completed — those are on the roadmap.

Controls

Security

Application- and platform-level protections that guard every request, upload, and outbound call.

SSRF protection

Outbound connector/workflow requests are blocked against loopback, link-local, cloud-metadata (169.254.169.254), and private ranges — after DNS resolution and with 3xx-redirect rejection to defeat bypasses.

lib/ssrf.ts
Implemented
Upload / decompression hardening

Office/ZIP uploads are bounded by streaming entry-count, per-entry, and whole-archive size limits enforced during inflation, defeating decompression bombs.

lib/zip-safe.ts
Implemented
Rate limiting

A fixed-window limiter with spoof-resistant client-IP derivation returns 429 with Retry-After. It is per-instance (the deployment pins a single replica); a shared store is required before horizontal scale-out.

lib/ratelimit.ts
Implemented
Browser security headers

Every response carries CSP, HSTS preload, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy, and Permissions-Policy. The CSP still allows inline script/style; nonce-based hardening is a follow-up.

next.config.js
Implemented
CSRF protection

Mutating requests are checked with an Origin-vs-Host comparison at the edge; machine endpoints use their own key/token auth.

middleware.ts
Implemented
Connector OAuth hardening

Connector OAuth uses single-use, TTL-bounded, workspace-bound state with a double-submit cookie layer, so authorization callbacks can't be replayed or cross-bound.

lib/connectors/google-oauth-state.ts
Implemented

Secure SDLC

Automated pre-merge security gates

Every change runs lint, strict type-checking, and a security-focused test suite (hundreds of cases, including hostile-input tests) before merge.

.github/workflows/ci.yml
Implemented
SAST, dependency & secret scanning

CI runs Semgrep SAST, Trivy dependency/misconfig scanning (gating on fixable critical dependency vulnerabilities), an SBOM (CycloneDX/SPDX), and Gitleaks secret scanning.

.github/workflows/security-scan.yml
Implemented
Fail-closed production preflight

A boot/preflight policy refuses to start a production-like deployment when a mandatory control (session secret, encryption key, single-tenant invariant) is missing or unsafe.

lib/security-policy.ts
Implemented
Independent automated code review

Pull requests receive an automated independent review pass in addition to human review.

.github/workflows/claude-review.yml
Implemented
Hardened runtime

The application container runs as a non-root user.

Dockerfile
Implemented
Independent penetration test

An independent third-party penetration test has not yet been performed; it is on the roadmap.

Planned
Controls

Authentication

How identities sign in and how sessions are protected and revoked.

Adaptive password hashing

Password accounts use per-user salted scrypt with constant-time verification; login is timing-equalised against user enumeration.

lib/auth.ts
Implemented
Signed sessions with revocation

HMAC-SHA-256 signed httpOnly session cookies with expiry and a per-user epoch, so sign-out-everywhere and password changes invalidate sessions platform-wide.

lib/auth.ts
Implemented
One-time passcode support

Email one-time-passcode verification is supported alongside password sign-in.

lib/otp.ts
Implemented
SAML SSO with replay protection

SAML uses signed assertions (SHA-256), audience restriction, clock-skew bounds, single-use assertion replay caching, and HMAC-signed RelayState for CSRF.

lib/saml.ts · lib/saml-replay.ts
Implemented
OIDC SSO with PKCE

OIDC uses authorization-code + PKCE (S256), RS256 id_token verification against JWKS, and issuer/audience/expiry/nonce checks.

lib/sso/oidc.ts
Implemented
SCIM provisioning

SCIM 2.0 user/group provisioning is supported for identity-lifecycle automation; the customer configures it against their IdP.

lib/scim.ts
Customer configured
Native multi-factor authentication

First-party TOTP (RFC 6238) with authenticator-app enrollment, one-time recovery codes, and single-use anti-replay. A second factor is challenged on password and email-code sign-in via a short-lived, purpose-separated token; workspaces can prompt members to enrol it (org-wide request-time enforcement is planned). SSO sign-ins keep MFA at the identity provider.

lib/mfa/totp.ts · lib/auth.ts
Implemented
Controls

Access Control

Role- and permission-based authorization, tenant isolation, and per-user clearance on retrieval.

Capability-based RBAC

A namespaced capability registry grants area.action permissions to admins, everyone, or groups; unknown capabilities fail closed as not-granted.

lib/permissions.ts
Implemented
Permission-filtered retrieval (ACL)

Every chunk, fact, and skill carries audiences; retrieval filters to the requesting user's individual clearance before ranking, so restricted content never reaches the model.

lib/acl.ts
Implemented
No blanket admin content access

Workspace admin is a management capability, not see-all; browsing all tenant content is not granted by default.

lib/acl.ts
Implemented
Tenant isolation

Requests run inside an AsyncLocalStorage workspace context; the per-tenant secret store is keyed by that context so cross-tenant access is impossible by construction.

lib/workspace-ctx.ts · lib/tenant/secret-store.ts
Implemented
Per-request membership re-check

Workspace membership is re-verified on every request, so deprovisioning or offboarding takes effect immediately.

lib/with-workspace.ts
Implemented
Per-workspace connector/config isolation

Tenant-scoped credentials — AI provider API keys and Slack/Notion/Jira/GitHub/Voyage tokens — resolve per workspace through an encrypted per-workspace secret store keyed by the request's workspace context, with no fallback to a shared global value (an unset secret reads as absent — fail-closed). Provider/model/endpoint config is per-workspace, and Microsoft/Google connected accounts are bound to their owning workspace. GET/POST /api/settings only ever touch the caller's workspace; deployment-level platform credentials (the OAuth app registration and domain-wide-delegation service account) are platform-managed and never exposed through a tenant route.

lib/tenant/credentials.ts · lib/tenant/secret-store.ts · app/api/settings/route.ts
Implemented
Controls

Data Protection & Encryption

Encryption at rest and in transit, key management, and rotation.

AES-256-GCM at rest

Settings, credentials, tenant secrets, audit log, and lifecycle ledgers are sealed with AES-256-GCM (random IV + auth tag). In production, writing plaintext at rest with no key configured is refused.

lib/secrets.ts
Implemented
TLS in transit + HSTS

Traffic is served over TLS (terminated at the platform ingress) with HSTS preload; outbound server requests require HTTPS.

next.config.js · lib/ssrf.ts
Implemented
Envelope format with key IDs

Ciphertext carries the key id it was sealed under (enc:v2:<keyId>:…), so keys can rotate without re-reading every field up front.

lib/secrets.ts · lib/crypto/key-provider.ts
Implemented
Key rotation

Multiple data-encryption keys with an active-key id are supported; new writes seal under the active key while older ids still decrypt, with a re-encrypt sweep to retire them.

lib/crypto/key-provider.ts
Implemented
Key-strength enforcement at boot

Boot/preflight refuses to start production with a weak or default encryption key (minimum length and character-diversity checks).

lib/security-policy.ts
Implemented
Managed KMS (Azure Key Vault)

Envelope key management is implemented behind the key-provider seam: per-file data keys are wrapped by a KMS-held key, and an Azure Key Vault adapter (REST wrapKey/unwrapKey) ships. Enable with KMS_PROVIDER. Marked in progress pending verification against a live vault; AWS KMS is a later adapter on the same interface.

lib/crypto/keyring.ts · lib/crypto/kms/azure-key-vault.ts
In progress
Customer-managed keys (BYOK/CMK)

Envelope encryption is in place: data-encryption keys are wrapped by a key-encryption key (KEK) and only the wrapped form is stored, so revoking the KEK makes stored data unrecoverable at the next process start — the data keys are unwrapped once at boot and held in memory, so a still-running process keeps decrypting until teardown; revocation takes effect on restart, not live. The on-prem/local-KEK reference path is implemented and verified end-to-end (production boot with no DATA_ENCRYPTION_KEY — the KEK wraps the data keys instead — plus encrypt/decrypt, restart-survival, and fail-closed on a wrong/revoked key at boot), and the Azure Key Vault adapter ships behind the same seam (validation against a live vault still pending). Both are deployment-level today: a single KEK protects the whole deployment. Rotation requires provisioning a fresh DEK (scripts/provision-cmk.mjs --rotate) and running the re-seal sweep. For Azure, creating a new Key Vault key version does not by itself migrate existing DEKs: their wrapped entries remain bound to the original key version, which must remain enabled for startup. Retiring an old Azure or local KEK version is not supported until a KEK rewrap-and-removal workflow exists. A per-tenant, customer-held KEK — where each workspace holds and revokes its own key independently — is the remaining work and depends on tenant-scoped keys.

lib/crypto/keyring.ts · lib/crypto/kms/local-kek.ts
Partial
Controls

AI Safety

Governing what leaves the platform to AI providers, and defending against prompt injection.

AI governance egress gateway

Every LLM, embedding, and OCR call passes a single egress boundary that evaluates deployment + tenant policy and audits the decision (capability/provider/classification only — never prompt content) before the provider is invoked. Policy-load failures fail closed.

lib/ai-governance/gateway.ts
Implemented
Data-classification enforcement

The gateway takes the strictest of the request class and the tenant's declared sensitivity, so e.g. PHI-classified data can be forced to a permitted provider.

lib/ai-governance/classification.ts
Implemented
Prompt-injection quarantine & provenance

Retrieved and imported content is fenced with distinctive untrusted-content markers and provenance labels, and imported skills are quarantined from automatic execution.

lib/ai-safety/untrusted.ts
Implemented
Outbound credential screening

Agent output is screened for leaked secret patterns (API keys, private keys) before egress; enforcement is advisory unless strict mode is enabled.

lib/ai-safety/untrusted.ts
Partial
Grounded, cited answers

Answers are grounded only in the workspace's own content with inline citations; when the answer isn't present, the system says so rather than inventing one.

lib/ask.ts
Implemented
Provider zero-retention profiles

Configurable no-training / zero-retention profiles for AI, embedding, and OCR subprocessors are being built.

In progress
Controls

Audit & Governance

A tamper-evident record of security events, plus the data-lifecycle governance built around it.

Tamper-evident audit trail

Security-relevant events are appended to a keyed hash chain: each record is HMAC(prevHash + record) under an audit key derived from the data key, so altering or reordering any record is detectable.

lib/audit.ts
Implemented
Chain verification & tail anchoring

A verifier detects hash mismatches, record injection, and tail truncation (via an off-volume head anchor); it reports whether the chain is keyed (tamper-evident) or unkeyed (corruption-only).

lib/audit.ts
Implemented
Legal hold

User- and workspace-scoped legal holds with a required basis are consulted before any destructive lifecycle step, which records a retained-with-basis outcome. Reads fail closed.

lib/lifecycle/legal-hold.ts
Implemented
Erasure ledger

Erasures are recorded as encrypted, fail-closed tombstones (users and tenants), deliberately excluded from snapshots so a restore can't resurrect an erased subject.

lib/lifecycle/erasure-ledger.ts
Implemented
Signed lifecycle receipts

Deletion, tenant-deletion, and export receipts are HMAC-SHA-256 signed with a purpose-separated key; in production the system throws rather than emit an unsigned receipt.

lib/crypto/receipt-signing.ts
Implemented
Configurable retention policies

A retention scheduler and lifecycle orchestrator exist; customer-configurable per-tenant retention windows are still maturing.

lib/lifecycle/retention.ts
In progress
Immutable, SIEM-integrated audit export

The tamper-evident audit trail can be streamed to a SIEM (Splunk HEC, Microsoft Sentinel, or a generic HTTPS webhook), where it becomes the immutable long-retention copy. Only a redacted subset leaves the process — no email, IP, or free-form detail, and email-shaped identifiers are pseudonymized — carrying each record's seq and its opaque chain-hash anchor, plus a persisted cursor that makes delivery at-least-once and gap-detecting. The SIEM can therefore detect a missing record (seq gap) and pin an exported record to its chain position, but it cannot itself recompute the HMAC — the redacted payload and the audit key never leave the process — so full tamper-evidence (that no record was altered) is proven by the source's own keyed chain verifier, not reconstructed at the SIEM. Today the export is DEPLOYMENT-WIDE and operator-configured (the whole deployment's audit trail streams to one operator-owned endpoint via env) — suited to a single-tenant / self-host deployment. Per-tenant SIEM routing (tenant-scoped export credentials and records, so a workspace streams only its own events) is the remaining work; on a shared deployment this stays operator-only, never a per-tenant feature. Verified end-to-end against an HTTPS sink.

lib/audit-siem.ts · lib/audit.ts
In progress
Controls

Disaster Recovery

Backups you can actually restore from — verified in CI, not just scheduled.

Encrypted backups

Rolling snapshots of the data files (including the encrypted stores and audit log) are taken on a throttled schedule and rotated to the last 24.

lib/backup.ts
Implemented
Verified restores

A restore-verification job decrypts every envelope in the restored data under the escrowed key (a wrong key fails the GCM tag) with a vacuity guard, so a 'successful' restore is proven decryptable, not just present.

scripts/verify-restore-decryptable.ts
Implemented
Automated restore drills

Backup and restore-drill workflows run in CI so the recovery path is exercised, not just documented.

.github/workflows/restore-drill.yml
Implemented
Erasure re-apply on restore

Restores re-apply erasure and tenant tombstones (fail-closed), so recovering a snapshot can never revive an erased subject.

lib/backup.ts
Implemented
Documented recovery runbook (RPO/RTO)

A disaster-recovery plan, restore-test procedure, and RPO/RTO register are maintained in the compliance program.

docs/compliance-program/business-continuity/
Implemented
Geo-redundancy / multi-region

Backups live on the same platform volume today; cross-region redundancy and guaranteed data residency are roadmap items.

Planned
High-availability (multi-instance)

The application runs as a single instance today; moving to a multi-instance, higher-availability architecture is underway.

In progress
Alignment

Compliance

Technical-control alignment to major frameworks. Implementation posture and external certification are tracked separately — we never present one as the other.

OWASP ASVS
Application security verification
Not certified
Technical controls:Partial

Controls align to ASVS verification requirements for authentication, session management, access control, and input handling. Self-assessed alignment — no formal ASVS verification has been performed.

NIST CSF
Cybersecurity framework
Not certified
Technical controls:Partial

Identify / Protect / Detect functions are partially mapped in the internal control catalog. CSF is a framework, not a certification.

SOC 2
Trust Services Criteria
Not certified
Technical controls:Partial

Technical controls supporting the Security criteria are implemented and a Type I readiness effort is documented internally. No SOC 2 examination has been performed and no report exists.

ISO/IEC 27001
Information security management
Not certified
Technical controls:Partial

A subset of Annex A technical controls is implemented; the management-system and certification effort is roadmap. Not certified.

ISO/IEC 42001
AI management system
Not certified
Technical controls:Partial

AI governance controls (egress gateway, classification, provider register, evaluation) map to an internal ISO 42001 readiness matrix. Not certified.

GDPR
EU data protection (technical safeguards)
Not certified
Technical controls:Partial

Technical safeguards — data minimisation, erasure ledger with signed receipts, records of processing, encryption — are implemented. GDPR is a regulation, not a certification; a DPA is contract-dependent.

HIPAA
US health data (technical safeguards)
Not certified
Technical controls:Partial

Technical safeguards — PHI classification gating in the AI egress path, encryption, audit — are implemented. A Business Associate Agreement and full HIPAA compliance are contract-dependent and not attested.

“Technical controls” reflects what is implemented in the product. “External certification” reflects independent third-party attestation, which Cogniseam does not yet hold for any framework above.

Controls

Privacy

Data ownership, minimisation, deletion, retention, and the terms that depend on a signed agreement.

Customer data ownership

Content ingested into a workspace belongs to that workspace; the product embeds no third-party analytics or tracking SDKs.

app/
Implemented
Prompt data minimisation

User prompts/questions are not persisted after processing.

lib/ask.ts
Implemented
Deletion & right-to-erasure

Documents are fully removed on delete (cascading to derived facts/chunks); account and tenant erasure are recorded in the erasure ledger with signed receipts.

lib/lifecycle/erasure-ledger.ts
Implemented
PII handling & AI classification

Sensitive-data classification gates which providers may process a request; automated PII detection/redaction across all ingested content is maturing.

lib/ai-governance/classification.ts
Partial
Configurable data retention

A lifecycle retention engine exists; customer-configurable retention windows per data category are still being finished.

lib/lifecycle/retention.ts
In progress
Data residency / region pinning

Guaranteed data residency and region pinning are not currently supported.

Not supported
Data Processing Agreement (DPA)

Data-processing terms, breach-notification windows, and audit rights are established under a signed agreement.

Contract dependent
How it fits together

Architecture

Every request flows through the same trust boundaries — identity, tenant context, authorization, then governed execution and an audited, encrypted store.

  1. User

    Authenticated identity (password + OTP, or SAML / OIDC SSO)

  2. Workspace

    Tenant context bound to the request; membership re-checked

  3. Authorization

    Capability RBAC + per-user ACL clearance

  4. Knowledge layer

    Permission-filtered retrieval over facts, skills, graph

  5. Execution layer

    AI governance egress gateway + workflow runtime with approvals

  6. Audit

    Tamper-evident keyed hash chain of security events

  7. Encrypted storage

    AES-256-GCM at rest with rotating keys

Live

Operational Status

Read live from this deployment. Values that can't be read show as Unavailable or Not configured — never a placeholder number.

Documents indexed
Facts extracted
Pending reviews
Open contradictions
Encryption at rest
Audit trail
Last backup
Application version
Report an issue

Responsible Disclosure

Cogniseam operates a coordinated vulnerability disclosure policy. Please report vulnerabilities privately (GitHub private advisory or the security contact) — never via public issues or pull requests.

Security contact
Set by deployment (SECURITY_CONTACT) — see SECURITY.md
Acknowledgement
Target: within 3 business days
Initial assessment
Target: initial severity assessment within 10 business days
Supported versions
Fixes are applied to the current main branch and continuously deployed; there is no separate LTS line.

Full policy, scope, and safe-harbour terms are in SECURITY.md.

Planned

Roadmap

Enterprise capabilities we're building next. Listed here explicitly so they're never mistaken for shipped controls above.

Per-tenant customer-managed keys

A per-workspace, customer-held KEK (BYOK/CMK via Azure Key Vault / AWS KMS) that each tenant rotates and revokes independently — beyond today's deployment-level KEK.

Planned
Per-tenant SIEM audit export

Tenant-scoped export credentials and records so each workspace streams only its own audit trail to its own SIEM — beyond today's deployment-wide operator export.

Planned
Data residency

Region pinning and geo-redundant backups.

Planned
High availability

Multi-instance deployment with a shared rate-limit / replay store.

Planned
External penetration test

Independent third-party penetration test and remediation.

Planned
SOC 2 Type I

Independent SOC 2 examination once readiness is complete.

Planned
ISO 27001 certification

Formal ISMS certification.

Planned
The outcomes

Governed memory, delivered as business value.

Trusted AIBetter decisionsInstitutional knowledgeFaster onboardingProvable complianceOperational excellence