Security posture, v1.2

Answered before you ask.

RocketMail reads your mail and writes to your CRM. Every claim here names the control behind it. Where a control is not in place, we say so.

01

The scopes we refuse.

RocketMail requests gmail.modify on Gmail and Mail.ReadWrite on Microsoft Graph. That is the smallest scope that allows the product to do its job. It is not gmail.readonly, because RocketMail archives and labels, and it is not full access, because full access would let us permanently delete mail. We deliberately gave that ability up.

CapabilityRocketMailWhy
Read message contentsYesRequired to rank, draft, and update the CRM.
Send email on your behalfYesOnly after a human clicks Send. See section 06.
Archive, label, categorizeYesRequired to organize the inbox by priority band.
Move to Trash (30-day recoverable)YesOnly when the user explicitly acts.
Permanently delete mailNoNot requested. Not available to any part of the product.
Change account settings, filters, forwardingNoOut of scope.
Access mail of users who did not authorizeNoImpossible. Scope is per-user.
ConsequenceThe trade-off, stated openly

Because we do not hold the destructive scope, we cannot help you if a user deletes a message from Trash. This is a feature of the design, not a shortcoming. If your legal team requires message immutability, that lives in your mail provider's own retention controls, and RocketMail does not interfere with them.

02

Encryption and token storage.

OAuth refresh tokens are the crown jewels of a system like RocketMail. Losing one means losing access to a customer's mailbox until it is rotated. We treat them accordingly.

  • Envelope encryption. Every OAuth token is encrypted with a per-tenant data key. The data key is itself encrypted by a customer-master key held in AWS KMS. Tokens are never written to disk or a log in plaintext.
  • In transit. TLS 1.2 or higher on every external hop. Internal service-to-service is mTLS.
  • At rest. AES-256 on the underlying block storage, in addition to the envelope encryption above.
  • Key rotation. Data keys rotate every 90 days. KMS master keys rotate on the AWS default schedule. Rotations are transparent to the running product.
  • Secret hygiene. Application secrets, third-party credentials, and provider webhooks live in a hardware-backed secret store. There is no .env in production.
Token storage recordexcerpt, redacted
tenant_id : "t_meridian_health"
provider : "google"
user_email : "priya@meridian-health.example"
scope : "gmail.modify"
refresh_token : <envelope-encrypted>  # DEK id: dek_2f9a…, wrapped by KMS key kms/rocketmail-prod
access_token : <in-memory only, never persisted>
last_rotated : "2026-08-17T09:14:22Z"
expires_after : "90d"
03

Isolation, per tenant.

RocketMail's inference pipeline is designed so that one rep's writing style, one deal's context, and one tenant's history do not touch another. This is not a policy. It is a data model.

  • Per-user voice profiles. The retrieval index that grounds a draft is built from a single user's sent mail. It has no read path into anyone else's sent mail, in the same organization or otherwise.
  • Per-tenant embeddings. Vector indices are stored in per-tenant collections. Cross-tenant reads are denied at the query layer, not just the API layer.
  • Row-level tenancy. Every operational table carries a mandatory tenant id, enforced by row-level security in the database, so a bug in application code cannot leak across boundaries.
  • Deal-level scoping. When a draft is composed, the retrieval query filters to the user's own sent mail and the specific opportunity's thread history. Nothing else.
TestWhat we do to prove this

A synthetic tenant with distinctive vocabulary is provisioned in staging. Before each release, an automated test attempts to retrieve that tenant's phrasing from a different tenant's account. The test must return zero rows. Failure blocks the release.

04

Nothing trains on your email.

Customer email does not train any shared model. Not the base model, not the reply model, not the classifier that decides priority. Per-user voice profiles are retrieval indices, not model weights, and they belong to the user they were built for. The retrieval index for one user is not accessible to another, including inside the same organization, and it is deleted on seat deprovision.

  • No customer data is used for training foundation models by RocketMail or its inference providers, per our contracts with those providers.
  • Inference providers are on zero-retention configurations where the provider offers one, so prompts and completions are not stored on their side either.
  • If a customer's DPA requires additional restrictions, those are added on top, not renegotiated against.
05

CRM write controls.

RocketMail writes to your CRM. That is what makes it useful, and that is also what RevOps is most nervous about. The controls below exist so RevOps stays in charge of that channel, not us.

  • Field-level mapping. Every field RocketMail can write is listed in the console. RevOps enables, restricts, or disables each one before rollout. Nothing writes by default outside a curated set of low-risk fields.
  • Dry-run mode. For the first two weeks by default, every write is proposed but not committed. RevOps reviews the log, approves the pattern, then flips writes on.
  • Per-object and per-field permissions. A field can be set to auto-write, propose-then-approve, or read-only. Different tiers can be set per object.
  • Full audit log. Every write records the source message, the reasoning, the confidence, the user session, and the fields changed. Exportable to your SIEM.
  • One-click revert, 30 days. Any write can be rolled back for thirty days after the fact. Reverts are themselves audited.
  • Rate limits. An anomaly detector caps writes per object type per hour. A misbehaving pipeline pauses itself and pages the on-call.
