Security & Trust — CarryOnSkip to main content
Home
Trust & Security

Your family's most private moments deserve military-grade protection.

We built CarryOn for families like ours. The same encryption, key handling, and operational controls we'd want guarding our own wills, our own messages, our own kids' inheritance. This page documents — honestly — exactly what those controls are today.

Encryption — at rest and in transit

  • AES-256-GCM for every encrypted document, message, and vault item.
  • Per-estate encryption salt generated at estate creation. No two families share a key.
  • PBKDF2-HMAC-SHA256, 600,000 iterations for password-derived keys (NIST recommends ≥600k).
  • TLS 1.3 with HSTS preload (max-age 1 year, includeSubDomains, preload).
  • Encrypted vault contents. Documents are stored AES-256-GCM encrypted with per-estate keys — there is no staff tool for browsing them. AI chat transcripts, which can quote documents you flagged for AI analysis, are currently stored unencrypted; database access is restricted and logged. We're saying so here because this page changes before practice does. Encryption keys are derived per estate from key material CarryOn operates, so this is not a zero-knowledge system in the cryptographic sense — we hold the ability to decrypt, and we constrain who can exercise it rather than claiming we cannot.

Authentication & Session Security

  • HMAC-SHA256 signed JWTs with token blacklist + auto-expiring TTL index in MongoDB.
  • Single-session enforcement for non-admin accounts — old sessions are invalidated when you log in elsewhere.
  • Account lockout after 5 failed attempts within 15 minutes.
  • Email-based 2FA (OTP) available for all accounts. SMS 2FA gated on Twilio A2P 10DLC approval.
  • WebAuthn / Passkey support for benefactor and beneficiary accounts.

Key & Secret Rotation

  • JWT signing secrets rotated at least annually and on any incident.
  • Stripe API keys rotated when staff change roles or leave.
  • VAPID push keys persisted to environment, not disk — survives pod restarts cleanly.
  • Per-estate AES salts are immutable for the life of the estate; we never re-key without explicit user consent because it would invalidate all encrypted data.

Infrastructure

  • Hosted on Railway (US East) and Vercel (global edge). MongoDB Atlas (encrypted-at-rest, automatic backups, point-in-time recovery).
  • Distributed scheduler locks (MongoDB-backed) prevent duplicate background jobs in multi-pod deployments.
  • MongoDB-backed sliding-window rate limiter on every authentication and high-value endpoint.
  • Sentry error monitoring on both backend (FastAPI + Starlette) and frontend, gated behind env-based DSN so dev environments never report.
  • K8s-style liveness + readiness probes (/api/health/live, /api/health/ready) for graceful rolling deploys.

Browser-Side Hardening

  • Content Security Policy (default-src 'self', tight allow-list for Stripe and fonts).
  • HSTS with preload + includeSubDomains.
  • X-Frame-Options: DENY (no clickjacking).
  • X-Content-Type-Options: nosniff.
  • Referrer-Policy: strict-origin-when-cross-origin.
  • Permissions-Policy locks down camera, mic, geolocation, payment to first-party only.
  • Cross-Origin-Opener-Policy / Cross-Origin-Resource-Policy: same-origin.

Privacy & Data Protection

  • You own your data. Full export tooling described on our Wind-Down & Data-Portability Promise.
  • Beneficiaries see nothing until you choose. Pre-transition, the only surface they have is their own profile.
  • "Public Device Mode" wipes the local cache (IndexedDB + JWT) on tab close or inactivity for shared devices (libraries, FEMA shelters).
  • We never sell, trade, or market your family data to third parties. Ever.
  • AI processing — zero data retention. Estate Guardian, the Beneficiary Concierge, and our other AI features are powered by xAI (Grok). Our xAI account is configured for zero data retention: the content of each request is processed only to generate the response and is not stored by xAI afterward. Separately, xAI's published API policy excludes API content from model training. The conversation transcripts you see in the app are stored by CarryOn under the controls described above — not by xAI.

Compliance & Audits

  • SOC 2 Type II — In Progress. We are mid-audit. We will publish the report and audit firm name on this page when complete. We do not claim SOC 2 attestation today.
  • GDPR & CCPA data-subject rights (access, deletion, portability) supported via in-app export and a written request to privacy@carryon.us.
  • HIPAA-style controls applied to medical directives stored in the Secure Document Vault, though we are not a covered entity.

Reporting a Vulnerability

If you've found a security issue, please tell us before you tell the internet. We don't have a paid bug bounty yet, but we will publicly credit you on this page (with your permission) and respond within 72 hours.

Questions about how we protect your family's information? Write to security@carryon.us. We answer every legitimate inquiry, often within the same day.

Last updated: April 29, 2026. This page is the source of truth for CarryOn's security posture. We change it before we change practice.