POLICY · SECURITY

Security Policy

Last updated October 17, 2026. This policy describes how Ajolla protects the data inside your workspace, the responsibilities you take on as a customer, and the channel for reporting suspected vulnerabilities. It is a working document — controls are added as we mature the product, not back-filled marketing claims.

1. Architecture and isolation

  • Workspace content is stored in Supabase (Postgres + object storage). Tenant isolation is enforced by row-level security on every workspace table and by owner-prefixed paths in object storage.
  • Server-side data mutations re-check project ownership before touching artifacts, so a tampered or stale identifier returns a friendly 404 rather than a server error.
  • Workspace requests use row-level security and application ownership checks. Hosted module APIs use a server-only service-role client with explicit app-scoped queries; those privileged requests rely on application tenant checks rather than end-user RLS alone.
  • Private artifact downloads use short-lived signed URLs (currently 60 or 120 seconds, depending on the download route). Documentation or endpoints that you publish are public by design.

2. Authentication and session management

  • Sign-in uses Supabase Auth magic links. OAuth buttons are shown only for providers enabled on the deployment and in Supabase; Google and GitHub sign-in are not currently enabled in production.
  • Magic-link requests are rate-limited at our edge per IP and per email to defend against email-cost and reputation abuse.
  • Supabase session cookies are used by both the browser client and server rendering; they are not HTTP-only. Sign-out clears the session through a POST-only route.
  • Service-role credentials are scoped to server-only contexts and never exposed to the browser.

3. Network and transport

  • The production application is served over HTTPS and sends an HSTS header. Sending a preload directive is not proof that the domain is included in browser preload lists.
  • Strict security response headers are applied to every response: Content-Security-Policy with a per-request nonce, frame-ancestors 'none', Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy minimizations, X-Content-Type-Options nosniff, and Cross-Origin-Opener-Policy same-origin.
  • URL ingestion enforces an SSRF-resistant fetcher: hostnames are DNS-resolved and every returned address is checked against private and reserved ranges; redirects are followed manually and re-validated at each hop.
  • Outbound fetches stream and size-cap responses to defend against zip-bomb-style payloads.

4. Data at rest

  • Database and object storage are encrypted at rest by Supabase using AES-256.
  • Beta backups do not currently carry an availability, retention, or recovery guarantee. A manual database snapshot is not a verified end-to-end recovery service. Database snapshots also do not contain Storage file bytes. Keep independent copies of your data.
  • Secrets are provided to the runtime via Vercel environment variables; we do not commit credentials to source control.
  • Customer-side encryption keys are not currently supported. Highly sensitive specs should be sanitized of secrets before upload.

5. Logging, monitoring, and incident response

  • Sentry captures configured error and performance diagnostics; Vercel provides hosting logs, and Wandamark records product and availability events. Provider retention and scrubbing settings are still being verified. We do not claim a universal 90-day deletion period or complete removal of personal data from every log.
  • Rate-limit counters and abuse signals are stored in Upstash Redis with short TTLs.
  • Suspected security incidents are triaged, contained, and remediated as quickly as the severity warrants. Customers materially affected by a confirmed incident will be notified without undue delay and given the information they need to assess the impact.
  • Post-incident, we document the root cause and the corrective action and apply the change to prevent recurrence.

6. Vulnerability management

  • Dependencies are tracked through the npm lockfile and reviewed regularly for known advisories.
  • Production deploys go through automated typecheck, lint, and build verification before they reach users.
  • Security-relevant changes to authentication, storage, or network boundaries are reviewed with elevated scrutiny.

7. Customer responsibilities

  • Use a unique, strong password on the email account or OAuth provider used to sign in to Ajolla.
  • Treat any spec that contained a live credential as compromised and rotate the credential immediately.
  • Apply human review on every generated SDK, docs site, and MCP server before deploying it in production or exposing it to autonomous agents.
  • Apply least-privilege when configuring generated MCP servers; do not enable destructive or admin tools by default.

8. Responsible disclosure

  • Email security@ajolla.dev with the affected route or workflow, reproduction steps, expected and observed behavior, and any logs or screenshots that help us assess impact.
  • Acknowledgement target: within 3 business days. Initial triage: within 7 business days. Fix timeline depends on severity; critical issues are prioritized over feature work.
  • Please do not publicly disclose a vulnerability until it has been investigated and remediated. We will credit researchers who follow this process in the resolution notice if they wish.

9. In-scope and out-of-scope for reports

  • In scope: ajolla.dev and www.ajolla.dev application surfaces, server actions, authentication flows, ingestion endpoints, and the safety classification logic of generated MCP servers.
  • Out of scope (without an exception agreed in writing): denial-of-service testing, automated scanner output without a working proof-of-concept, social-engineering attacks against Ajolla staff, and findings in third-party services — please report those to the relevant vendor.

10. Contact

For security disclosures, email security@ajolla.dev. For general security questions, you may also use hello@ajolla.dev.