Skip to content

CIS Benchmarks: Update macOS benchmarks - #49815

Merged
juan-fdz-hawa merged 2 commits into
mainfrom
45644-cis-benchmarks-update-macos-benchmarks
Aug 3, 2026
Merged

CIS Benchmarks: Update macOS benchmarks#49815
juan-fdz-hawa merged 2 commits into
mainfrom
45644-cis-benchmarks-update-macos-benchmarks

Conversation

@juan-fdz-hawa

@juan-fdz-hawa juan-fdz-hawa commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Related issue: Resolves ##45644

Bring the macOS CIS benchmark policies up to the current CIS releases:

  • macOS 14 Sonoma: v3.0.0 -> v3.1.0
  • macOS 15 Sequoia: v2.0.0 -> v2.1.0
  • macOS 26 Tahoe: v1.0.0 -> v1.1.0

Policy changes:

  • 2.7.1: rescope the screen saver hot corners check to the current
    console user and move it to Level 1, per the updated CIS audit.
  • 3.4: relax audit log retention to >= 30 days (no size requirement);
    parse the day value anchored to expire-after: so a mixed directive
    such as 7d OR 30d is correctly rejected.
  • 5.1.7: exclude the non-accessible /Library/AppStore directory and its
    descendants from the world-writable Library check.
  • 5.6: update for the new secure-token audit (verify root has no
    AuthenticationAuthority).
  • 5.3.1: add the internal APFS volume encryption check (Manual ->
    Automated) on macOS 26; remove the deprecated CoreStorage 5.3.2 check
    on macOS 14/15.
  • 2.10.1: correct the screen saver inactivity threshold to <= 900s
    (15 minutes) to match the CIS audit.

Limitations documented (no reliable fleetd data source):

  • 5.3.2 (external APFS/HFS+ encryption): apfs_volumes exposes no
    internal/external indicator.
  • 5.3.3 (FAT32/ExFAT): CIS Manual audit.

Checklist for submitter

If some of the following don't apply, delete the relevant line.

  • Changes file added for user-visible changes in changes/, orbit/changes/ or ee/fleetd-chrome/changes.
    See Changes files for more information.

Testing

  • QA'd all new/changed functionality manually

Summary by CodeRabbit

  • New Features

    • Updated macOS CIS benchmark policy references for Sonoma, Sequoia, and Tahoe.
    • Refreshed CIS compliance checks for Dock hot corners (current console user), screen saver inactivity (≤15 minutes), security audit-log retention (30 days), Library world-writable exclusions, APFS encryption scope, and root hardening.
  • Bug Fixes

    • Improved screening and remediation logic to apply to the active non-root console user only.
    • Tightened audit-log retention validation to require expire-after days ≥ 30.
  • Tests

    • Updated and added CIS pass/fail test scripts and fixtures to match the revised controls.

@juan-fdz-hawa juan-fdz-hawa linked an issue Jul 23, 2026 that may be closed by this pull request
24 tasks
@juan-fdz-hawa
juan-fdz-hawa force-pushed the 45644-cis-benchmarks-update-macos-benchmarks branch from 4cd19b5 to 1dba221 Compare July 23, 2026 13:59
@juan-fdz-hawa
juan-fdz-hawa force-pushed the 45644-cis-benchmarks-update-macos-benchmarks branch from 1dba221 to 075075a Compare July 23, 2026 14:30
@juan-fdz-hawa
juan-fdz-hawa force-pushed the 45644-cis-benchmarks-update-macos-benchmarks branch from 075075a to 52f3111 Compare July 27, 2026 15:10
@juan-fdz-hawa
juan-fdz-hawa marked this pull request as ready for review July 27, 2026 15:11
@fleet-release
fleet-release requested a review from sharon-fdm July 27, 2026 15:11
@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7725aaf1-d393-4fe9-8cee-574b1a395803

📥 Commits

