「The action actions/cache@v4 is not allowed in … because all actions must be pinned to a full-length commit SHA」:入れ子のアクション・固定の仕方・設定の置き場
このメッセージは、アクションのポリシー「Require actions to be pinned to a full-length commit SHA」から出ます。リポジトリ・Organization・Enterprise のどこでも有効にできます。有効になると、タグやブランチで使うアクションがあるジョブは Set up job で止まります。コンポジットアクションが中で呼ぶアクションも対象なので、uses: の行をすべて固定したワークフローでも失敗することがあります。2026年8月1日から11月5日の間に、この文を含む GitHub の issue とプルリクエストが約690件ありました。
見え方
Error: The action actions/cache@v4 is not allowed in DefinedNet/mobile_nebula because all actions must be pinned to a full-length commit SHA.
(mobile_nebula #415。Android と iOS のジョブがすべて Set up job で失敗しました。)複数あると全部並びます:「The actions actions/checkout@v5, oven-sh/setup-bun@v2, and actions/upload-artifact@v4 are not allowed in …」(hci-museum #149)。リリースのときだけ動くワークフローは、CI が通ったずっと後に失敗することがあります。gom-jabbar #110 では、デプロイが始まる前に断られました。開発ブランチの CI はデプロイのワークフローを動かしていなかったので、そこでは出ませんでした。
設定の置き場
- リポジトリの Settings → Actions → General の「Actions permissions」です。同じ設定が Organization と Enterprise にもあり、そちらで有効にされていると、リポジトリでは変えられないことがあります。
- 読むには:
gh api repos/OWNER/REPO/actions/permissionsに"sha_pinning_required": trueと出ます。 - GitHub のドキュメントでは、GitHub が作ったアクションや自分の Organization のアクションも含め、すべてのアクションが対象です。再利用可能なワークフローはタグで参照してかまわないので、
uses: OWNER/REPO/.github/workflows/build.yml@v1はそのまま動きます。
自分の行を固定する
gh api repos/actions/checkout/commits/v6 --jq .sha
で、タグが指すコミットが出ます。タグの代わりにそれを書き、版はコメントに残します(例:uses: actions/checkout@<40文字の SHA> # v6)。GitHub は、その SHA がフォークではなくアクション自身のリポジトリのものかを確かめるよう勧めています。
ブランチ名を入力として使うアクションもあります。dtolnay/rust-toolchain@nightly は ref でツールチェーンを選びます(shaq #175 はまさにこれでした)。SHA で固定するなら入力に toolchain: nightly が要り、README には、master ブランチの履歴にある SHA を選ぶようにとあります。それ以外のコミットは、いずれガベージコレクションで消えるためです。
そのアクションが自分のファイルに無いとき
書いた覚えのないアクションの名前が出たら、使っているコンポジットアクションが中で呼んでいます。固定した版のそのアクションの action.yml(か action.yaml)を開き、uses: を探します。
- 中まで固定しているリリースに外側のアクションを上げます。
actions/upload-pages-artifactの v3.0.1 はactions/upload-artifact@v4をタグで呼び、v4.0.0 は SHA で(v4.6.2)、v5.0.0 も SHA で(v7.0.0)呼びます。v4 からは隠しファイルがアーティファクトに入りませんが、gom-jabbar #110 では困りませんでした。 - 中まで固定したリリースがなければ、アクションを替えるか、その仕事を自分で書きます。
subosito/flutter-actionの v2.23.0 はいまもactions/cache@v5をタグで呼んでいて、mobile_nebula #415 によれば、メンテナーは固定を求めるプルリクエストを閉じています。flutter-actions/setup-flutterの v4.3 はactions/cacheを SHA で(6.1.0)呼びます。ステップをワークフローに写して、uses:を固定しても動きます。 - 自分の Organization のコンポジットアクションも、中の
uses:を固定する必要があります(report-deploy-github-action #93)。 - または、ワークフローのロックファイル
.github/workflows/actions.lockを使います。コンポジットアクションが呼ぶものも含めて、すべてのアクションのコミットを記録します。GitHub のドキュメントには、ロックした依存はワークフローのファイルを変えずにこのポリシーを満たすとあります(「lockfile missing pin」)。
見分け方
- 「Unable to resolve action」:固定していてもいなくても、その参照が存在しません(「Unable to resolve action」)。
- 「lockfile missing pin for …」:ワークフローはロックファイルに入っているのに、使うアクションの記録がありません(「lockfile missing pin」)。
- 実行がジョブ0本ですぐ失敗するのは、GitHub がワークフローのファイルを読めなかったときです(「Invalid workflow file」)。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、設定を有効にした後に Set up job で止まるワークフローが、たまにしか動かないリリース用のものも含めて分かり、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub・GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「lockfile missing pin」 · 「Unable to resolve action」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English