fix: pin 8 unpinned action(s)#3753
Conversation
|
@claude review |
|
Claude finished @cliffhall's task in 1m 46s —— View job Code Review
SummaryThis PR correctly pins the 8 most security-sensitive third-party action instances to full 40-character commit SHAs. The changes are mechanical, internally consistent, and preserve all workflow logic. The approach is sound and the PR is worth merging, with a few observations below. What's pinned (correct scope)The PR targets the highest-risk actions — those running with privileged credentials or in publish pipelines:
Consistency check passes: the same SHA is used for the same version in every occurrence across files. The different SHAs for Observations1. SHA verification (maintainer action recommended) 2. Official
These are maintained by GitHub itself, which significantly reduces (but does not eliminate) the supply chain risk. Pinning them would be completionist but reasonable to do in a follow-up. 3. No Dependabot for Actions (pre-existing) # .github/dependabot.yml
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weeklyDependabot understands SHA-pinned actions and will keep the SHAs and version comments updated automatically. VerdictApprove with the SHA verification caveat above. The PR provides a real security improvement for the most privileged parts of the CI pipeline (the PyPI publish and Claude Code action steps). No workflow logic, triggers, or permissions are changed. The comment annotations ( |
Re-submission of #3724. Had a problem with my fork and had to delete it, which closed the original PR. Apologies for the noise.
Summary
This PR pins all GitHub Actions to immutable commit SHAs instead of mutable version tags.
How to verify
Review the diff, each change is mechanical and preserves workflow behavior:
action@v3becomesaction@abc123 # v3, original version preserved as commentI've been researching CI/CD supply chain attack vectors and submitting fixes to affected repos. Based on that research I built a scanner called Runner Guard and open sourced it here so you can scan yourself if you want to. I'll be posting more advisories over the next few weeks on Twitter if you want to stay in the loop.
If you have any questions, reach out. I'll be monitoring comms.
- Chris (dagecko)