Autopilot's Secrets feature is end-to-end-encrypted secret-file storage scoped per repository and per environment. The threat model is simple:
This page covers the web UI. For the command-line workflow used in development environments and CI, see the Secrets CLI page.
The first time you visit Secrets in the dashboard, you'll be redirected to the enrollment page. You'll need:
Click Enroll. Your authenticator prompts you, the browser derives a key-encryption key (KEK) from the PRF output, generates a wrapped private key, and posts the wrapped material to Autopilot. From this point on, Autopilot can store secrets for you that only your passkey can unwrap.
Important: if you lose access to all your PRF-capable authenticators, your encrypted secrets are unrecoverable. Register at least two passkeys on auth.rxlab.app before storing anything important.
After enrollment, Secrets opens to a list of repositories you've added for secret storage. Click Add repository, search by name, and pick one of your installations. The repository becomes a container for one or more environments.
Each repository can have multiple environments (typically dev, staging, prod, but you choose the names). An environment is the actual unit of encryption: it has its own data-encryption key (DEK), and members get access by having that DEK wrapped to their passkey-derived KEK.
For each environment you can:
The Members tab on an environment shows everyone who has access. To grant someone access:
That's the only operation that touches plaintext keys; from then on, the new member can decrypt files in that environment with just their own passkey.
To remove access, delete the member. They'll lose the ability to decrypt new fetches; rotate the DEK for existing files if you suspect the member already exfiltrated them.
.env files for local development that the team needs to share securely.For static, single-secret values that GitHub Actions consumes, GitHub's own encrypted secrets are still the right tool. Autopilot's Secrets is for files that humans and dev environments need to read.
Plaintext only exists in the browser tab during the moment a file is read or written.