Reviewing files that changed from the base of the PR and between c216816 and 483250d.

📒 Files selected for processing (11)
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-15/cis-policy-queries.yml
  • ee/cis/macos-15/test/profiles/2.11.1.mobileconfig
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
🚧 Files skipped from review as they are similar to previous changes (10)
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/cis-policy-queries.yml

Walkthrough

Updates macOS CIS benchmark references to Sonoma v3.1.0, Sequoia v2.1.0, and Tahoe v1.1.0. Policy checks and remediation scripts now cover current-console-user hot corners, 15-minute screen saver inactivity, 30-day audit retention, Library exclusions, APFS encryption scope, and root secure-token removal. New pass/fail fixtures support the revised controls. SSH test probes now retry after timeouts.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and clearly summarizes the macOS CIS benchmark update.
Description check ✅ Passed The description covers the benchmark versions, key policy changes, changes file, and testing, matching the template well enough.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 45644-cis-benchmarks-update-macos-benchmarks

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/cis/macos-14/cis-policy-queries.yml`:
- Around line 2771-2772: Update the path exclusion condition in the CIS policy
query to match only the exact /Library/AppStore directory and descendants under
/Library/AppStore/. Replace the broad prefix pattern while preserving the
existing exclusion behavior for the intended directory and its children.
- Around line 2369-2374: The audit-control query must validate all active
day-based expire-after directives, not just accept any compliant line. Update
the EXISTS logic around the expire-after regex so it requires a directive of at
least 30 days while rejecting configurations containing any active day-based
directive below 30 days; preserve handling of non-day-based directives unless
the surrounding policy specifies otherwise.

In `@ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh`:
- Around line 5-8: Update the console-user handling in CIS_2.7.1_fail.sh to exit
nonzero when stat returns an empty value or root, instead of silently
succeeding. Only invoke sudo/defaults for a valid non-root user, preserving the
existing failing-state setup in that case.

In `@ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh`:
- Around line 12-13: Limit pass-fixture cleanup to the flagged test directory
instead of recursively scanning and modifying all of /Library. In
ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh lines 12-13 and
ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh lines 12-13, update the cleanup
command to remove /Library/CIS_Test_World_Writable or directly clear that
directory’s world-write bit without affecting unrelated paths.

In `@ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh`:
- Line 4: Replace the literal <username> argument in the screensaver defaults
command with the same console-user resolution used by the other updated
fixtures, then pass that resolved username to sudo while preserving the existing
idleTime setting.

In `@ee/cis/macos-15/cis-policy-queries.yml`:
- Around line 2247-2252: Update the retention-duration regex in the macOS 15
query at ee/cis/macos-15/cis-policy-queries.yml lines 2247-2252 to capture only
the day value immediately following expire-after:, then add a failing fixture
for expire-after:7d OR 30d. Apply the same anchored parsing rule and
mixed-duration failing fixture at ee/cis/macos-26/cis-policy-queries.yml lines
1982-1987.

In `@ee/cis/macos-26/cis-policy-queries.yml`:
- Around line 2367-2369: De-scope the internal-volume control in the APFS policy
queries because apfs_volumes cannot distinguish internal from external media. In
ee/cis/macos-26/cis-policy-queries.yml lines 2367-2369, replace the overbroad
query with a locality-aware data source or omit the control; apply the same
correction in ee/cis/macos-15/cis-policy-queries.yml lines 2784-2786 rather than
merely documenting the limitation.

In `@tools/cis/cis-test-runner.py`:
- Around line 913-922: Update wait_for_ssh so each retry calculates the
remaining deadline before calling ssh, uses the smaller of that value and the
existing 10-second timeout, and stops when no time remains. Also cap the retry
sleep to the remaining deadline so the function does not exceed the requested
timeout.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d753a60e-3688-4d9b-b01f-ac0243c88284

📥 Commits

Reviewing files that changed from the base of the PR and between 17669ec and 52f3111.

⛔ Files ignored due to path filters (4)
  • ee/cis/CIS-BENCHMARKS.md is excluded by !**/*.md
  • ee/cis/macos-14/README.md is excluded by !**/*.md
  • ee/cis/macos-15/README.md is excluded by !**/*.md
  • ee/cis/macos-26/README.md is excluded by !**/*.md
📒 Files selected for processing (27)
  • changes/45644-update-macos-cis-benchmarks
  • ee/cis/macos-14/cis-policy-queries.yml
  • ee/cis/macos-14/test/profiles/not_always_working_2.10.1.mobileconfig
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.6.sh
  • ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh
  • ee/cis/macos-15/cis-policy-queries.yml
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/cis-policy-queries.yml
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh
  • tools/cis/cis-test-runner.py
💤 Files with no reviewable changes (2)
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh

Comment thread ee/cis/macos-14/cis-policy-queries.yml Outdated
Comment thread ee/cis/macos-14/cis-policy-queries.yml Outdated
Comment thread ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
Comment thread ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh Outdated
Comment thread ee/cis/macos-15/cis-policy-queries.yml Outdated
Comment thread ee/cis/macos-26/cis-policy-queries.yml
Comment thread tools/cis/cis-test-runner.py

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/cis/macos-14/cis-policy-queries.yml`:
- Around line 2771-2772: Update the path exclusion condition in the CIS policy
query to match only the exact /Library/AppStore directory and descendants under
/Library/AppStore/. Replace the broad prefix pattern while preserving the
existing exclusion behavior for the intended directory and its children.
- Around line 2369-2374: The audit-control query must validate all active
day-based expire-after directives, not just accept any compliant line. Update
the EXISTS logic around the expire-after regex so it requires a directive of at
least 30 days while rejecting configurations containing any active day-based
directive below 30 days; preserve handling of non-day-based directives unless
the surrounding policy specifies otherwise.

