End-to-end encrypted, even when the recipient requests the secret.
In the request flow the recipient generates the X25519 keypair locally. The server receives only ciphertext plus public keys, never plaintext or private keys. The known limits of browser-based cryptography are documented openly below.
The plaintext stays in your browser, but the server still observes a few things by virtue of running the service at all.
If you are a journalist, activist, or otherwise expect a well-resourced adversary, browser-delivered crypto is not the strongest tool you can pick. Treat Vault as a convenience layer with a documented threat model, not as a substitute for the practices below.
Source mirror: gitlab.erseni.net/open-source/secrets-component
Deployed build: status page
security.txt: /.well-known/security.txt
You do not need to take our word for which JavaScript you are running. Here is the concrete chain you can walk.
curl -s '<script src from DevTools>' | sha256sum Why no Subresource Integrity (SRI) attribute on the script tag? SRI would have the browser refuse a tampered bundle automatically, but it requires recomputing and re-deploying integrity hashes on every change and is hostile to A/B variants. The manifest hash does not provide the same automatic browser enforcement as SRI. It gives reviewers and self-hosters a concrete SHA-256 value to compare against the served browser bundle.