In transit: TLS 1.3 with forward secrecy for all connections between client, browser extension and server.
At rest: AES-256 encryption for all stored data via Supabase managed encryption, with automatically rotated keys.
Secrets: all credentials, API keys and configuration managed via Doppler. Zero plaintext secrets exist in the codebase, environment files or version control history.
Row-level security policies enforced on every table. No query can return another organization’s data — enforced at the database layer, not the application layer.
All queries specify exact columns. No SELECT * is permitted anywhere, enforced by automated review gates on every pull request.
Organization identifiers validated at the middleware layer on every request, before any business logic executes.
Audit logs are tamper-evident via cryptographic JWT signing; any modification invalidates the signature. Stored separately from application data and immutable once written.
Retention: audit events for 24 months, access logs for 90 days.