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.

SurfaceRiskMitigation
Path traversal / TOCTOUDeleting arbitrary pathsPhysical identity checks (st_dev/st_ino) + staged atomic rename (RENAME_EXCL)
Symlink / junction followingDeleting link targetsStaging rename + identity re-verification
Privilege boundaryUnauthorized elevated deletestouchid/sudo paths re-verified; dev-mode excluded from CI builds
Busy files / mounted volumesBreaking running servicesMounted-path detection before deletion
License bypassUnauthorized Pro useEd25519-signed licenses + activation machine limits
Command injectionArbitrary command executionSanitized 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.