In `@ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh`:
- Around line 5-8: Update the console-user handling in CIS_2.7.1_fail.sh to exit
nonzero when stat returns an empty value or root, instead of silently
succeeding. Only invoke sudo/defaults for a valid non-root user, preserving the
existing failing-state setup in that case.

In `@ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh`:
- Around line 12-13: Limit pass-fixture cleanup to the flagged test directory
instead of recursively scanning and modifying all of /Library. In
ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh lines 12-13 and
ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh lines 12-13, update the cleanup
command to remove /Library/CIS_Test_World_Writable or directly clear that
directory’s world-write bit without affecting unrelated paths.

In `@ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh`:
- Line 4: Replace the literal <username> argument in the screensaver defaults
command with the same console-user resolution used by the other updated
fixtures, then pass that resolved username to sudo while preserving the existing
idleTime setting.

In `@ee/cis/macos-15/cis-policy-queries.yml`:
- Around line 2247-2252: Update the retention-duration regex in the macOS 15
query at ee/cis/macos-15/cis-policy-queries.yml lines 2247-2252 to capture only
the day value immediately following expire-after:, then add a failing fixture
for expire-after:7d OR 30d. Apply the same anchored parsing rule and
mixed-duration failing fixture at ee/cis/macos-26/cis-policy-queries.yml lines
1982-1987.

In `@ee/cis/macos-26/cis-policy-queries.yml`:
- Around line 2367-2369: De-scope the internal-volume control in the APFS policy
queries because apfs_volumes cannot distinguish internal from external media. In
ee/cis/macos-26/cis-policy-queries.yml lines 2367-2369, replace the overbroad
query with a locality-aware data source or omit the control; apply the same
correction in ee/cis/macos-15/cis-policy-queries.yml lines 2784-2786 rather than
merely documenting the limitation.

