Security principles
Three rules govern how the platform handles customer data:
- Defense in depth — every sensitive action passes through at least two independent gates (authn + RBAC + cross-tenant filter at SQL layer).
- No silent fallbacks — when a carrier or integration credential is missing, the system fails loudly with an explicit error code rather than fabricating a fake successful outcome.
- Auditable by default — every operator action lands in the audit log with actor, target, IP, and event type. Compliance officers can query it.
Tenant isolation
Every query into Autocloz includes the caller's org_id as a hard filter. There is no global read path — even a misconfigured RBAC role cannot leak rows from another workspace because the SQL layer rejects the query.
- Postgres row-level scoping with
org_idas a required predicate - JWT carries the org_id; revalidated on every request via membership lookup
- A dedicated cross-tenant isolation suite (
test_*_cross_tenant_isolation) runs locally before every release - Bulk endpoints scope the input list to the caller's org before the action; out-of-org IDs are silently dropped
Encryption at rest + in transit
Every connection to Autocloz uses TLS 1.2+. Postgres at rest is encrypted with AES-256 volume encryption. Backups are encrypted with a separate key and stored separately from the primary database.
- HTTPS-only; HSTS preload header set with
max-age=63072000; includeSubDomains; preload - TLS termination at the edge with modern cipher suites only (ECDHE + AES-GCM / ChaCha20)
- Database volumes AES-256 encrypted; daily encrypted backups
Mailbox + carrier credentials
Mailbox passwords, OAuth refresh tokens, carrier API keys, and SIP passwords are sensitive. They are never logged, never returned by any API endpoint after the initial save, and stored encrypted at the application layer above the database encryption.
- SMTP / IMAP passwords — encrypted with a per-org key derived via HKDF from the platform secret
- OAuth tokens — refresh tokens encrypted; access tokens never persisted (re-derived from refresh on demand)
- Carrier API keys — Telnyx / DIDLogic / FreJun keys live in env at the platform level (one shared key per provider), never per-customer; per-agent FreJun OAuth tokens encrypted with the same scheme as mailbox passwords
- SIP passwords — write-only; the API surfaces only
sip_password_set: boolafter the initial save
Role-based access control
Every operator surface in Autocloz is gated by an explicit permission check. The four built-in roles (Owner, Admin, Member, Viewer) cover most workspaces; Enterprise plans get the custom-role editor that grants per-module action permissions.
- Module × action grid — 30+ modules × view/create/edit/delete
require_perm(module, action, strict=True)on every admin endpoint — strict mode rejects unknown roles instead of falling through- API keys carry a scoped permission grid that narrows beyond the role — a key with only
leads:viewcannot delete leads even if minted by an admin - Voice surfaces have additional role-scoping — members and viewers see only their own calls in the CDR + recordings views
Audit log
Every operator-initiated action — and every administrative system event — writes to a tamper-evident audit log. Compliance officers can drill in by org, actor, event type, or time range.
- Captured fields: org_id, actor_user_id, actor_email, event, entity_type, entity_id, IP, user-agent, free-form metadata, timestamp (UTC)
- Append-only — no API path lets anyone delete rows; even Owners can only export
- Retained according to your plan and exportable to CSV at any time
- Export to CSV from Settings → Audit log
Voice + webhook signature verification
Voice provider webhooks are not JWT-authenticated — the carrier doesn't have an Autocloz token. Instead, every webhook is verified using the provider's signature scheme, mandatory in production:
- Telnyx — Ed25519 signature over
timestamp|body; rejects requests with stale or missing timestamps (>300s drift) - FreJun — HMAC-SHA256 over the raw body with the per-org webhook secret
- DIDLogic — HMAC-SHA256 with constant-time comparison
- Idempotency — every webhook event_id is recorded in
voice_webhook_event_dedup; replays are silently rejected
Verification can be opt-in in dev for ease of local testing; AUTOCLOZ_ENV=production makes it mandatory.
AI data handling
Autocloz uses third-party LLMs (OpenAI, Anthropic, Groq, ElevenLabs, Deepgram) for AI replies, summaries, voice synthesis, and transcription. We do not use customer data to train models — neither ours nor the providers'.
- Bring your own key — paste your OpenAI / Anthropic / Groq key per workspace; we never proxy via a shared key
- Zero retention enabled on every API call where the provider supports it (OpenAI
data_retention=none, Anthropic enterprise zero-retention) - No content sent to providers is stored on Autocloz beyond the retention window of the source artefact (e.g., a generated reply is stored only as long as the message it answers)
- Voice transcripts stored next to the recording URL; retention follows the recording-retention policy in workspace ops settings
Infrastructure
- Runs on dedicated cloud infrastructure with encrypted storage volumes
- The database and Redis are isolated to a private network with no public access — only the API workers can reach them
- Daily encrypted backups with point-in-time recovery
- Have a data-residency requirement? Contact us and we’ll tell you exactly where your data is processed before you commit.
Incident response
On a confirmed security incident affecting customer data, we notify affected workspaces promptly — by email to the workspace Owner and in the product — and follow up with detail and remediation as the investigation progresses.
- An on-call engineering rotation for production incidents
- Customer notification by email and in the workspace’s notifications panel
- A written postmortem shared with affected workspaces
Compliance posture
We build to the controls these frameworks ask for — tenant isolation, encryption, role-based access and audit logging — and we tell you plainly where we are rather than claim a badge we don’t hold.
- SOC 2 — we follow SOC 2-aligned controls (the tenant isolation, encryption, RBAC and audit logging described above). We are not SOC 2 certified, and we say so on every security questionnaire.
- GDPR — a Data Processing Addendum is available on request; subject-access and deletion requests are handled within 30 days.
- India DPDP Act 2023 — we align our data-handling practices to the Act, including consent capture for marketing email.
- CCPA / CPRA — California residents can request data deletion via [email protected].
- TCPA + India DLT — outbound calling runs DNC, quiet-hours and DLT checks before every dial.
Reporting a security issue
We run a coordinated-disclosure program. Please report security issues to [email protected] with steps to reproduce. We acknowledge within 24 hours and aim to resolve high-severity issues within 14 days.
We don't currently run a paid bug-bounty program, but we credit researchers who report valid issues, on request.