Kit: third-party actions float on their major tag; the reusables stay SHA-pinned - #55
Conversation
… SHA-pinned A SHA in templates/ is a pin nothing bumps (Dependabot scans .github/workflows/ only) while every fleet repo's Dependabot bumps its deployed copy the day a release ships, so the fleet always ran ahead of the kit and each wave rolled it back (foundrae-blackridge #174). The CLI binary already floats to current stable at every run, so a pinned action wrapper bought no supply-chain safety the CLI download had not already given away.
…p the forward-dated tag, update HANDOFF and the two docs the first pass missed; ignore minor/patch bumps of the action in the kit's Dependabot block
| SHOPIFY_STORE_NAME: "" | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| - uses: actions/checkout@v7 |
There was a problem hiding this comment.
🔴 Critical github/claude.yml:129
Using the mutable actions/checkout@v7 tag allows a future retagged or compromised release to execute before the privileged job with persisted write-capable GITHUB_TOKEN permissions, enabling arbitrary pushes or PR creation. Keep the audited commit SHA and update it deliberately.
| - uses: actions/checkout@v7 | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 |
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @templates/github/claude.yml around line 129:
Using the mutable `actions/checkout@v7` tag allows a future retagged or compromised release to execute before the privileged job with persisted write-capable `GITHUB_TOKEN` permissions, enabling arbitrary pushes or PR creation. Keep the audited commit SHA and update it deliberately.
Evidence trail:
Repository: https://github.com/DriverDigital/workflows
Reviewed commit: caf93c1c
File: templates/github/claude.yml lines 111-139, 129 specifically
Merge-base diff: templates/github/claude.yml changes `actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1` to `actions/checkout@v7`
Official documentation: https://github.com/actions/checkout/blob/main/README.md?plain=1 (default token, persist-credentials, authenticated Git commands)
There was a problem hiding this comment.
Assessed and kept as a floating tag, deliberately (Maria, 2026-09-10; now applied to every third-party action in the reusables as well, 7e4a417). The finding is right about what a SHA pin defends against: a retagged or compromised v7 on the step that runs first with a write-capable token. The policy behind this change is that the fleet's action refs stay current without a commit anywhere and without per-patch discrepancies between 20 repo branches; a breaking change is fixed after the fact rather than every patch being shepherded fleet-wide. On the residual risk: actions/checkout is GitHub-owned and its tags are moved by GitHub's own release process, and this job already trusts GitHub's runner image and token service entirely; the Anthropic action sits beside an install step that already fetches the CLI unpinned from the same vendor. The rationale comment in templates/github/claude.yml records the trade, including that the SHA covered one of two channels into the job. The kit's Dependabot block ignores minor/patch bumps so a floating ref cannot be silently rewritten into a pinned patch.
There was a problem hiding this comment.
Acknowledged—the risk is accepted intentionally, though the mutable checkout reference remains. Would you like me to prepare the SHA pin instead?
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR replaces audited action SHAs with mutable major tags and suppresses minor/patch Dependabot PRs, allowing future third-party releases to reach privileged workflows automatically. The change affects supply-chain and credential exposure in fleet templates, warranting human review. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
…oses majors only, here and in the kit
|
Approvability: not approved on risk; correctness check passed. The one finding (mutable |
Ends the class of drift foundrae-blackridge #174 showed: a SHA in
templates/is a pin nothing bumps (Dependabot scans.github/workflows/only) while a fleet repo's Dependabot bumps its deployed copy when the action releases, so the fleet always ran ahead of the kit and each wave rolled it back.claude.yml,lint.yml,shopify-tool-smoke.yml) —actions/checkout@v7,actions/upload-artifact@v7,anthropics/claude-code-action@v1. Dependabot leaves a major-tag ref alone until a new major exists; Anthropic re-pointsv1on every release. The rationale comment inclaude.ymlstates the marginal supply-chain cost honestly (the CLI install is already unpinned from the same vendor).dependabot.yml— ignores minor/patch bumps ofanthropics/claude-code-action, closing the reported edge where Dependabot bumps a major-tag ref to a patch anyway. Majors still flow.Kit-only change; ships as its own tag and wave so it reaches the fleet now rather than with the next reusable change.