Lesstep
GitHub Actions・OIDC・2026年11月4日に確認

GitHub Actions:「Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable」

ステップは、ACTIONS_ID_TOKEN_REQUEST_URL と ACTIONS_ID_TOKEN_REQUEST_TOKEN の2つの変数を通して GitHub に OIDC のトークンを頼みます。GitHub がこれを設定するのはトークンを持ってよいジョブだけで、このジョブはそうではありませんでした。アクションは Azure・AWS・Google Cloud などに届く前に止まったので、直すところはクラウドの信頼の設定ではなく、ワークフローのファイルです。

見え方

JavaScript のアクションの多くは @actions/core の core.getIDToken() で頼み、次のように失敗します:

Error: Error message: Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable

自分の言い方で出すアクションもあります:

1. ジョブの permissions に id-token: write が無い

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read

ジョブが何を持っていたかは、「Set up job」のステップで見られます。トークンを頼めるジョブなら、「GITHUB_TOKEN Permissions」のグループに IdToken: write があります。

2. フォークからのプルリクエスト

フォークからの pull_request の実行では、permissions のキーで読む権限は足したり外したりできますが、書く権限はふつう与えられません(GitHub のワークフローの構文)。ファイルに id-token: write と書いても効きません。例外は、管理者が「Send write tokens to workflows from pull requests」を有効にしたプライベートのリポジトリです。よくある報告は、ブランチでは通るのに外からのプルリクエストではどれも落ちるジョブで、Nextstrain の共有の CI もそうでした(nextstrain/.github #178)。抜け道:

3. 再利用ワークフロー

呼ばれたワークフローは、受け取った権限を下げることはできても上げることはできません(GitHub の再利用ワークフローのドキュメント)。呼び出し側のジョブに id-token: write が無ければ、呼ばれたファイルに書いても足りません。組織や企業の外の再利用ワークフローには、呼び出し側で明示するようドキュメントに書かれています:

jobs:
  deploy:
    permissions:
      id-token: write
      contents: read
    uses: octo-org/shared-workflows/.github/workflows/deploy.yml@v1

見分け方

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。ほかの製品名はそれぞれの持ち主の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:GitHub Actions の OIDC で Azure に入れない · GitHub Actions の OIDC で AWS に入れない · 「Resource not accessible by integration」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English