Appendix B: Security Checklist¶
Run this checklist after a fresh install and quarterly afterwards.
Pre-Install¶
- [ ] Download
install.shover HTTPS only - [ ] Inspect
install.shbefore running (optional, recommended for untrusted environments) - [ ] Ensure SSH signing key exists and is backed up (
~/.ssh/id_ed25519) - [ ] Ensure Age key is backed up if reinstalling (
~/.config/age/keys.txt)
Post-Install¶
- [ ] Run
dot doctor— expect score ≥90 - [ ] Run
dot verify --security— all checks pass - [ ] Verify commit signing:
cd ~/.dotfiles && git verify-commit HEAD - [ ] Confirm
~/.ssh/allowed_signerscontains your public key - [ ] Check that
~/.config/age/keys.txtpermissions are0600 - [ ] Run
dot mcp --strict— policy matches registry
Ongoing (monthly)¶
- [ ]
dot upgrade— pick up security patches - [ ]
dot verify --security— confirm no new leaks - [ ] Review
~/.local/state/dotfiles/mcp-violations.log— any unexpected entries? - [ ] Review recent attestations —
ls ~/.local/state/dotfiles/attestation/ | tail -10 - [ ] Rotate Age key if compromised or as part of scheduled rotation
Ongoing (quarterly)¶
- [ ] Rotate SSH signing key
- [ ] Audit
~/.ssh/allowed_signers— remove former team members - [ ] Review SOPS recipient list in
.sops.yaml - [ ] Run
dot chaosin a test container — verify heal works - [ ] Update pinned tool versions in
mise.toml - [ ] Run fleet attestation — confirm all hosts aligned
Incident Response¶
If a secret leak is detected:
- Contain — remove from history, force-push
- Rotate — change the leaked secret upstream (Stripe key, SSH key, etc.)
- Audit — check who/what had access
- Notify — inform affected parties if required
If a host is compromised:
- Revoke — remove the host's public key from
~/.ssh/allowed_signerson all other fleet hosts - Re-encrypt —
sops updatekeyswith the host excluded from recipients - Attest — run
dot fleet attestto verify revocation propagated - Wipe — if the host is recoverable,
rm -rf ~/.config/age ~/.dotfilesand reinstall
Gates Enforced by CI¶
Every PR to main must pass:
- [x] SSH-signed commits
- [x] Shellcheck zero warnings (severity=error)
- [x] Gitleaks scan
- [x] Detect-secrets baseline diff
- [x] TruffleHog verified scan
- [x] Copyright headers present
- [x] 100% executable module mapping
- [ ] 100% measured line and branch coverage (current ratchet is documented in
docs/operations/COVERAGE.md) - [x] Reliability tests (macOS + Ubuntu)
- [x] Checkov infra scan
- [x] Version sync (bumped across all files)