Sample field policycrm.policy.yml
object: Opportunity
fields:
  - name: Stage
    mode:       propose_then_approve   # show me first
    min_confidence: 0.85
  - name: NextStep__c
    mode:       auto_write
    min_confidence: 0.70
  - name: CloseDate
    mode:       read_only                # RevOps owns the forecast date
  - name: Amount
    mode:       read_only
rate_limit: 400 writes/hour/user
06

The approval model.

Every RocketMail action sits on one of four tiers. The tiers are not settings that hide inside an admin panel. They are the contract the product ships with. The last tier, outbound email, is locked. An admin cannot loosen it. The company cannot loosen it either.

TierWhat it meansApplies to
Tier 1
Invisible
Automatic, no UI
The system does the work in the background. There is nothing to accept, nothing to reject, because there is no user-visible action.
Inbox ranking
Priority reasons
Buying signal detection
Quiet deal detection
Voice profile updates
Tier 2
Automatic and reversible
Runs, logged, revertible
The system takes an action, records it in the audit log with source and reasoning, and offers a one-click revert for thirty days.
CRM field writes on curated set
Contact and champion detection
Meeting recap notes
Deal stage inference (if enabled)
Tier 3
Proposed for approval
Suggested, then reviewed
The system produces a proposal and shows it in the queue. Nothing happens until a user approves. Rejections train the ranking for the user, not the shared model.
Suggested follow-ups on quiet deals
CRM writes on restricted fields
Stage moves with confidence below threshold
Meeting scheduling holds
Tier 4
Human, always
Locked. Not configurable.
Outbound email requires an explicit human click, every time. There is no batch send, no delayed send, no rule that dispatches on your behalf. This tier is not a setting. It is enforced in the send path itself, not in the UI.
Every outbound message, without exception
Reply, new thread, forward
Meeting invites you send
Any external communication from the app
07

Compliance, without the badges.

We are an early-stage company. Certifying is a process, not a purchase. Here is where we actually are. If a state below is not Ready, we say so. We do not put a placeholder logo on the site and hope no one asks.

SOC 2 Type II

Controls in place, audit ahead

No report, and no audit under way. What exists are the controls: tenant isolation enforced in the database, envelope-encrypted credentials, narrow scopes, an audit trail on every write. SOC 2 is work we intend to do and have not started. If that rules us out, better you know now.

As of 2026 Q3

GDPR

Ready

DPA on file, SCCs available, records of processing kept, data subject requests answered within one month. All processing happens in us-east-1, so UK and EEA transfers rely on those clauses rather than local storage.

DPA and SCCs available on request

ISO 27001

Not yet

Not started. On the two-year roadmap. If ISO 27001 is a firm requirement for your buying committee, we will say so on the first call rather than waste your legal team's time later.

Roadmap item · candid answer

HIPAA

Not applicable

RocketMail is a sales workspace, not a health record system, and we do not sign BAAs. If your reps handle PHI in their inbox, RocketMail is not the right tool for those threads. Filter them out at the account level.

Intentional scope

Google API Verification

Ready

Google's CASA tier-2 assessment complete for restricted scopes. Reverified annually. Consent screen carries the verified badge for end users.

Reverified annually

Penetration testing

Ready

Independent pentest every twelve months by a firm on the CREST registry. Latest report summary shared under NDA. Remediation tracked to closure.

Last test: 2026 Q2
08

Deliverability.

Mail from RocketMail is sent through your own provider. Your SPF, your DKIM, your DMARC, your domain reputation. There is no third-party sending relay in the path. When Priya hits Send in RocketMail, the SMTP hop is Priya's own account, and the recipient sees the same headers they would see on a message sent from Priya's mail client.

  • No relay. No shared IP pool.
  • No content injected into the message that was not visible in the draft.
  • No tracking pixel added without an admin explicitly enabling it, off by default.
  • Bounces and complaints are returned to your provider, and mirrored to RocketMail's deliverability view. You keep the ground truth.
09

Subprocessors and data residency.

Short on purpose. Each entry says what data it sees. Additions get 30 days' notice.

Your mail provider and CRM are not listed. They are your systems, connected on your instruction.

SubprocessorPurposeRegionData category
NeonManaged PostgreSQL, all application dataus-east-1All customer data at rest
Amazon Web ServicesInfrastructure and key management under the aboveus-east-1All customer data at rest
Google Cloud KMSHolds the master key that wraps each organisation's data keyus-east1No customer data. Key material only
OpenAILanguage model inference and embeddings, zero retention, no trainingUSMessage text and CRM field values at inference time

Every row says us-east-1 because that is the only region we run in. We are not offering to pin your data elsewhere, because we cannot yet. No analytics, logging or billing subprocessor, because the product uses none. When that changes, this table changes first.

10

Reporting a vulnerability.

If you found something, send it to us. We will acknowledge inside one business day, and we will not lawyer up.

  • Email: security@rocketmail.ai. A PGP key is available on request.
  • Safe harbor for good-faith research, no legal action against researchers who follow the disclosure policy.
  • Public thanks in the changelog if you want it, silent fix if you would rather.
Talk to security

Send your checklist.

Send the questionnaire your process requires and we fill it in. Answers come from the person who wrote the code, so the awkward questions get a straight answer instead of a policy reference.