Encryption model
All credentials stored in the Gazebo vault are encrypted at rest using AES-256-GCM before being written to the database.
Algorithm
AES-256-GCM (Advanced Encryption Standard, 256-bit key, Galois/Counter Mode)
- 256-bit key — the maximum AES key size
- GCM mode — provides both encryption and authentication (AEAD)
- Each encryption uses a fresh, cryptographically random 128-bit IV and a 128-bit authentication tag. Repeated plaintext produces different ciphertext with overwhelming probability.
Encryption key
Vault encryption keys are:
- A 256-bit secret stored as an environment variable, separate from the database
- Never written to the database
- Not included in application diagnostics
- Required to decrypt records written with the corresponding key
Key rotation and recovery
Gazebo supports versioned encryption keys and operator-controlled rotation. Existing records remain readable during migration, and interrupted migrations can resume. Rotation is not automatically scheduled.
Recovery requires both a database backup and its corresponding encryption keys. Required keys must be retained for as long as existing records or backups depend on them.
What is encrypted
| Data | Encrypted |
|---|---|
| API keys | Yes |
| OAuth access tokens | Yes |
| OAuth refresh tokens | Yes |
| Authenticator and temporary setup secrets | Yes |
| Temporary consent retry replies | Yes |
| Service names (e.g. "stripe") | No |
| Agent names | No |
| Audit log entries | No — contain service names and outcomes, not credential values |
Dashboard connection views do not display stored credential values. Authorised runtime retrieval deliberately returns plaintext credentials. Application diagnostics are configured to exclude request bodies and secret-bearing error details.
Security boundaries
Gazebo decrypts credentials on its servers for authorised retrieval and supported service operations. Runtime API and MCP retrieval return plaintext credentials to the calling agent over HTTPS. The runtime or its host can retain them; encryption at rest does not prevent this exposure.
This is server-side encryption, not a user-held Secret Key or a zero-knowledge vault. Account passkeys and two-factor authentication protect sign-in; they do not prevent a compromised application runtime from using its decryption access.