[foostash]docsdev
github ↗

Security model

Short enough to actually read, which is the point.

  • Crypto. AES-256-GCM for local secret files and password-protected export bundles. 12-byte random nonce per write; authenticated ciphertext rejects tampering.
  • Master key. 32 bytes, base64-encoded, at ~/.foostash/master.key (mode 0600) or via FOOSTASH_MASTER_KEY. Losing it means losing local data — no recovery path.
  • Wire auth. Every request is signed with your SSH private key and verified against the registered public key for your fingerprint. Replay protection via a timestamp header (±5 min window).
  • Server. Holds org/user/project/env/invite/audit metadata and SSH public keys. Does not hold secret values or private keys.
  • Revocation. admin users revoke flips revoked_at on the user row; subsequent SSH-signed requests fail auth.

What the server can and cannot see

DataOn your machineOn the server
Secret valuesplaintext + ciphertextciphertext only
Master keyyes (0600)never
SSH private keyyesnever
SSH public keyyesyes
Key names, versions, timestampsyesyes
Org / user / audit metadatanoyes