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
- Cross-tenant tests gate every release — 50+
test_*_cross_tenant_isolationcases run on every commit - 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 via the cloud provider's standard volume encryption (AES-256). Backups are encrypted with a separate key and stored in a different region.
- 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 disks AES-256 encrypted; daily snapshots retained for 30 days
- Backups encrypted with a customer-managed key for Enterprise plans on request
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 for 12 months on Pro, 24 months on Business, 7 years on Enterprise
- 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
- Hosted on AWS (Mumbai, ap-south-1 by default) with multi-AZ Postgres + Redis
- EU data residency available on request (eu-west-1) for European customers
- VPC-isolated database; no public access — only the API workers can reach it
- Quarterly third-party penetration tests; current report available under NDA
- Daily encrypted backups with point-in-time recovery (RPO 5 min, RTO 1 hour)
Incident response
On a confirmed security incident affecting customer data, we notify affected workspaces within 24 hours via email to the workspace Owner + a status-page incident. Detail and remediation follow within 72 hours.
- On-call engineering rotation 24/7 with a 15-minute response SLA
- Customer notification via email + the workspace's notifications panel + status page
- Postmortem published publicly within 7 business days for any customer-data-affecting incident
Compliance posture
- SOC 2 Type II — audit underway; Type I report available now under NDA
- GDPR — DPA available; EU data residency on request; subject access requests handled within 30 days
- India DPDP Act 2023 — full compliance (data fiduciary registered; consent capture for marketing emails)
- CCPA / CPRA — California residents can request data deletion via privacy@autocloz.com
- TCPA + India DLT — outbound calling enforces DNC + quiet hours + DLT registration before every dial
Reporting a security issue
We run a coordinated-disclosure program. Please report security issues to security@autocloz.com 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 bug-bounty program but we do credit researchers in our security hall-of-fame on request, and we cover reasonable expenses (e.g., a paid plan for verification testing).