MSL Wiki
MSL on GitHub

Certifying and withdrawing an image

Sign a statement that an image is yours, or that it is retired.

Chapter 15 of 201 min read
On this page 4 sections

An instance carries a signed lineage saying where it came from — see Where an instance came from. A lineage certificate is you saying something about one of those lineages.

msl admin certify <instance|lineage> --label "Acme Standard Image 2026"
msl admin revoke  <instance|lineage> --reason "leaked"

You can name an instance rather than hunting for its lineage.

Why this one is different#

An instance's own identity is signed by a key on the Mac that made it. A certificate is signed by your MSLAP key, which a fleet keeps somewhere else — so nobody holding only one of your Macs can make one. It is the only part of this that holds even on a Mac you no longer trust.

Certifying#

A certificate says this image is ours. Combined with denying instance.acceptUncertified, a Mac will run only images you have signed for.

Withdrawing#

A revocation says this image is retired. Every instance of that lineage then refuses to start, and no capability can set that aside — a revocation a policy could override would be no revocation at all.

Deploying one#

certify writes the file under your own Library. For a fleet, copy it to each Mac at /Library/Application Support/MSL/lineages/ with sudo, where somebody who is not an administrator cannot add or remove one. msl identity <instance> says whether the certificate it found is root-owned or merely advisory.