Security and compliance

This page is written for the person doing a security review. It describes controls that are implemented and verifiable in the running system, states plainly where each certification stands, and separates the two — because a control that works and a certification that has been audited are different things, and conflating them wastes your time and ours.

Certification status, up front

Thalamus AI Cloud holds no third-party security certification today. There is no SOC 2 report, no ISO 27001 certificate, and no HIPAA attestation. If a signed report is a procurement gate for you, we do not clear it yet. Everything below describes engineering controls, not audited ones.

Where each framework stands

FrameworkStatusWhat is actually true
SOC 2 Type II Not started No auditor engaged, no observation period begun. Many of the underlying controls (access control, encryption, change management, audit logging) are implemented and described below.
GDPR Partially addressed Subject access, portability and erasure are implemented in the product. A DPA template and a sub-processor register exist. No DPO is appointed and no formal Record of Processing Activities is maintained.
HIPAA Roadmap — not suitable for PHI today We intend to support healthcare workloads. We do not yet. No BAA is in place with our AI providers, and no PHI-specific detectors exist. Do not put PHI into Thalamus at present.
ISO 27001 Not started No ISMS is formally documented.
PCI-DSS Not applicable / partial Thalamus never stores cardholder data — payments go directly to Stripe, a Level 1 service provider. The redaction gateway carries mandatory cardholder-data detectors that cannot be disabled while enforcing.

Identity and access

ControlImplementation
Password storage scrypt, N=32768 r=8 p=1, 64-byte key — roughly 32 MB of memory per hash, which is what makes offline cracking expensive. Verified in constant time.
Session tokens 256 bits of entropy, stored as a SHA-256 hash. A database disclosure yields no usable session cookie.
Session lifetime 12-hour absolute cap; the control plane adds a 2-hour idle timeout. Every session is destroyed on password change and on administrative reset.
Cookies HttpOnly, SameSite=Lax, Secure over HTTPS.
Brute force Lockout after 5 failed attempts for 15 minutes. Unknown accounts are verified against a dummy hash so response timing does not reveal whether an address exists, and password reset always reports success for the same reason.
Single sign-on OIDC. An email already bound to one identity provider subject cannot be silently re-pointed at another — this closes a real account-takeover path. Roles may be driven by IdP group claims.
Role-based access Four roles across nine resource types, enforced server-side. The client-side check is presentation only and is documented as such in the source.
Multi-factor authentication is not available

Thalamus does not implement TOTP or WebAuthn, and does not verify an MFA claim received from an identity provider. If you connect your own IdP via OIDC, your IdP's MFA policy governs the login — but Thalamus does not enforce or attest to it. This is the single largest gap in our access-control story and it is the first item on the roadmap below.

How the authorization boundary fails

Permission checks fail closed on every axis: an unrecognised role is denied, an unmapped resource is denied, an unrecognised method is rejected. The service refuses to start if any API entity is missing from the permission map, so a newly added table cannot ship silently unprotected — a deployment error rather than a quiet hole.

Credential-bearing resources — integrations, cloud connections, user accounts — are restricted to administrators for all writes regardless of role configuration. An ambiguous update that could create or modify requires both permissions, so a read-only user cannot route a creation through the update path.

Tenant isolation

Isolation is enforced in two independent layers, so a mistake in one does not expose data.

Infrastructure

Each tenant is provisioned with its own VPC, database instance, container cluster, load balancer and CDN distribution, with Terraform state held separately per tenant. On the dedicated tier this extends to a separate AWS account.

Database

Row-level security on every customer table, applied with FORCE so it binds the table owner too, and with write-side checks so a row cannot be written into another tenant's scope. The application role cannot bypass it.

A query that arrives without tenant scope raises an error rather than returning an empty result. This distinction matters: silent emptiness looks like "no data" and gets shipped, while an error gets fixed. Scope is set per transaction, never on a pooled connection where it could leak between requests. Continuous integration rejects any new table that lacks a tenant column or a security policy, so the guarantee cannot quietly decay as the schema grows.

Encryption

At restIn transit
Database AES-256 volume encryption; optional customer-managed KMS key TLS required by database parameter, not merely offered. Clients pin the certificate authority rather than trusting any presented chain.
Application Secrets held in AWS Secrets Manager and injected as references — values never appear in a task definition, a log line, or Terraform state TLS 1.2 minimum, TLS 1.3 preferred. No plaintext HTTP listener exists.
Integration credentials AES-256-GCM with a key generated per instance and held outside the database, so reading the database alone does not yield usable credentials

The database is never publicly reachable. Network access is granted by security-group reference rather than by address range: the database accepts connections only from the application tier, the application only from the load balancer, and the load balancer only from the CDN.

AI processing and what leaves your environment

Thalamus uses large language models to investigate incidents. This is the part of the system most worth your scrutiny, so we describe it in full.

What is sent: incident context — telemetry, service names, log excerpts and configuration relevant to the investigation — to the model provider you configure. Supported providers are Anthropic, OpenAI, Azure OpenAI, and locally hosted models via Ollama. With a local model, no data leaves your environment at all and no sub-processor is involved.

What is stored: only a 160-character sanitized summary of each prompt is persisted. Full prompts are not retained.

The redaction gateway

