Security

Security first, because treasury data matters

Vault Brief uses public wallet data and read-only integrations to generate investor reports. The product never asks for private keys and cannot move funds.

🔒

Read-only wallet access

Vault Brief reads from public RPC endpoints (Alchemy, Dune Sim, Helius) using project-owned wallet addresses. The product holds no signing keys and cannot move funds, approve allowances, or modify on-chain state.

🔐

No private key storage

There is no signer in our code path. We never ask for seed phrases or wallet signing permissions, and no API or UI surface accepts them.

📨

Signed webhooks only

Every inbound webhook is signature-verified before any side-effect runs. Stripe events check the official HMAC header; Resend uses Svix-signed events for email tracking; Atlos USDC postbacks are HMAC-SHA256 over the raw body with timing-safe comparison.

🔑

Encrypted credentials at rest

GitHub personal access tokens are encrypted before they hit the database. Stripe customer references are opaque IDs only; no card details ever touch our servers.

🛡️

Auth and transport

TLS 1.2+ enforced end-to-end via Vercel with HSTS preload. Authentication runs on NextAuth v5 with single-host magic links (no cross-origin redirects, no callback hijacking surface). DKIM, SPF, and DMARC verified for the sending domain.

⏱️

Rate-limited surfaces

Sign-in attempts, project creation, on-demand sync, autofill lookups, and chat are all rate-limited via Upstash Redis sliding windows. Burst protection lives at the edge before any DB or LLM call.

Manual review before send

Generated reports land in draft status. Nothing is sent to investors until you click "Send". The sender drawer shows recipient list, edited markdown, and PDF preview side-by-side.

🧾

Audit-friendly data layer

Treasury snapshots are append-only. Every report references the exact snapshot it was generated from, and every webhook event is idempotently logged (Stripe events, Atlos events). Numbers in the AI narrative are validated against the source snapshot at generation time — no fabricated figures.

Report a vulnerability

If you discover a security issue, contact security@vaultbrief.io with a clear description and reproduction steps.