Lesstep
GitHub Actions · actions.lock · Checked November 5, 2026

"lockfile missing pin for …": GitHub Actions workflow lockfiles (actions.lock), the job that fails in Set up job, and how to regenerate the lockfile

Since October 28, 2026, a repository can lock the actions its workflows use, and the actions those actions use, in .github/workflows/actions.lock (GitHub changelog; public preview from October 14). The file is generated by gh actions-lock, an extension for the GitHub CLI, and workflows are onboarded one at a time. Once a workflow is onboarded, GitHub Actions runs the commits recorded in the lockfile, and every action the workflow uses must have an entry. When one is missing, the run usually stops before any step. The fix is to run gh actions-lock again and commit the workflow and the lockfile together, not to edit the lockfile by hand.

What it looks like

When an action that another action calls has no entry, every job of the workflow fails in Set up job, naming the action and the reference (msgvault #1740, November 2, 2026):

##[error]lockfile missing pin for actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9

In that repository, every run on main and on every pull request failed this way after one merge, whatever the pull request changed, and re-running did not help. When the calling action comes from another repository, the log shows it being downloaded first (cicd-suite #33):

Download action repository 'hyperpolymath/cicd-suite@c5270b0e0a0a7177d6ee77fc4451f38978b612f0'
##[error]lockfile missing pin for hyperpolymath/deed-ecosystem@f9d999b60cb5f383679ea19912bcdc49c944973a

When a uses: line of the workflow itself has no entry, the run fails before any job starts, as an invalid workflow file that references actions not present in the lockfile (metadatastician/standards #784), with no jobs in the run (statistikles #117). Both reports are from before the public preview.

An action used with a ./ path is the exception. If it calls an action with no entry, the job fails when it reaches that step, and the steps before it have already run, GitHub's documentation says.

Why

The lockfile has two sections. workflows lists the references each onboarded workflow uses, and dependencies records, for each reference, the tag or branch, the commit, and the numeric owner_id and repo_id of the repository. Entries are keyed by owner/repo@ref, so the same commit under another ref, a SHA instead of a tag, has no entry. In msgvault, the lockfile recorded actions/cache@v6.1.0, and two composite actions in the repository, called as $/.github/actions/go-cache-restore and $/.github/actions/go-cache-save, used actions/cache/restore@55cc8345… # v6.1.0: the same commit, by SHA.

The usual ways to get there:

Fix

From the root of the repository:

gh extension upgrade gh-actions-lock
gh actions-lock --verify
gh actions-lock

--verify runs the same checks without changing any file, and names a category for each problem (below). The plain run adds the missing entries and removes the ones no workflow uses. It can also rewrite uses: lines to the version it resolved, so @v3 can become @v3.1.0 at the same commit. Review the whole diff, and commit the workflows and the lockfile together.

Or change the uses: line to the reference the lockfile already records. msgvault fixed it that way (msgvault #1727):

-      uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
+      uses: actions/cache/restore@v6.1.0

The extension's troubleshooting guide says not to edit the lockfile by hand, since the extension rejects entries that do not match their references, and not to delete it to make an error go away. Locked references are sticky: without the file, every reference resolves again to what it points to today, and a tag that moved is accepted without a warning. To undo changes, restore it from the default branch (here main) and regenerate it:

git fetch origin
git checkout origin/main -- .github/workflows/actions.lock
gh actions-lock

If an action used with a ./ path calls other actions, the extension reports a local-action error and writes nothing. gh actions-lock --migrate-local-actions rewrites ./ to $/, which runs the action at the workflow's own commit and locks what it calls. --ignore-local-actions keeps ./, and leaves what it calls without entries.

What gh actions-lock --verify reports

Each problem has a headline and a category. It exits with 0 when no errors remain, 1 when a finding blocks, and 2 when the tool itself failed, for example on a lockfile it cannot read. From the troubleshooting guide in the gh-actions-lock repository:

Adopting the lockfile

gh extension install github/gh-actions-lock
gh actions-lock

That onboards every workflow under .github/workflows; pass a path such as .github/workflows/ci.yml to onboard one. Before you commit, GitHub's documentation lists three things to check:

To keep it current, GitHub suggests a workflow that runs gh actions-lock --verify on pull requests as a required check (verify-lockfile.yml in the gh-actions-lock repository is an example), and the lockfile in CODEOWNERS, so that someone reviews each changed commit. Administrators can also set the Require lockfile policy, which blocks runs of the targeted workflows that are not onboarded, including workflows with no uses:, and the run of a workflow that calls a reusable workflow not onboarded in its own repository.

Telling it apart

See failed jobs from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, so a run that stopped in Set up job stands out, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

Get it on JetBrains Marketplace

GitHub and GitHub Actions are trademarks of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc. or JetBrains.

More: "Unable to resolve action" · "Invalid workflow file" · the free-disk-space move · GitHub Actions plugins for IntelliJ IDEA compared · 日本語