cli.sgit.ai / Research / Keys, members and who may write

Keys, members and who may write

The question. Today a vault has one secret: the vault key, from which a read key and a write key are derived. Every writer presents the same write key, so the server cannot tell writers apart, and a read key, once given, reads all history. Can a vault know who its members are, let them join and leave one at a time, and refuse a write from the wrong one, without the server ever reading anything?

Where it stands

StatusWhere it is said
Commits signed by each clone's own ECDSA P-256 key; signatures-required makes every client refuse an unsigned commitshipped (0.19.0 and later)History integrity
sgit pki: RSA-4096 encryption pairs, ECDSA signing pairs, encrypt to a recipient, sign and verifyshippedKeys and signatures, sgit pki
The write key as a private signing key, with a writer set the server trustsdesigned, not builtRead and write keys as PKI
A second vault mode built on two key pairs from the start, with sequence-number pinningdesigned, revised twice after reviewNative PKI vault mode
Files sealed to named recipients on top of either modedesignedSealed files
A door per member: one object holding the data key sealed to that member's key, outside historyproposed; the pieces exist separatelythe coverage map, the article
A policy row (key K may write path/) refused by every honest clientproposedthe article
Revoking a reader without rotating the key, or opening a vault with no key on diskabsent; rotation is the rule todayKey management

Articles from this topic

article · Dinis Cruz

Keys the way git does them, and the way a vault could: what SSH actually checks, what a read key actually prevents, and a door per member

I asked how git actually handles keys, because I suspected sgit was closer to it than people assume. Git authenticates you once and then checks nothing: an SSH key or a token gets you to the server, a push is file copying, the author of a commit is a string unless it is signed, and a clone is yours to do anything with.

2026-10-16
article · Dinis Cruz

Policies the vault enforces: from a rule agents keep to a folder only one key can write

On ruv.sgit the vault is the record of a policy, not its enforcer. RiskMandate writes the mandate, the grant, the gap and the barrier; ruv.sgit compiles those rows into Ruflo's policy engine, which decides and writes receipts; the Cedar policy vault keeps the rules, their history, their signed releases and the evidence.

2026-10-16

The research documents, newest first

coverage map

Keys the way git does them, PKI access to a vault, and copy-on-write: what is already published, and what is not

Before writing two articles, a map of what is already published on keys the way git does them, PKI access to a vault and copy-on-write: seven questions from the memo, where each stands, the facts the articles must not get wrong, and seven code questions for the thread.

2026-10-16 · keys, write-path
design

Sealed files — a second encryption layer on top of a vault

A second encryption layer on top of either vault mode: files sealed to named recipients with ECDH P-256, HKDF and AES-256-GCM, with the corrections from the sgit.ai agent's review.

2026-10-09 · keys
design

Native PKI vault mode — architecture map

An architecture map for a second vault mode built on key pairs from the start, revised twice after review: sequence-number pinning, frozen hosts, concurrent writers.

2026-10-09 · keys
analysis

Read and write keys as PKI — design analysis

Are the read key and the write key really a public and a private key? Half right: the write key should become a signing key, and the read key cannot become a public key. What that would take.

2026-10-09 · keys

This page as markdown · its source, admin/content/research/topics/keys.md