Security Posture
Where CMMD is on security, where it's going, and the honest gaps. Customer-shareable. Encryption, multi-tenancy isolation, auth, audit, vendor list, known gaps.
Where we are on security, where we’re going, and the honest gaps. Customer-shareable.
| Field | Value |
|---|---|
| Audience | Customers, enterprise prospects, internal eng |
| Last security review | 2026-05-16 |
| Owner | @aphaiboon |
CMMD treats security as product. We’re a small team, not SOC2 certified yet, but our posture is honest and our roadmap is concrete. Sensitive customer data (workspace content, Brain documents, chats) is encrypted at rest and in transit, scoped to organizations by repository-pattern enforcement, and isolated from any AI training data pipeline.
Where we are today
Section titled “Where we are today”| Area | Status | Notes |
|---|---|---|
| Encryption at rest | ✅ Active | Neon Postgres provides AES-256 at rest |
| Encryption in transit | ✅ Active | TLS 1.3 on all connections |
| Multi-tenant isolation | ✅ Architecturally enforced | Repository pattern — every query org-scoped (see ADR-0002) |
| 2FA / MFA | ✅ Available | TOTP supported; required for admin actions; not yet enforced workspace-wide |
| SSO (SAML, OIDC) | 🟡 Planned | Q3 2026 target for enterprise tier |
| SOC2 Type 1 | 🟡 Planned | Audit scheduled Q3 2026 |
| SOC2 Type 2 | 🟡 Planned | 12 months after Type 1 |
| ISO 27001 | 🟡 Considered, not yet committed | Reassess at enterprise revenue threshold |
| HIPAA | 🚫 Not a target | CMMD is not for PHI. Acceptable Use Policy excludes. |
| GDPR posture | ✅ DPA available on request | EU data residency planned Q4 2026 |
| Pen test | 🟡 Self-test only | External pen test Q3 2026 |
| Bug bounty | 🟡 Informal | Formal program planned post-SOC2 |
| Vulnerability disclosure policy | ✅ Published | See Vulnerability Disclosure Policy |
Architecture controls
Section titled “Architecture controls”Multi-tenant isolation
Section titled “Multi-tenant isolation”- Every database table that holds customer data has
organization_id - Repository pattern (CI-enforced —
scripts/enforce-repository-pattern.sh) blocks new directdbimports OrgQueryParamsmakesorganizationIdrequired at compile time- 0 cross-tenant data leaks since adoption (see ADR-0002)
Authentication
Section titled “Authentication”- Email + password with bcrypt hashing
- Session cookies (httpOnly, secure, SameSite=Lax)
- Session token rotation on privilege change
- 2FA via TOTP (Google Authenticator / 1Password etc.)
- Passwordless SSO planned via OAuth/OIDC (Q3 2026)
- Magic-link sign-in available
Authorization
Section titled “Authorization”- Org-scoped roles: Owner / Admin / Manager / Member
- Team-scoped membership for filtering (not isolation)
- Feature flag gating for staged rollouts (
isEnabled(key, orgId, userId)) - Audit log capture for admin actions (planned UI; events captured today)
Secrets management
Section titled “Secrets management”- Secrets in environment variables, never committed to repo
- Production secrets in Railway’s encrypted env layer
- 1Password as shared secret vault for human-readable credentials
scripts/check-forge-securityenforces sandbox + iframe + Zod validation for Forge
AI / model boundary
Section titled “AI / model boundary”- Customer data NEVER used for AI training — hard architectural rule
- Apex model serving infrastructure is isolated from training data pipeline
- Anthropic proxy (current) does not train on API data (per their published terms)
- See Model Card for full safety posture
Operational controls
Section titled “Operational controls”Logging & monitoring
Section titled “Logging & monitoring”- Structured JSON logs to Railway with required
stack:on all errors - PostHog for product analytics (event-only — no raw PII in events)
- Alerting on auth failure spikes, 5xx error rates, latency outliers (in progress)
Backups & DR
Section titled “Backups & DR”- Neon Postgres point-in-time recovery (30 days)
- Daily snapshot exports to S3 (planned)
- Disaster recovery runbook in Engineering → Runbooks
- RPO target: 1 hour. RTO target: 4 hours.
Incident response
Section titled “Incident response”- On-call rotation documented in Engineering → On-call
- Severity definitions (P0/P1/P2/P3) standardized
- Postmortem template for any P0/P1
- Customer notification commitment: within 24 hours of confirmed customer-impacting incident
Vendor / sub-processor list
Section titled “Vendor / sub-processor list”(Full sub-processor list maintained on a public page when GA.)
| Vendor | Purpose | Data exposed |
|---|---|---|
| Railway | Hosting | Encrypted app traffic, logs |
| Neon | Postgres database | Customer workspace data (encrypted at rest) |
| Anthropic (current) | LLM provider for Sidekick | Sidekick chat content (per their API ToS — not used for training) |
| PostHog | Product analytics | Event metadata only — no PII |
| Composio | Integration broker | OAuth tokens, integration metadata |
| GitHub | Code repo | No customer data |
| Mercury | Banking (internal use) | CMMD’s banking — not customer data |
Known gaps (honest list)
Section titled “Known gaps (honest list)”These are real and we’re not pretending otherwise:
- 🟡 No SOC2 attestation yet — audit scheduled Q3 2026
- 🟡 No external pen test on record — scheduled Q3 2026
- 🟡 No formal bug bounty program — informal disclosure policy active
- 🟡 SSO/SAML not yet shipped — Q3 2026 target
- 🟡 Audit log UI not yet customer-visible — events captured, surface TODO
- 🟡 Single-region (US-East) — EU data residency planned Q4 2026
If a prospect requires any of these today, we’ll be honest and they should wait for the relevant milestone or use a different tool until then.
What we will NOT do
Section titled “What we will NOT do”- 🚫 Train models on customer workspace data
- 🚫 Sell customer data to third parties
- 🚫 Add adtech / tracking pixels in product surfaces
- 🚫 Hide a breach — customer notification commitment is 24h for confirmed customer-impacting incidents
Reporting a security concern
Section titled “Reporting a security concern”| Concern | Where |
|---|---|
| Suspected vulnerability | security@cmmd.ai — see Vulnerability Disclosure Policy |
| Suspected data exposure | security@cmmd.ai — P0 response |
| Account takeover suspected | support@cmmd.ai + revoke sessions in Settings |
| Other concerns | Trust & Safety form (planned) |