Skip to content

perf: batch Windows credential ACL inspection - #300

Merged
kmbroai merged 1 commit into
dev/kyleb/windows-ci-credential-acl-flakesfrom
dev/kyleb/windows-credential-acl-performance
Aug 7, 2026
Merged

perf: batch Windows credential ACL inspection#300
kmbroai merged 1 commit into
dev/kyleb/windows-ci-credential-acl-flakesfrom
dev/kyleb/windows-credential-acl-performance

Conversation

@kmbroai

@kmbroai kmbroai commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Stacked on #298; this pull request is intentionally based on dev/kyleb/windows-ci-credential-acl-flakes and does not modify that PR.

  • Batch credential-home ancestry, home ACL, and descendant ACL inspection into a single streaming PowerShell process per validation instead of starting separate PowerShell processes for each stage.
  • Preserve full ACL revalidation on every access, trusted-owner/SID checks, attacker-writable ancestry rejection, descendant stability checks, bounded retries, credential ACL repair, and constrained-language compatibility.
  • Keep ancestor-owner failures non-repairable while allowing repair of an untrusted credential-home owner.
  • Restore the ordinary 30-second test timeout on Windows instead of retaining the 60-second workaround from fix: stabilize and speed up Windows credential ACL verification #298.
  • Add cross-platform regression coverage for one-process inspection, empty homes, unsafe ancestors, unsafe descendants, and incomplete subprocess output.

Why

Windows credential workflows repeatedly validate the managed credential home. Before this change, each validation starts separate PowerShell processes for ancestry, the home, and existing descendants; a scan can repeat that work seven or eight times.

On the same #298 commit, the parallel-scan test takes 25.0 seconds on Windows versus 298 milliseconds on Linux, and the Windows suite takes 399.86 seconds versus 61.38 seconds on Linux. Historical Windows logs show one representative scan test increasing from 5.2 seconds to 26.4 seconds when managed ACL validation was introduced.

Verification

  • New combined-inspection regression fails before the implementation because the snapshot helper does not exist, then passes with the implementation.
  • Focused runtime/package-skeleton suites: 119 passed, 7 platform-specific skips, 0 failed.
  • Full randomized SDK suite (--randomize --seed 12345 --timeout 30000): 950 passed, 10 platform-specific skips, 0 failed across 960 tests.
  • TypeScript typecheck and generated-model validation passed.
  • Full Prettier check passed.
  • Production build passed.
  • pnpm pack and installed-package smoke validation passed, including the public import, CLI, 106 bundled plugin files, nested worker, and 198 archive entries.
  • Real Windows Node 22 and Node 24 both passed all 958 tests with the restored 30-second timeout.
  • Windows Node 24 parallel scans: 25.02s -> 14.03s; delegated credential login: 30.87s -> 17.20s; full suite: 399.86s -> 303.17s.
  • Windows Node 22 parallel scans completed in 14.16s, delegated credential login in 16.70s, and the full suite in 309.01s.
  • Both real Windows jobs passed attacker-writable ancestry rejection, nested credential ACL repair, and constrained-PowerShell regressions.
  • All 8 Node CI matrix jobs passed: Linux Node 22/24.0.0/24/26.0.0/26, macOS Node 22, and Windows Node 22/24.
  • Full successful workflow: https://github.com/openai/codex-security/actions/runs/31146638449

@kmbroai
kmbroai merged commit 9721adf into dev/kyleb/windows-ci-credential-acl-flakes Aug 7, 2026
16 checks passed
@kmbroai
kmbroai deleted the dev/kyleb/windows-credential-acl-performance branch August 7, 2026 18:02
kmbroai added a commit that referenced this pull request Aug 7, 2026
* [codex-security] Stabilize Windows credential ACL verification

* [codex-security] Allow slower Windows credential integration tests

* [codex-security] Batch Windows credential ACL inspection (#300)
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.

1 participant