macos-mscp-scan v0.3.0
macos-mscp-scan v0.3.0
This release adds a security-posture baseline for personally administered Macs
and a strict AI/user trust boundary around the privileged audit phase.
Included
personal, the new default baseline for Macs not enrolled in organizational
MDM;- effective local-state checks for FileVault, Gatekeeper, Firewall, screen
locking, Internet Sharing, network time, and other selected controls; - explicit removal of policy-only rules that cannot produce meaningful results
outside organizational device management; - unchanged opt-in
cis_lvl1andcis_lvl2baselines; - a non-privileged preparation phase and an explicit user-only interactive
audit phase; - reusable dependency caches and isolated per-run reports under
$TMPDIR; - stable pointers to prepared and completed reports; and
- profile definitions, custom rules, provenance, and SHA-256 evidence recorded
with each personal report.
The personal profile is derived from the CIS Level 1 rule selection, but it is
not a CIS Benchmark assessment and does not claim CIS compliance. The scanner
does not enumerate listening ports, test external reachability, inventory
vulnerabilities, or remediate settings.
Compatibility
macOS 14 Sonoma, 15 Sequoia, and 26 Tahoe are supported on Apple Silicon and
Intel. Personal-profile generation and generated-script validation were run for
all three versions. The full privileged audit was run on macOS 26 Apple Silicon.
Safety contract
The generated mSCP audit is invoked only with --check; the wrapper never uses
--fix or --cfc. An AI agent may prepare a run but must stop before the
interactive audit. Only the user reviews the prompt and authorizes macOS
administrator authentication in their normal Terminal.
Download and verify
The release-signing key fingerprint is:
SHA256:Rt9xlHKnOMVeREiwG041268qY0kxu72vYVt+CntuF+4
Download the four release assets, verify the SHA-256 manifest and its detached
SSH signature, then extract the source archive:
set -e
release_dir="$(mktemp -d /private/tmp/macos-mscp-scan-v0.3.0.XXXXXX)"
cd "$release_dir"
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/macos-mscp-scan-v0.3.0.tar.gz
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/SHA256SUMS
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/SHA256SUMS.sig
curl -fLO https://github.com/r4kh1m/macos-mscp-scan/releases/download/v0.3.0/r4kh1m-release-signing-key.pub
shasum -a 256 -c SHA256SUMS
{
printf 'r4kh1m-release namespaces="file" '
cat r4kh1m-release-signing-key.pub
} > allowed_signers
ssh-keygen -Y verify \
-f allowed_signers \
-I r4kh1m-release \
-n file \
-s SHA256SUMS.sig < SHA256SUMS
tar -xzf macos-mscp-scan-v0.3.0.tar.gz
cd macos-mscp-scan-v0.3.0To use an AI agent, give it the extracted directory and ask it to follow
AGENTS.md. To prepare the scan yourself:
zsh ./scan_cis.zshIn either workflow, the script stops after preparation and prints the one
--run-prepared command that the user must run in a normal interactive
Terminal.
Feedback
Use Discussions for questions and compatibility experience, Issues for
reproducible bugs, and GitHub private vulnerability reporting for security
findings. Never post an unredacted audit report.