git-vault

Recipients

Who may decrypt a profile — age public keys and labels.

A recipient is who may use a profile’s secrets (a person, bot, or role). Each recipient is an age public key (for example age1...). Labels are git-vault metadata; encryption uses the public key.

Each profile stores recipients as JSON at <profile>/recipients.json. CLI input uses -r / -R:

# List recipients in the production profile
git vault recipient list -p production

# Same list as canonical JSON
git vault recipient list -p production --json

# Add a public key with a label (re-encrypts saved files when needed)
git vault recipient add -p production -l "deploy bot" -r age...

# Add public keys from a recipients file
git vault recipient add -p production -R teammates.txt

# Remove a public key (re-encrypts saved files when needed)
git vault recipient remove -p production -r age...

# Initialize a vault from a recipients file
git vault init -R teammates.txt

Provide recipients with -r KEY or -R PATH (not both). -R may list several keys, one per line. Optional -l / --label attaches a non-unique description when adding via init, profile add, or recipient add.

When the profile has saved files, recipient add and recipient remove decrypt every ciphertext with a private identity, re-encrypt for the updated public keys, and commit the list and ciphertexts together. The last public key cannot be removed. If any step fails, the branch is left unchanged.