How KeyVault keeps your API key vault secure

Last updated: August 3, 2026

KeyVault exists to replace plaintext API key sharing — Slack messages, email threads, and .env files passed between laptops — with an encrypted, access-controlled vault. This page describes exactly how stored keys are protected. It states what the product actually does, not marketing claims.

Encryption at rest

Every API key is encrypted before it touches the database using Fernet from the Python cryptography library: AES-128-CBC with an HMAC-SHA256 authentication tag. The encryption key is supplied through the ENCRYPTION_KEY environment variable, and production deployments refuse to start without it — there is no insecure fallback.

Server-side masking for read-only access

Access to keys is granted per project at one of three levels: read, write, or admin. Members with read access never receive plaintext: the server returns a literal mask (••••••••••••) with a masked: true flag. The decision is enforced server-side, so the real secret never leaves the server for a read-only role.

Tenant isolation

Every signup creates an isolated organization, and every SQL query filters by organization_id. Cross-tenant data access is impossible by query construction — there is no code path that reads another organization's rows.

Account and session protection

Audit logging

Every organization has a complete activity log: who accessed which key, who invited whom, and what changed — scoped per organization and visible to authorized roles. This supports the access-logging recommendations of NIST SP 800-63B for credential material.

Infrastructure

Why this matters

Found a vulnerability? Please report it responsibly through our feedback form. We take every report seriously and respond quickly.

Ready to move your keys out of Slack? Create a free vault — the Free plan includes every security feature on this page.