Before any prompt reaches a model provider, it passes through a redaction gateway that detects personal data across eleven categories — email, phone, national ID, payment card, bank account, IP address, secrets, names, addresses, dates of birth, and patterns you define. Detection combines pattern matching with field-name classification, which catches what a regular expression cannot.

You choose how the gateway behaves, per instance:

ModeBehaviourUse when
Monitor Detects and records what it finds; the prompt is sent unmodified Initial rollout — you are calibrating detectors and want to see what would be caught before changing behaviour
Redact Replaces detected values with surrogates before the prompt is sent Normal operation for regulated data
Block Refuses the request outright when personal data is detected Data that must never reach a third-party model under any circumstance
Monitor is the default, and monitor does not protect anything

A new instance starts in monitor mode: personal data is detected and logged, but it is still sent to the model provider. This default is deliberate — enforcing detectors that have not been calibrated against your own data produces false positives that break investigations, and teams then disable the gateway entirely. But it means an instance nobody has configured is not redacting. Set the mode to redact or block before sending regulated data. The setting is on the DataProtect page.

If sanitization fails, the request fails — the system does not fall back to sending an unsanitized prompt. Detectors covering cardholder data, national identifiers, bank accounts and secrets cannot be switched off while the gateway is enforcing.

Every model call is recorded with its provider, region, model and legal basis, which is what an international-transfer register under GDPR Articles 44–49 requires.

Audit trail

Redaction and transfer events are written to an append-only table. Immutability is enforced by a database trigger that rejects updates and deletes, rather than by a permission grant — the application owns the table, and an owner can re-grant itself permissions it revoked. A trigger it cannot.

The audit log holds categories and counts, never the personal data itself; any preview is taken from the already-sanitized output. Scheduled retention is the one path permitted to delete, it must be explicitly authorized for that transaction, and it writes its own audit record before deleting anything. Retention below one year cannot be configured for audit tables. Configuration changes to the controls themselves — who changed which detector, when, and from what value — are recorded separately.

Two limits worth knowing

The audit log is not cryptographically chained, so it is tamper-evident against the application but not against someone with database-administrator access or a snapshot. And authentication events — logins, role changes, invitations — are not currently written to an append-only trail. Both are on the roadmap below.

Your data: access, export, deletion

RightHow it works
Access & portability Export from the console at any time. Subject access requests are supported in the product.
Erasure Subject-level erasure is implemented. Results distinguish exact matches from probable ones, because personal data in free text cannot be located with certainty and we would rather show you that than imply completeness.
Suspension Deletes nothing. Data is retained and returns when the account is reinstated.
Staff access Nobody at Thalamus can read your data by default. Support access requires a grant recording who, why and for how long; it expires within 24 hours, every use is logged, and you can review the history and revoke at any time.
Instance deletion retains a database snapshot

When an instance is destroyed, a final database snapshot is retained by default so an accidental deletion can be recovered. Your data therefore still exists after teardown. If you require complete destruction — for a GDPR Article 17 erasure request, or at the end of a contract — ask us explicitly and we will delete the snapshot and confirm. We would rather state this than let you assume teardown means erasure.

Sub-processors

Parties that may receive your data, depending on which integrations you enable. This list is derived from the routing table in the source, not from memory.

Sub-processorDataWhen
Anthropic / OpenAI / Azure OpenAIInvestigation prompts, after redactionWhichever you configure. Local models send nothing.
Amazon Web ServicesAll hosting, storage, email deliveryAlways
StripeBilling details. Card data goes directly to Stripe and never reaches Thalamus.Paid plans
Atlassian, GitHub, Azure DevOps, ServiceNow, DynatraceContent from the systems you connectOnly the integrations you enable

Data residency

You choose the region at signup, and the entire estate is provisioned there. There is no cross-region replication. Two exceptions to note: CDN edge caches serve static assets globally (no customer data), and your chosen model provider processes prompts in its own regions — the one place regional pinning does not hold, and another reason a locally hosted model is worth considering for strict residency requirements.

What we are working on

Published because a roadmap you can hold us to is worth more than a list of strengths.

ItemWhy it matters
Multi-factor authenticationThe largest access-control gap. Required for SOC 2 CC6.1 and HIPAA administrative access.
Authentication event audit trailLogins, role changes and invitations need an append-only record (SOC 2 CC7.2).
Business Associate AgreementsRequired before any PHI can be processed. Blocks the healthcare use case entirely.
PHI-specific detectorsMedical record and provider identifiers, beyond the current general personal-data set.
Automated dependency and secret scanningContinuous integration does not yet scan dependencies or detect committed secrets (SOC 2 CC7.1).
Cryptographically chained audit logWould make the trail tamper-evident against database-level access, not only application-level.
Vulnerability disclosure policyNo published process for reporting a security issue. Until there is one, write to the address below.

Reporting a vulnerability

Email security@thalamusaicloud.com. We will acknowledge within two business days. Please give us reasonable time to remediate before public disclosure. We will not pursue legal action against good-faith research that respects customer data and avoids service disruption.

Questions this page did not answer

Security reviews turn up specifics that no general document covers. Write to security@thalamusaicloud.com and you will get a direct answer — including when the answer is that we do not do that yet.