| File | Purpose |
|---|---|
| CODE_OF_CONDUCT.md | Community behavior and enforcement policy |
| CONTRIBUTING.md | Contribution workflow and validation gates |
| SUPPORT.md | Non-security support routing |
| GOVERNANCE.md | Maintainer and release governance |
If you discover a security vulnerability in ypcli, please report it responsibly. Do not open a public GitHub issue for security vulnerabilities.
Use GitHub Security Advisories to report the vulnerability privately. Include:
- Description of the vulnerability
- Steps to reproduce (if applicable)
- Affected versions
- Potential impact
ypcli performs client-side end-to-end encryption; the server never sees plaintext or the decryption key.
- Encryption (
internal/crypto): OpenPGP symmetric encryption viagithub.com/ProtonMail/go-crypto— AES-256, SHA-256, AEAD GCM, with optional memory-hard Argon2id S2K when the server advertises it. The configuration is byte-for-byte identical to the yopass server and the openpgp.js frontend. - Keys (
internal/crypto): generated withcrypto/rand. The random key lives only in the URL fragment (#/…), which browsers never transmit to the server. Manual keys are omitted from the URL entirely. - Authentication (
internal/api,internal/config): bearer tokens are read from--token,YPCLI_TOKEN, or a per-profiletoken_command, and are never persisted to the config file. The config file is written mode 0600. - Transport (
internal/api): all requests are context-bounded with a timeout; TLS verification uses the Go standard library defaults.
- The
unsafepackage is never used. - Only
crypto/randis used for key and identifier generation. gosecruns in CI;govulncheckruns on every push and pull request.- The shipped binary excludes the upstream
jhaals/yopassmodule (test-only dependency), keeping the release supply chain toProtonMail/go-cryptoand the CLI framework.
The latest published release is supported. Pre-1.0 releases may include breaking changes per Semantic Versioning rule 4.