Skip to content

F194871: Pin GitHub Actions to commit SHAs - #93

Merged
mblode merged 1 commit into
mainfrom
f194871-pin-github-actions-to-commit-shas
Oct 5, 2026
Merged

mblode merged 1 commit into
mainfrom
f194871-pin-github-actions-to-commit-shas

Conversation

@mblode

@mblode mblode commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Summary

Security watch finding: actions/checkout, actions/setup-node, changesets/action, actions/configure-pages, actions/upload-pages-artifact, and actions/deploy-pages were referenced by mutable tags (@v4, @v1, @v5, @v3) across ci.yml, npm-publish.yml, and pages-deploy.yml. Pinned each to its resolved commit SHA with a # vX version comment, so a compromised upstream tag can no longer silently change what runs in CI.

  • actions/checkout@v4 → 11d5960a326750d5838078e36cf38b85af677262
  • actions/setup-node@v4 → 49933ea5288caeca8642d1e84afbd3f7d6820020
  • changesets/action@v1 → a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d (latest v1.x release, v1.9.0)
  • actions/configure-pages@v5 → 983d7736d9b0ae728b81ab479565c72886d7745b
  • actions/upload-pages-artifact@v3 → 56afc609e74202658d3ffba0e8f6dda462b719fa
  • actions/deploy-pages@v4 → d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e

SHAs resolved via gh api repos/<owner>/<repo>/git/refs/tags/<tag>, peeling annotated tags to their commit object.

Test plan

  • zizmor --offline .github/workflows/ reports zero unpinned-uses findings
  • npm run format:check passes
  • Workflow-files-only diff; no src/ changes so no build needed

Learned: changesets/action@v1 is a moving major tag with no single "v1" commit — pinned to the latest v1.x patch release (v1.9.0) instead of an arbitrary old v1.0.0 commit, since that matches the version actually in use today.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BPgFVNDV3puVaHSPjWJr8j

Security watch finding: actions/checkout, actions/setup-node,
changesets/action, actions/configure-pages,
actions/upload-pages-artifact, and actions/deploy-pages were all
referenced by mutable tags across ci.yml, npm-publish.yml, and
pages-deploy.yml. Pin each to its resolved commit SHA with a
version comment so a compromised tag can't silently change what
runs in CI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BPgFVNDV3puVaHSPjWJr8j
@vercel

vercel Bot commented Oct 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
marx Ignored Ignored Oct 5, 2026 7:31pm UTC

Request Review

@mblode
mblode marked this pull request as ready for review October 5, 2026 22:46
@mblode
mblode merged commit 7c4463c into main Oct 5, 2026
3 of 6 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.

1 participant