Security model

What is protected, what is not, which crypto.

This page is blunt on purpose. A tool that overstates its guarantees is worse than none.

What is protected

Adversary Outcome
The host is breached: stolen tokens, provider CVEs, a rogue employee They get ciphertext, the members' public keys, sizes and timestamps. They cannot forge a generation (no signing key). They can delete or roll back the vault; that is detected by the hash chain, not prevented.
The host is curious It learns that a vault exists and how often it changes. Not branch names, commit ids, messages, file names, authors, code, comments or logs.
A stolen vault push credential Same as a breached host: garbage is rejected (bad signature), deletion is detected. A protected branch on the host stops rewrites too.
A removed member Loses access to every later generation. What they signed while in stays valid; anything they sign afterwards is refused. What they already fetched stays theirs.
A tampered blob, a dropped generation, a replaced manifest verify, restore and every fetch fail loudly. secretree never appends to a chain it could not verify.

What is not protected

Cryptography

secretree contains no cryptographic primitives of its own.

Format

The on-remote format is versioned and frozen: docs/vault-format.md. A vault remains restorable with git, age, ssh-keygen and shasum alone, following docs/restore-by-hand.md; the same instructions sit in every vault's plaintext README.md.

Reporting a vulnerability

Please report privately through a GitHub security advisory on the repository rather than a public issue. The security policy has the details of what is in scope.