Security

Version 2026-07-02

Security at EigenPrompt

We take the security of your data seriously. This page provides a transparent overview of how we protect your information.

Data Storage

All persistent data is stored in a PostgreSQL database hosted on Supabase, which provides encryption at rest (AES-256 disk encryption) for all data. Saved prompt text, run base prompts, run optimization goals, evaluation dataset base prompts, and evaluation rows receive an additional layer of application-level AES-256-GCM encryption with per-account keys derived via HKDF.

API Key Security (BYOK)

EigenPrompt is Bring Your Own Key: your API keys are used solely to call the providers you authorize. We never resell API access or proxy through shared accounts. Saved keys are protected by multiple layers:

  • Passphrase-protected vault: Saved keys are sealed behind a vault passphrase (minimum 12 characters, weak passphrases rejected) that must be different from your account password. It cannot be recovered: resetting it permanently deletes your stored keys.
  • Layered key derivation: Your passphrase is stretched with Argon2id, a memory-hard key derivation function, then combined with a separately held server secret via HKDF-SHA256 to derive a per-account key-encryption key. API keys are encrypted under that key with AES-256-GCM authenticated encryption, so a database compromise alone cannot expose them.
  • Never persisted outside the vault: Keys are excluded from run records, optimization checkpoints, and stored run configuration, and are redacted from application logs and error reports.
  • Never returned to the browser: API responses report connection status only. Saved keys are never sent back to your browser or displayed again.
  • In-memory processing: During a run, keys are decrypted just-in-time, held in memory only for the duration of the run, and never persisted by the optimization service.
  • Unlock controls: Using saved keys requires your passphrase. An unlock lasts 30 minutes, and repeated failed attempts trigger a temporary lockout.
  • One-time keys: Keys entered for a single run are held in memory for that run only and are never stored unless you explicitly save them.
  • Revocation: Delete a saved key at any time for immediate hard deletion, or rotate the key with your provider to revoke access instantly. Account deletion purges all stored key material.

Like any hosted BYOK platform, our servers necessarily handle your keys in memory to call providers on your behalf. The controls above minimize that exposure: keys exist in plaintext only transiently during your own operations, and everywhere else are encrypted or absent.

Access Controls

Access to data follows the principle of least privilege. All data is tenant-isolated using per-account owner IDs. Administrative access to production infrastructure is restricted and audited.

Data Lifecycle

  • Deletion: Datasets and runs are soft-deleted immediately upon request and hard-purged on a retention schedule.
  • Account deletion: Triggers a full purge of all associated evaluation data, runs, API key material, and anonymization of your user record.
  • Retention: Configurable data retention is available. Anonymized aggregate data is reviewed and pruned annually.

Encryption

LayerMethodScope
At rest (infrastructure)AES-256 disk encryption (Supabase)All persisted data
At rest (application)AES-256-GCM with per-account HKDF-derived keysSaved prompt text, runs, dataset prompts, and evaluation rows
In transitTLS 1.2+All connections
API key storagePassphrase-gated: Argon2id + HKDF per-account key + AES-256-GCMSaved provider API keys

Aggregate Learning

To improve our optimization algorithms, we process anonymized and aggregated metadata from optimization runs — such as prompt structure patterns, scoring distributions, and optimization performance signals. This never includes your raw prompts, raw evaluation data, or API keys.

You can opt out of Aggregate Learning at any time in your Privacy Settings. We will always honour your choice.

Subprocessors

We never sell your data; we use subprocessors and the LLM providers you authorize to deliver the service.

The following third-party services process data on our behalf:

ProviderPurposeData Processed
VercelWeb application hostingRequest metadata, static assets
SupabasePostgreSQL databaseAll persistent user data (encrypted at rest)
StripePayment processingBilling info, subscription status
PostHogProduct analyticsUsage events (consent-gated, opt-out available)
BrevoEmail delivery and marketing communicationsEmail addresses, names, marketing consent status, and marketing attributes
RailwayBackend optimization serviceOptimization requests via API
LLM Providers (OpenAI, Anthropic, etc.)AI model inferencePrompts routed through user's own API keys

Enterprise

For custom data handling agreements, DPAs, or compliance questions, contact us at α [at] eigenprompt [dot] ai.