Skip to content

Harden CI: pin the remaining first-party actions to commit SHAs - #5294

Merged
vivekchand merged 1 commit into
mainfrom
harden/pin-remaining-first-party-actions
Aug 28, 2026
Merged

Harden CI: pin the remaining first-party actions to commit SHAs#5294
vivekchand merged 1 commit into
mainfrom
harden/pin-remaining-first-party-actions

Conversation

@vivekchand

Copy link
Copy Markdown
Owner

What

Pins the last 30 unpinned actions/* references across 11 workflows to full commit SHAs. This closes out the OpenSSF Scorecard PinnedDependencies work for every workflow that is not already covered by an open hardening PR.

A floating tag like actions/checkout@v7 is a mutable pointer — whoever controls the tag controls what runs in CI. A commit SHA is immutable, so the workflow keeps running the reviewed code until someone deliberately bumps it.

No version changes

Every SHA was resolved from the tag the workflow already floats on, so nothing is upgraded or downgraded:

Reference Pinned to Tag
actions/checkout@v7 3d3c42e5aac5ba805825da76410c181273ba90b1 v7.0.1
actions/setup-python@v7 5fda3b95a4ea91299a34e894583c3862153e4b97 v7.0.0
actions/setup-python@v6 ece7cb06caefa5fff74198d8649806c4678c61a1 v6.3.0
actions/setup-node@v7 820762786026740c76f36085b0efc47a31fe5020 v7.0.0
actions/upload-artifact@v7 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a v7.0.1
actions/upload-artifact@v4 ea165f8d65b6e75b540449e92b4886f43607fa02 v4.6.2
actions/cache@v6 55cc8345863c7cc4c66a329aec7e433d2d1c52a9 v6.1.0

Five of these seven SHAs are already pinned elsewhere in this repo, so the values are consistent with what has already been reviewed and merged.

Files

api-latency-smoke, auto-deploy-cloud, e2e-nightly, moat-keystone-drive-nightly, openclaw-boot, oss-golden-path, overhead-bench, pr-screenshots, sync-test, windows-enterprise-tls, zero-click-auth-e2e.

Scope / safety

  • Diff is 30 insertions / 30 deletions, every one on a uses: line. Verified mechanically.
  • No permissions: block is touched. auto-deploy-cloud and moat-keystone-drive-nightly need write scopes and keep exactly the scopes they have today — this PR is pinning only, one concern.
  • All 34 workflow files re-parsed with yaml.safe_load after the edit.
  • python3 scripts/check_action_refs.py passes.

Coordination

No overlap with the two open hardening PRs. #5283 and #5285 claim 13 workflow files between them; this PR takes the 11 they do not touch. Once all three land, every uses: reference in .github/workflows/ is SHA-pinned.

.github/ is exempt from the product-record gate, so no Factory record is cited.


Generated by Claude Code

Pins the last 30 unpinned `actions/*` references across 11 workflows to
full commit SHAs, closing out the OpenSSF Scorecard PinnedDependencies
work for every workflow not already covered by an open hardening PR.

A floating tag such as `actions/checkout@v7` is a mutable pointer: whoever
controls the tag controls what runs in CI. A commit SHA is immutable, so
the workflow keeps running the reviewed code until someone deliberately
bumps it.

Every SHA was resolved from the tag the workflow already floats on, so
this changes no action version:

  actions/checkout@v7       -> 3d3c42e5... # v7.0.1
  actions/setup-python@v7   -> 5fda3b95... # v7.0.0
  actions/setup-python@v6   -> ece7cb06... # v6.3.0
  actions/setup-node@v7     -> 82076278... # v7.0.0
  actions/upload-artifact@v7-> 043fb46d... # v7.0.1
  actions/upload-artifact@v4-> ea165f8d... # v4.6.2
  actions/cache@v6          -> 55cc8345... # v6.1.0

Files: api-latency-smoke, auto-deploy-cloud, e2e-nightly,
moat-keystone-drive-nightly, openclaw-boot, oss-golden-path,
overhead-bench, pr-screenshots, sync-test, windows-enterprise-tls,
zero-click-auth-e2e.

Diff is 30 insertions / 30 deletions, all on `uses:` lines. No
`permissions:` block is touched, so the release/deploy workflows keep the
scopes they have today.

Co-Authored-By: Claude <noreply@anthropic.com>
@8090-software-factory

Copy link
Copy Markdown

✅ Drift Bot (ClawMetry): no drift detected

Drift Bot analyzed the changed files against this project's blueprints and requirements and found no drift.

@github-actions

Copy link
Copy Markdown
Contributor

Visual diff

Comparing 88a34178848a (head) against the PR base branch.

37 of 66 comparison(s) flagged (>1% pixel diff).

View Before After Diff
desktop overview ⚠️ before after diff · 100.00%
desktop flow ⚠️ before after diff · 8.91%
desktop brain before after diff · 0.01%
desktop usage ⚠️ before after diff · 100.00%
desktop crons before after diff · 0.01%
desktop memory ⚠️ before after diff · 3.31%
desktop security ⚠️ before after diff · 100.00%
desktop subagents before after diff · 0.00%
desktop transcripts before after diff · 0.27%
desktop logs before after diff · 0.72%
desktop skills ⚠️ before after diff · 3.02%
desktop models ⚠️ before after diff · 2.92%
desktop approvals before after diff · 0.42%
desktop alerts before after diff · 0.01%
desktop notifications before after diff · 0.41%
desktop limits ⚠️ before after diff · 1.43%
desktop clusters before after diff · 0.00%
desktop history before after diff · 0.00%
desktop channels ⚠️ before after diff · 1.59%
desktop dives before after diff · 0.79%
desktop harness ⚠️ before after diff · 3.45%
desktop inventory ⚠️ before after diff · 2.29%
desktop nemoclaw before after diff · 0.00%
desktop policy ⚠️ before after diff · 2.53%
desktop selfevolve before after diff · 0.01%
desktop swimlane before after diff · 0.01%
desktop tool-catalog before after diff · 0.01%
desktop tracing before after diff · 0.00%
desktop turn-anatomy ⚠️ before after diff · 1.79%
desktop version-impact before after diff · 0.41%
desktop context-economics before after diff · 0.26%
desktop agents before after diff · 0.26%
desktop evals ⚠️ before after diff · 100.00%
mobile overview ⚠️ before after diff · 100.00%
mobile flow ⚠️ before after diff · 100.00%
mobile brain ⚠️ before after diff · 100.00%
mobile usage ⚠️ before after diff · 100.00%
mobile crons ⚠️ before after diff · 100.00%
mobile memory ⚠️ before after diff · 100.00%
mobile security ⚠️ before after diff · 100.00%
mobile subagents ⚠️ before after diff · 100.00%
mobile transcripts before after diff · 0.02%
mobile logs ⚠️ before after diff · 1.95%
mobile skills before after diff · 0.01%
mobile models before after diff · 0.73%
mobile approvals ⚠️ before after diff · 1.98%
mobile alerts ⚠️ before after diff · 4.14%
mobile notifications ⚠️ before after diff · 1.67%
mobile limits ⚠️ before after diff · 100.00%
mobile clusters ⚠️ before after diff · 100.00%
mobile history before after diff · 0.03%
mobile channels ⚠️ before after diff · 100.00%
mobile dives before after diff · 0.02%
mobile harness before after diff · 0.79%
mobile inventory ⚠️ before after diff · 1.91%
mobile nemoclaw ⚠️ before after diff · 1.98%
mobile policy ⚠️ before after diff · 1.98%
mobile selfevolve before after diff · 0.06%
mobile swimlane ⚠️ before after diff · 1.98%
mobile tool-catalog before after diff · 0.02%
mobile tracing ⚠️ before after diff · 100.00%
mobile turn-anatomy ⚠️ before after diff · 100.00%
mobile version-impact before after diff · 0.01%
mobile context-economics ⚠️ before after diff · 1.33%
mobile agents ⚠️ before after diff · 1.98%
mobile evals before after diff · 0.01%

Folder: 88a34178848a. Full PNGs also attached as a workflow artefact.

Generated by visual-diff bot. Pixel diffs >1% flagged; eyeball the table before merging. This check is non-blocking — fail = bot bug, not a code problem.

@vivekchand
vivekchand merged commit 6bf0456 into main Aug 28, 2026
49 checks passed
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.

2 participants