In `@tools/cis/cis-test-runner.py`:
- Around line 913-922: Update wait_for_ssh so each retry calculates the
remaining deadline before calling ssh, uses the smaller of that value and the
existing 10-second timeout, and stops when no time remains. Also cap the retry
sleep to the remaining deadline so the function does not exceed the requested
timeout.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d753a60e-3688-4d9b-b01f-ac0243c88284

📥 Commits

Reviewing files that changed from the base of the PR and between 17669ec and 52f3111.

⛔ Files ignored due to path filters (4)
  • ee/cis/CIS-BENCHMARKS.md is excluded by !**/*.md
  • ee/cis/macos-14/README.md is excluded by !**/*.md
  • ee/cis/macos-15/README.md is excluded by !**/*.md
  • ee/cis/macos-26/README.md is excluded by !**/*.md
📒 Files selected for processing (27)
  • changes/45644-update-macos-cis-benchmarks
  • ee/cis/macos-14/cis-policy-queries.yml
  • ee/cis/macos-14/test/profiles/not_always_working_2.10.1.mobileconfig
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.6.sh
  • ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh
  • ee/cis/macos-15/cis-policy-queries.yml
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/cis-policy-queries.yml
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh
  • tools/cis/cis-test-runner.py
💤 Files with no reviewable changes (2)
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh
🛑 Comments failed to post (1)
ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh (1)

12-13: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Limit pass-fixture cleanup to the test directory. These scripts recursively modify every matching /Library tree, including files beneath the flagged directory, although the paired fail fixture creates only /Library/CIS_Test_World_Writable. This can alter unrelated system or application permissions during CIS tests.

  • ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh#L12-L13: remove the test directory or clear its world-write bit directly instead of recursively modifying all matching paths.
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh#L12-L13: apply the same narrowly scoped cleanup.
📍 Affects 2 files
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh#L12-L13 (this comment)
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh#L12-L13
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh` around lines 12 - 13, Limit
pass-fixture cleanup to the flagged test directory instead of recursively
scanning and modifying all of /Library. In
ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh lines 12-13 and
ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh lines 12-13, update the cleanup
command to remove /Library/CIS_Test_World_Writable or directly clear that
directory’s world-write bit without affecting unrelated paths.

Resolves #45644

Bring the macOS CIS benchmark policies up to the current CIS releases:
- macOS 14 Sonoma:  v3.0.0 -> v3.1.0
- macOS 15 Sequoia: v2.0.0 -> v2.1.0
- macOS 26 Tahoe:   v1.0.0 -> v1.1.0

Policy changes:
- 2.7.1: rescope the screen saver hot corners check to the current
console user and move it to Level 1, per the updated CIS audit.
- 3.4: relax audit log retention to >= 30 days (no size requirement);
parse the day value anchored to `expire-after:` so a mixed directive
such as `7d OR 30d` is correctly rejected.
- 5.1.7: exclude the non-accessible /Library/AppStore directory and its
descendants from the world-writable Library check.
- 5.6: update for the new secure-token audit (verify root has no
AuthenticationAuthority).
- 5.3.1: add the internal APFS volume encryption check (Manual ->
Automated) on macOS 26; remove the deprecated CoreStorage 5.3.2 check
on macOS 14/15.
- 2.10.1: correct the screen saver inactivity threshold to <= 900s
(15 minutes) to match the CIS audit.

Limitations documented (no reliable fleetd data source):
- 5.3.2 (external APFS/HFS+ encryption): apfs_volumes exposes no
internal/external indicator.
- 5.3.3 (FAT32/ExFAT): CIS Manual audit.
@juan-fdz-hawa
juan-fdz-hawa force-pushed the 45644-cis-benchmarks-update-macos-benchmarks branch from 52f3111 to c216816 Compare July 27, 2026 17:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh`:
- Around line 18-20: Make the fixture setup fail fast by adding failure checks
to the mv, chown, and chmod commands in
ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh lines 18-20,
ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh lines 18-20,
ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh lines 18-20, and
ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh lines 18-20, ensuring any failed
replacement or metadata update causes the script to exit nonzero.

