ci: SHA-pin actions, scope permissions, add Dependabot#53
Merged
Conversation
Harden the GitHub Actions supply chain without changing any CI logic: - Pin every action reference in .github/workflows/* to a full commit SHA with a trailing `# vX.Y.Z` version comment (checkout v4.3.1, setup-go v5.6.0, setup-tinygo v2.0.1, setup-node v4.4.0, goreleaser-action v6.4.0, changesets/action v1.9.0, dtolnay/rust-toolchain @stable head). SHAs were resolved via the GitHub API for the tag each workflow used. - Add a least-privilege top-level `permissions: { contents: read }` block to ci.yml and govulncheck.yml (release.yml and release-cli.yml already scope their own; their privileged steps use the KIT_RELEASE_TOKEN PAT, so no job needs GITHUB_TOKEN widened). - Add .github/dependabot.yml covering the gomod and github-actions ecosystems (weekly), so the SHA pins are kept current automatically. - TinyGo stays pinned at 0.41.1. binaryen's apt install is left at the runner's candidate (documented inline): a literal apt version pin hard-fails whenever ubuntu-latest's candidate moves. Verified: actionlint clean on all four workflows. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
BCook98
force-pushed
the
uplift/kit-pin-ci-dependabot
branch
from
June 17, 2026 02:25
daccd36 to
f381690
Compare
BCook98
marked this pull request as ready for review
June 17, 2026 02:29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The kit CI workflows are a supply-chain surface:
.github/workflows/*were notall consistently hardened. This PR makes the hardening complete and reviewable:
re-pointed to malicious commits).
permissions:block.Files:
.github/workflows/ci.yml,.github/workflows/govulncheck.yml,.github/workflows/release.yml,.github/workflows/release-cli.yml,.github/dependabot.yml.Fix
# vX.Y.Zcomment. The pinned SHA for each semver tag was resolved viagh api repos/<owner>/<action>/commits/<tag>and re-verified in this PR:actions/checkoutv4.3.1 ->34e1148…actions/setup-gov5.6.0 ->40f1582…actions/setup-nodev4.4.0 ->49933ea…changesets/actionv1.9.0 ->a45c4d5…goreleaser/goreleaser-actionv6.4.0 ->e435ccd…acifani/setup-tinygov2.0.1 ->db56321…dtolnay/rust-toolchain@stable head ->29eef33…(movingstabletag,pinned to its current head SHA — there is no semver tag for it).
permissions::ci.ymlandgovulncheck.ymlget atop-level
permissions: { contents: read }.release.yml(
contents: write+pull-requests: writefor the Version Packages PR /tag push) and
release-cli.yml(contents: read; its privileged steps usethe
KIT_RELEASE_TOKENPAT, notGITHUB_TOKEN) keep their existing scopedblocks — no job needs the default token widened.
0.41.1viasetup-tinygo.binaryen's
apt-get installis intentionally left at the runner's aptcandidate (documented inline in
ci.yml): pinning a literalbinaryen=<ver>hard-fails the install whenever
ubuntu-latest's candidate moves, and TinyGo— the toolchain that actually shapes the wasm — is the pinned input that
matters. This is the one install that could not be safely version-pinned.
.github/dependabot.ymlcoversgomodandgithub-actions(weekly), so the SHA pins (and their
# vX.Y.Zcomments) are bumpedautomatically as new releases land.
No CI logic changed — only pins, permissions, and the new Dependabot config.
Verification
actionlint(v installed in CI image) — clean on all four workflows.gh api …/commits/<tag>andconfirmed byte-identical to the committed pins.
.github/**(workflows + dependabot).Could not run the workflows end-to-end here (they require GitHub-hosted runners
the meaningful gate for a pins/permissions-only change.
Reviewers, focus on
permissions:scoping decisions (esp. thatrelease-cli.ymlis fine atcontents: readbecause it authenticates with theKIT_RELEASE_TOKENPAT).dtolnay/rust-toolchain# stablepin — it is a moving tag head, soDependabot's github-actions ecosystem will track it.
🤖 Generated with Claude Code