Skip to content

Build Not yet confirmed elsewhere1 publisher 2 min read Published

Once a workflow has an actions.lock entry, a moved tag no longer changes what GitHub Actions runs

GitHub's Actions lockfile, in public preview since October 2026, pins each action in a workflow to a commit SHA, DEV Community reports. A pinned commit that vanishes fails the run, so teams trade silent drift for hard errors.

The Engineer · Build desk

Send a correction

Lockfiles batch action updates into one diff Changes to review for 10 action updates: one pull request each, against one lockfile update whose diff shows all changes.

For 10 action updates, the count falls from 10 pull requests to one lockfile update, with a diff showing all the changes.

Lockfiles batch action updates into one diff
MeasureValueAs ofClaim
Pull requests10 per 10 updates16
Lockfile update1 per 10 updates16

What happened

  • At run time GitHub Actions reads the lockfile and executes the recorded commits, ignoring tag movements, while the workflow file keeps its readable tags.
  • The lockfile sits at .github/workflows/actions.lock and maps each action reference to a resolved commit SHA and an integrity value.
  • The gh actions-lock generate command walks the dependency graph and recursively resolves composite actions, so nested actions get pinned too.
  • Administrators can set a Require lockfile policy at the enterprise, organization or repository level.

Why it matters

  • What it costs cost A pinned commit or action repository that disappears upstream becomes a failed build on your side, because lockfiles keep no cache and have no automatic fallback.
  • What it limits constraint Under the Require lockfile policy a stale lockfile fails the run and manual runs cannot bypass it, so any workflow edit that adds an action has to regenerate the lockfile first.
  • Who has to decide decision Enforcement is per workflow, so a team can lock the workflows with write permissions or secrets first and defer the rest.
  • Who's exposed exposure The lockfile fixes what runs but does not vet the commit it recorded, so the review of each update diff is the control that matters.

A tag is a Git reference, and references move. If v4 points at one commit today and another tomorrow, the workflow runs different code with no change to the repository [1]. A review of the workflow file has nothing to see. The DEV Community post lists four routes to that outcome: maintainer account takeover, force-pushed tags after code review, compromised release automation, and transitive dependencies in composite actions [18].

Dependabot already pins actions to full SHAs in workflow files, but each SHA update then needs a pull request and a manual review [2]. The lockfile moves the pin out of the workflow definition [3]. The post's example is ten action updates arriving as one lockfile diff in place of ten pull requests [16]. That count is illustrative. It transfers only if the updates land together, and the person reviewing the single diff still has to read ten upstream changes. The post adds that Dependabot can update lockfiles automatically [17].

The hard failure is the design choice to look at. The post defends it: a deleted commit signals either repository corruption or an attempt to hide malicious code, and failing loudly is safer than falling back to a mutable reference [11]. We think that is the right tradeoff where a workflow holds secrets or write permissions. It is a harsh one for a disposable build that only needs to go green.

The post is the only source here. Its sample shows an integrity field beside each resolved SHA, but it does not say what the field hashes or when GitHub checks it [5].

What to watch

  • GitHub's own documentation for the preview: what the integrity field hashes and when the runner verifies it.
  • Whether Dependabot's lockfile updates group several action bumps into one pull request, since the ten-to-one example depends on it.
  • How the Require lockfile policy treats an emergency manual run when the lockfile is stale.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence30
Adoption
Not scored
Hype gap+20
Incentives
Not scored
Confidence35
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Tags are Git references that can move; if v4 points to one commit today and another tomorrow, the workflow executes different code without any change to the repository.

    Reported Supported Source: DEV Community postView cited source
  2. [2]

    Dependabot can pin actions to full SHAs in workflow files, but every SHA update then requires a pull request and manual review.

    Reported Supported Source: DEV Community postView cited source
  3. [3]

    Lockfiles separate the pinning mechanism from the workflow definition.

    Reported Supported Source: DEV Community postView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 16, 2026

    GitHub Actions Workflow Lockfiles: How Pinned Action Versions Prevent Supply-Chain Attacks in CI/CD Pipelines

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Loading related stories