Security
Deleting files is high-stakes. We treat it that way.
A flaw in a disk cleaner can mean data loss. MacLean’s security model, disclosure process and threat surface are documented below and in the public repository.
Responsible disclosure
Report privately, get a fast response.
Do not disclose unpatched vulnerabilities in public issues or forums. Use the GitHub Security Advisory flow (preferred) or a private channel listed in SECURITY.md. Maintainers commit to:
24h
Acknowledge
Confirmation of receipt within 24 hours.
7d
Plan
A fix plan and timeline within 7 days.
✓
Credit
Thanks in release notes, with your consent.
Threat model
Top attack surfaces, ranked by risk.
| Surface | Risk | Mitigation |
|---|---|---|
| Path traversal / TOCTOU | Deleting arbitrary paths | Physical identity checks (st_dev/st_ino) + staged atomic rename (RENAME_EXCL) |
| Symlink / junction following | Deleting link targets | Staging rename + identity re-verification |
| Privilege boundary | Unauthorized elevated deletes | touchid/sudo paths re-verified; dev-mode excluded from CI builds |
| Busy files / mounted volumes | Breaking running services | Mounted-path detection before deletion |
| License bypass | Unauthorized Pro use | Ed25519-signed licenses + activation machine limits |
| Command injection | Arbitrary command execution | Sanitized sudo invocation; non-predictable temp scripts |
Supported versions: security support is versioned — see SECURITY.md for the currently supported release line. Always run a supported version.