Skip to content

Pin third-party actions to SHAs on the three write-scoped workflows (implements the #499 split) #660

Description

@BaseInfinity

What's the gap

CODE_REVIEW_EXCEPTIONS.md was re-decided on 2026-08-16 (#499): tag pinning is no longer accepted on any workflow that can write. That entry records the decision. Nothing implements it. Three workflows currently hold write scopes and reference actions by moving major tags.

workflow write scopes actions to pin
release.yml contents, id-token actions/checkout@v5, actions/setup-node@v5
weekly-update.yml contents, pull-requests, actions peter-evans/create-pull-request@v8
weekly-api-update.yml contents, issues (audit — none found in the action scan, confirm)

Why this is worth doing, stated honestly

Not because a compromise is likely. Because the blast radius is asymmetric and the fix is ~5 lines.

release.yml holds id-token: write and runs npm publish — a moved tag there mints npm provenance for whatever it publishes. The sharper exposure is weekly-update.yml, which runs a genuinely third-party action (peter-evans/create-pull-request) while holding contents: write and actions: write. actions: write can rewrite workflow files. Whatever it lands on main gets published by release.yml at the next tag. The path to npm runs through the workflow that does not look privileged.

Scope

What this must not become

Verification

Pinning is only correct if the SHA actually corresponds to the tag it replaces. Resolve each with gh api repos/OWNER/REPO/git/ref/tags/vN and record the resolved SHA in the PR body. A pin to an unverified SHA is strictly worse than a tag — it looks rigorous and points nowhere in particular.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions