Security

Security Overview

A transparent snapshot of current product safeguards and controls — self-attested, pending formal audit.

Last updated: July 28, 2026

Security posture

SpicaNova AI is built around a human-in-the-loop email workflow. The default product behavior is to read, score, draft, and ask before sending — nothing is sent automatically.

Everything is approval-gated by default: any action that reaches a person waits for your one-tap approval. Every automated action is logged with the reason it was taken, so you can always review and reverse what happened.

Data protection

Integration tokens (Gmail OAuth, Slack, WhatsApp, etc.) are encrypted at rest using AES-256-GCM with authenticated encryption — tamper detection is built in. Legacy tokens are upgraded to the new format automatically on next use.

Database access is governed by Supabase row-level security (RLS) so each user can only read and write their own data. Service-level access from background routes is scoped to the backend and never exposed to client-side requests.

Email body content is not retained permanently. We apply automated retention limits (email bodies 30 days; email metadata 90 days) enforced by a daily cleanup process.

Email subjects, sender/recipient addresses, and phone numbers are masked in our own logs and error-monitoring tool before storage. Sentry is configured with sendDefaultPii: false and a scrubber to prevent message content from reaching the error-monitoring pipeline.

Access controls

OAuth connection flows include CSRF state checks. Slack webhook requests are HMAC signature-verified. Cron endpoints require a bearer-token authorization header. Development-only test routes are not exposed in production.

User-facing write actions — including sending a draft — are tied to authenticated sessions and verified integration flows.

All API routes that accept unauthenticated or semi-trusted requests (auth endpoints, webhooks, OAuth callbacks) are rate-limited by IP address using the last hop of X-Forwarded-For to prevent spoofing.

Transport and headers

HTTPS is enforced everywhere. HTTP Strict Transport Security (HSTS) is set on all routes.

Security response headers are applied globally: X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, and Permissions-Policy restricting camera, microphone, and geolocation.

A Content Security Policy is active in report-only mode (not yet enforced) while we complete the nonce migration for Next.js inline scripts. Enforcement will be enabled once verified.

OAuth disconnects revoke the token at the provider (Google revoke endpoint, Slack auth.revoke) before deleting the local connection record.

Error monitoring

Error monitoring is live via Sentry. Every unhandled exception in the app, background functions, and webhooks is captured, fingerprinted, and logged. Repeated errors trigger an internal ops alert — new error fingerprints are surfaced immediately.

Error reports are stored in a service-role-only database table. Personal-data fields are redacted before storage and before transmission to Sentry.

Dependency security audits run automatically via GitHub Actions on every push. Dependabot monitors npm dependencies weekly.

Prompt-injection defense

Inbound email content, fetched thread context, and third-party tool results flowing into AI prompts are wrapped in explicit trust-boundary tags and a data-not-instructions directive, so injected content in an email cannot drive outbound tool calls or send actions.

The chat agent is explicitly prohibited from taking outward or state-changing actions (sending email, scheduling meetings, or running integration tools) because a piece of content instructed it to — only the founder's own typed messages in the chat interface are treated as authoritative commands.

Planned improvements

CASA Tier 2 security assessment (required for Google restricted OAuth verification) — planned via an approved assessor. A pre-scan with OWASP ZAP and securityheaders.com will run first.

CSP enforcement (moving from report-only to enforced) pending nonce integration.

SOC 2 Type II and formal audit evidence are planned for a later stage.

Report an issue

Please send suspected security issues to hello@spicanova.ai with enough detail for us to reproduce and investigate. We aim to acknowledge reports within 48 hours.