Environment Vault

Secrets your agents can never read

Values live encrypted with the repository, and agents see names only: secret values are unreachable from agent code. Revealing a value is a human permission, and every reveal is audited. Developers pull secrets with one command; nobody pastes .env files into chat.

What the Vault does

Secrets management that behaves like part of the repository, not a separate product bolted alongside it.

Invisible to agents

Agent runs receive secret names only. Values are encrypted and unreachable from agent code, and redaction middleware backstops every provider call.

Envelope encryption

Each secret is encrypted with AES-256-GCM under a data key, which is itself encrypted by a cloud KMS-backed master key. Plaintext exists only inside the vault package's decrypt paths.

Per-environment secrets

Separate values for Development, Preview, Production, or any environments you define. Free includes 4 environments per repository; paid plans are unlimited.

Roles, grants, and expiry

Access follows workspace roles. Reveals are permissioned, and access grants can expire: a contractor's access ends when the engagement does.

Audit trail

Every read, reveal, and change is recorded: who, what, when. Retention scales with your plan.

Masked by default

The UI shows masked values (sk_l····7dc). Revealing requires permission and is itself an audited event.

.env.example generation

Generate a committed .env.example from the Vault's keys so new teammates always know which variables the project needs, without ever committing values.

A CLI flow developers actually keep using

Log in once, pull the environment you're allowed to read, and run your dev server with secrets injected (nothing written to disk unless you ask). Setting a value from the terminal updates the same encrypted store the web UI shows.

Shell

keelson login
keelson vault pull
keelson vault run npm run dev
keelson vault set STRIPE_SECRET_KEY

How a value is protected

Each secret is wrapped twice: the value under an AES-256-GCM data key, and that data key under a cloud KMS-backed master key. Plaintext exists only inside the vault package's decrypt paths.

The Vault is included on every plan, including self-hosted.

Customer-managed keys are on the Enterprise track.