GitHub Actions:「Unable to resolve action」
ジョブはどのステップも始める前に、使うアクションをすべてダウンロードします。そのうち1つが見つからなかった、という意味です(「アクションを解決できない」)。このワークフローからはリポジトリが見えないか、@ の後ろのタグ・ブランチ・コミットがそのリポジトリに無いかのどちらかです。ジョブはすぐに失敗しますが、コードには何の問題もありません。
見え方
2026年10月23日の公開の実行での、「Set up job」のログの最後です:
Prepare workflow directory Prepare all required actions Getting action download info ##[error]Unable to resolve action abinoda/slack-action, repository not found
リポジトリはあるのに参照が無いときは、最後がバージョンになります。10月のいくつかの報告に、こう引かれています:
Unable to resolve action `astral-sh/setup-uv@v10`, unable to find version `v10`
- ジョブにはステップが1つもありません。再実行しても、その間に足りないタグやリポジトリができていない限り、同じように失敗します。
- 失敗するのは、そのアクションを使うジョブだけで、それを
needs:にしたジョブはスキップされます。実行の中のほかのジョブは始まります。
「unable to find version」:参照が無い
- アクションがメジャーのタグを出さなくなった。
astral-sh/setup-uvは v8.0.0(2026年3月29日)でやめました。リリースノートはこれを最初の immutable なリリースと呼び、@v8や@v8.0はもう使えない、と書いています。なので@v10は無く、@v10.3.3はあります(setup-uv #1091)。 - タグの名前が変わった。
aquasecurity/trivy-actionにはいまv0.28.0はあっても0.28.0はありません。リリースは2026年3月20日、タグが書き換えられたと報告された日に出し直されています(trivy-action #541)。 - ブランチの名前が変わった。
Homebrew/actionsは既定のブランチをmasterからmainに変え、@masterの参照はすべて解決できなくなりました(homebrew-arm #88)。 - タグが一度も出ていなかった。README には
@v1と書いてあるのに、リポジトリにはタグもリリースも1つも無かった例があります(helpers4/action #20)。 - コミットの SHA がそのリポジトリに無い。たとえば、push されなかったコミットの SHA を README から写した場合です(FerrLabs/Fixtures #269)。
「repository not found」:名前がリポジトリに届かない
- 持ち主か名前が少し違う。10月の報告には、
dtolnay/rust-action(正しくはdtolnay/rust-toolchain)、amonddev/vercel-action(amondnet/vercel-action)、tessl/setup-tessl(tesslio/setup-tessl)、そして存在しないactions/setup-pages(Pages はactions/configure-pagesを使う)があります。 - リポジトリが消された。
redhat-actions/crdaはいま 404 を返し、まだ使っているワークフローはスキャンを始める前に失敗します(music-mood-matcher-demo #24)。 - リポジトリが非公開。非公開のリポジトリのアクションを使えるのは、同じユーザーか Organization の非公開のリポジトリだけで、それも持ち主が Settings、Actions、General の Access で開いてからです。そうでなければ、ほかのリポジトリには「repository not found」と出ます(structural-llm-wiki #34)。共有のアクションを、この理由で公開のリポジトリに移した会社もあります(Calamari #2198)。
- 似た名前が別のリポジトリに届くことがある。
trufflehog/trufflehogは古い別のプロジェクトtruffle-hog/truffle-hogに転送され、そこにはmainのブランチが無いので、エラーは「unable to find versionmain」でした。アクションはtrufflesecurity/trufflehogです(wedding2027 #4)。
使う前に参照を確かめる
# the repository it reaches (a renamed one prints its new name) gh api repos/astral-sh/setup-uv --jq .full_name # the tags that start with v10 gh api repos/astral-sh/setup-uv/git/matching-refs/tags/v10 --jq '.[].ref' # whether a tag, branch or SHA resolves to a commit (an error means it does not) gh api repos/astral-sh/setup-uv/commits/v10.3.3 --jq .sha
1つ目は届いた先のリポジトリの名前(名前が変わったものは新しい名前)、2つ目は v10 で始まるタグ、3つ目はタグ・ブランチ・SHA がコミットに解決できるか(エラーなら解決できない)を出します。そのうえで、完全なバージョンか、コミットの SHA にバージョンをコメントで添えて書きます。SHA なら、あとでタグが動かされたり消されたりしても動き続けます:
- uses: astral-sh/setup-uv@v10.3.3 # or - uses: astral-sh/setup-uv@<full commit SHA> # v10.3.3
pull_request_target で動くワークフローはベースのブランチから読まれるので、プルリクエストの中の直しは、そのプルリクエスト自身の実行には効きません。先に直しを既定のブランチにマージしてから、再実行します。
見分け方
- エディターに「Unable to resolve action, repository or version not found」と出るのに実行は通る:これは VS Code の GitHub Actions 拡張機能の警告です。10月には、一部の SHA の固定とローカルの
$/のアクションを解決できないと報告されていました(vscode-github-actions #637・#638)。実行が通るなら、ワークフローに問題はありません。 - 「The action ... is not allowed in ... because all actions must be from a repository owned by your enterprise」は、アクションは見つかったが、Organization か Enterprise の許可するアクションの決まりで止められた、という意味です。管理者に許可の一覧へ足してもらいます。
- ジョブは動き、アクションが Node.js 20 向けだという警告が出た:アクションは解決できていて、古いのはバージョンだけです(Node.js 20 の警告)。
失敗したジョブを 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 のいずれとも提携しておらず、承認も受けていません。
ほかに:「Node.js 20 is deprecated」の警告 · 「Resource not accessible by integration」 · ランナーに取られないジョブ · 「Invalid workflow file」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English