Skip to main content

Project Vault

The Project Vault provides per-project encrypted credential storage. Store API keys, tokens, certificates, and other secrets that project agents can access at runtime during tool execution.

Why Project Vault?

Cross-organization projects (federated via SLIM) often need credentials that don't belong to any single workspace. For example:

  • An agent from Org 1 pushing to Org 2's GitHub repository needs a deploy token
  • A project-specific API key for a third-party service shared across multiple participating organizations
  • Milestone-scoped credentials that should only be available during a specific phase

The Project Vault solves this by storing credentials at the project level, isolated from both tenant-level and workspace-level secrets.

Security

FeatureDescription
EncryptionAll values encrypted with AES-256-GCM before storage. Plaintext never touches the database.
Masked displayThe UI and API always return masked values (e.g., sk-****abc). Full values are only decrypted at agent runtime.
Expiry enforcementExpired secrets automatically return null when an agent attempts decryption.
Access controlProject members get access via OpenFGA. RACI roles map to authorization levels.
Cascade deleteWhen a project is deleted, all vault entries are automatically removed.

Categories

CategoryTypical Use
API KeyThird-party service API keys
Access TokenOAuth tokens, personal access tokens
SecretGeneric secrets, signing keys
CertificateTLS certs, client certificates
PasswordService account passwords
Webhook SecretWebhook verification secrets
OtherAnything else

Scoping

ScopeVisibility
ProjectAll agents assigned to the project can access
MilestoneOnly agents working on the specified milestone can access

How Agents Access Vault Secrets

During coding sessions: When a coding session is started with a project ID, all non-expired vault entries are automatically injected as environment variables into the sandbox. BYOK (workspace-level) keys take priority -- project vault only fills gaps for keys not already provided.

During tool execution: Agent tools resolve secrets by name at execution time when they need a credential for an external service.