In `@ee/cis/macos-15/cis-policy-queries.yml`:
- Around line 1820-1845: Add cis_id "2.11.1" to the macOS 15 inactivity-interval
policy identified by its name, and add the corresponding MDM profile/script test
pair under the macOS 15 test fixtures. Ensure the test pair validates the
existing idleTime <= 900 requirement and is discoverable by cis-test-runner.py.

In `@ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh`:
- Around line 12-13: Ensure the Dock preference write in CIS_2.7.1_fail.sh
propagates failure instead of being masked by the subsequent non-fatal cfprefsd
killall command. Apply this change at
ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh lines 12-13 and
ee/cis/macos-26/test/scripts/CIS_2.7.1_fail.sh lines 12-13, preserving fail-fast
behavior when writing wvous-br-corner fails.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: f37b7ec9-5db1-4b98-9e7a-0d350d7c4174

📥 Commits

Reviewing files that changed from the base of the PR and between 52f3111 and c216816.

⛔ Files ignored due to path filters (5)
  • ee/cis/CIS-BENCHMARKS.md is excluded by !**/*.md
  • ee/cis/macos-14/README.md is excluded by !**/*.md
  • ee/cis/macos-15/README.md is excluded by !**/*.md
  • ee/cis/macos-26/README.md is excluded by !**/*.md
  • tools/cis/__pycache__/cis-test-runner.cpython-314.pyc is excluded by !**/*.pyc
📒 Files selected for processing (31)
  • changes/45644-update-macos-cis-benchmarks
  • ee/cis/macos-14/cis-policy-queries.yml
  • ee/cis/macos-14/test/profiles/not_always_working_2.10.1.mobileconfig
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.6.sh
  • ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh
  • ee/cis/macos-15/cis-policy-queries.yml
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-15/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/cis-policy-queries.yml
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_5.1.7_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh
  • tools/cis/cis-test-runner.py
💤 Files with no reviewable changes (4)
  • ee/cis/macos-14/test/scripts/CIS_5.1.7.sh
  • ee/cis/macos-14/test/scripts/CIS_3.4.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6_pass.sh
🚧 Files skipped from review as they are similar to previous changes (17)
  • changes/45644-update-macos-cis-benchmarks
  • ee/cis/macos-14/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_fail.sh
  • ee/cis/macos-15/test/scripts/CIS_5.6.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_fail.sh
  • ee/cis/macos-14/test/profiles/not_always_working_2.10.1.mobileconfig
  • ee/cis/macos-15/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-26/test/scripts/CIS_5.6.sh
  • ee/cis/macos-15/test/scripts/CIS_5.1.7_fail.sh
  • ee/cis/macos-14/test/scripts/not_always_working_CIS_2.10.1.sh
  • ee/cis/macos-26/test/scripts/CIS_2.7.1_pass.sh
  • ee/cis/macos-14/test/scripts/CIS_5.6.sh
  • ee/cis/macos-26/test/scripts/CIS_3.4_pass.sh
  • tools/cis/cis-test-runner.py
  • ee/cis/macos-26/cis-policy-queries.yml
  • ee/cis/macos-14/cis-policy-queries.yml

Comment thread ee/cis/macos-14/test/scripts/CIS_3.4_pass.sh Outdated
Comment thread ee/cis/macos-15/cis-policy-queries.yml
Comment thread ee/cis/macos-15/test/scripts/CIS_2.7.1_fail.sh Outdated
@juan-fdz-hawa
juan-fdz-hawa merged commit e83c268 into main Aug 3, 2026
11 checks passed
@juan-fdz-hawa
juan-fdz-hawa deleted the 45644-cis-benchmarks-update-macos-benchmarks branch August 3, 2026 11:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CIS Benchmarks: Update macOS benchmarks

2 participants