Permanently remove sealrepo from a project
Sometimes you just want your unencrypted source back. `sealrepo remove` is the only way to do it; everything else (unlink, unlock, panic) leaves the vault in place.
sealrepo remove deletes the vault on disk, removes the local config, and tells the server to log + email the project owner. There is no undo. The CLI requires a typed yes-remove confirmation for exactly this reason.What “remove” actually means
Three different commands look similar on the surface. Each does something different:
sealrepo link --removeonly forgets the dashboard association on this checkout. The vault on disk is untouched, the paid project slot is still consumed.- Delete project on the dashboard releases the paid slot. The local vault is left intact. Owner-only.
sealrepo removeis the one that actually uninstalls sealrepo from this repository: decrypts the locked files back to plaintext, deletesvendor/and.sealreporc.json, clears the cached session, and (when the project is linked) emails the project owner before any local change happens.
Run the command
From inside the repo on your machine:
Interactive removal$sealrepo removeYou are about to permanently remove sealrepo from:/Users/you/your-repoThis project is linked to “acme-billing” (prj_4f9a8b2c1d0e).⚠ → The project owner will be notified by email.Your source files will be decrypted back to plaintext before removal.Type yes-remove to confirm yes-removePassphrase (to confirm ownership): ••••••••✓sealrepo removed from this project.Restored 137 files to plaintext.Notified the owner of “acme-billing” by email.The passphrase prompt comes afterthe confirmation. We re-verify it even if you have an unlocked session, because removing sealrepo is irreversible and “the laptop was already unlocked” is a real attack model. Use
--session-okif you really want to skip the re-verification.What gets removed locally
- The locked directory (
vendor/by default — whateverlockedDiris in your config). .sealreporc.json(and the legacy.vaultlinerc.jsonif present).- The session cache for this project root.
What stays: your decrypted source files. By default,
sealrepo removeruns a full unlock first so every locked file lands back as plaintext exactly where it lived beforesealrepo init.- The locked directory (
What the owner gets emailed
When the project is linked, the owner gets an email within seconds with: the project name, the actor's hostname / OS / CLI version, the timestamp, whether
--burnwas used, and whether the reported local-repo fingerprint matches what the server has on file. The same information is recorded in the dashboard's audit timeline as aproject.removeevent, so even if the email gets lost there's a permanent record.If the owner is the one running itThe email's subject line is different (“You removed sealrepo...” vs. “Someone removed sealrepo...”), and the body skips the “rotate your secrets” advice. It's a confirmation, not an alert.
Flags
When the CLI refuses
SEALREPO_REMOVE_OFFLINE— project is linked but we couldn't reachsealrepo.dev. Confirm connectivity, or rerun with--offlineto acknowledge that the owner will not be alerted.SEALREPO_REMOVE_REJECTED— the server rejected the notice (usually a stale bearer token, or the project was already deleted on the dashboard). Runsealrepo whoamiandsealrepo link --infoto triage.SEALREPO_WRONG_KEY— the passphrase you typed at the verification prompt doesn't match. Same key the rest of the CLI uses; if you forgot it, runsealrepo unlock --recoveryfirst to confirm your recovery code still works, thensealrepo rotateto set a new passphrase before retrying remove.
sealrepo removenever deletes your project on the dashboard. The server still has the project and the paid slot is still counted. That's deliberate — releasing the slot has to be an explicit owner action so a leaked bearer token can't free billing on its own. After removing locally, head to the dashboard and click Delete project if you want the slot back.