GitHub Actions benchmark 0.1
Ten workflows. Eight controls. Exact results.
CapitalGuard reproduced every declared pass and block outcome across repository scope, privileged triggers, permissions, action pins, checkout credentials, script injection, OIDC, and deployment gates.
This is a publisher-operated synthetic benchmark. It evaluates fixed workflow text and declared context; it does not execute GitHub Actions, inspect a live repository, or certify a workflow as secure.
CapitalGuard Security Research · Version 0.1.0 · Tested July 18, 2026
Case-level evidence
Each fixture declares the expected decision and exact failed controls.
| Case | Synthetic condition | Expected | Failed controls | Result |
|---|---|---|---|---|
| CG-GHA-BENCH-001 | Pinned read-only pull request gate | pass | None | Match |
| CG-GHA-BENCH-002 | Repository write permission | block | CG-GHA-003 | Match |
| CG-GHA-BENCH-003 | Mutable third-party action references | block | CG-GHA-004 | Match |
| CG-GHA-BENCH-004 | Persisted checkout credential | block | CG-GHA-005 | Match |
| CG-GHA-BENCH-005 | Pull request title expanded in shell | block | CG-GHA-006 | Match |
| CG-GHA-BENCH-006 | Privileged trigger checks out untrusted head | block | CG-GHA-002 | Match |
| CG-GHA-BENCH-007 | OIDC enabled without bound receiver policy | block | CG-GHA-007 | Match |
| CG-GHA-BENCH-008 | Deployment command without protected environment | block | CG-GHA-008 | Match |
| CG-GHA-BENCH-009 | Unauthorized cross-repository checkout | block | CG-GHA-001 | Match |
| CG-GHA-BENCH-010 | Read-only gate without OIDC | pass | None | Match |
Reproducible release
Download, rerun, and hash the same evidence.
The fixture pack contains only inert workflow text and explicit external-context declarations. The manifest binds every release file to its size and SHA-256 digest.
Run digest: 648f1fa0a3e94803fbc045196e7c80f6e078df0b489a34cb77035bfba414e24e
Limits are part of the result
The evaluator recognizes the declared fixture patterns; it is not a general YAML parser or a replacement for CodeQL, review, or GitHub policy enforcement.
Repository, environment, OIDC receiver, and authorization settings outside workflow YAML are represented by explicit synthetic context declarations.
A passing fixture means the expected rule outcome was reproduced for that fixture only.
GitHub features, plan availability, and public-preview behavior can change after the source-check date.
Primary sources checked July 18, 2026
Apply the control profile
