GitHub Actions から Node 20 が消え、opt-out 環境変数も効かなくなった
2026年9月23日で GitHub Actions ランナーから Node 20 が外れた。ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION での据え置きはもう効かない。公開側・利用側・セルフホストの確認点。
2026年9月23日で GitHub Actions ランナーから Node 20 が外れた。ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION での据え置きはもう効かない。公開側・利用側・セルフホストの確認点。
2026年9月23日付の GitHub Changelog が、Node 20 について最終告知を出した。GitHub Actions のランナーは JavaScript アクションを Node 24 で実行する。2026年6月16日に既定が Node 24 へ切り替わったあとも ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true を置いて Node 20 のまま動かしていたワークフローは、その退避先を失った。
告知は opt-out について「The temporary ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is no longer available」と書く。変数を残したままのワークフローがどう扱われるのか、警告が出るのか黙って無視されるのかは、今回の告知にも前身の予告記事にも書かれていない。ワークフローの env や、ランナーマシンの環境変数として設定している側は、行が残っていても効き目はないと考えるところまでしか読み取れない。
この変数は最初から期限付きだった。予告記事は、2026年6月16日以降も Node 20 を使い続ける手段としてこの変数を案内しながら、ランナーを上げて Node 20 を削除する2026年9月23日までしか効かないと同じ段落で断っていた。告知はその予定どおりの締めくくりになっている。
| 時期 | JavaScript アクションの既定 | ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION |
|---|---|---|
| runner v2.328.0 | Node 20(Node 24 も同梱) | 案内なし。FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true で Node 24 を先行テスト |
| 2026年6月16日以降 | Node 24 | true で Node 20 に据え置き |
| 2026年9月23日以降 | Node 24 | 利用できない |
出典:GitHub Changelog「Deprecation of Node 20 on GitHub Actions runners」(2026年8月25日の editor’s note を含む)および「Node 20 is no longer available in GitHub Actions」
JavaScript アクションを公開している側への指示は一点だけだ。runs.using の値を node24 に変え、新しいリリースをできるだけ早く出す。詳細として案内されているのは JavaScript アクションの metadata syntax のページで、告知自体は値の変更以上のことを書いていない。
ビルド構成やランタイム API の差分、Node 24 で動かしたときの互換性の注意は、この告知の範囲に入っていない。バージョン値を変えるだけで済むかどうかは、アクションの中身しだいになる。
ワークフローで他人のアクションを使っているだけなら、Node 24 に対応した最新版へ参照を上げる。GitHub の first-party アクションは、最新版がすでに Node 24 を使うと明記されている。ただしどのバージョンから対応したのかという数字は、今回の告知には出てこない。
サードパーティのアクションについては、告知は対応状況に触れていない。メジャータグで固定しているか、コミット SHA で固定しているかで、上げ方も確認の手数も変わる。GitHub ホストのランナーを使っているなら、ubuntu-latest の切り替えと同じ時期の棚卸し対象になる。
Node 24 は macOS 13.4 以前と互換性がなく、ARM32 を公式にはサポートしない。この OS またはアーキテクチャで動かしているセルフホストランナーは、サポート対象外になった。条件そのものは予告記事の時点で同じ内容が書かれていて、今回動いたのは日付のほうだ。
サポート対象外がジョブの失敗を意味するのか、動くが保証しないという意味なのかは、どちらの changelog にも書かれていない。macOS 13.4 以前のマシンを Intel Mac の残りで抱えている場合、影響の有無を判断する材料は告知の文言だけでは足りない。
予告記事には editor’s note が三つ残っている。2026年2月25日に移行を2026年6月へ、2026年5月19日に2026年6月16日へ、2026年8月25日に Node 20 の削除日を2026年9月23日へ更新した、という履歴だ。Node 20 の EOL 自体は2026年4月と書かれている。
同じページの本文は、全アクションを2025年の秋に Node 24 へ移行する計画だと書いたまま残っていて、editor’s note の日付と食い違う。本文だけが更新されなかったと見るのが自然な読み方だが、ページ上はどちらが正本か決まらない。日付を引くなら editor’s note 側、というのがこの記事の推測にすぎない扱いになる。
適用範囲として名前が挙がっているのは github.com と GitHub with Data Residency の二つで、GitHub Enterprise Server への言及は告知にない。閉域で GHES を運用しているなら、同じ日程で動くかどうかはこの告知からは分からない。
github.com または GitHub with Data Residency で、2026年9月23日以降に対象の JavaScript アクションを含むジョブが通っているなら、その実行では Node 24 が使われたと読める。ただし、ワークフロー全体の通過だけでは JavaScript アクションを実行したか、セルフホストランナーや GHES が同じ条件かまでは分からない。落ちているなら、告知が挙げている条件は参照しているアクションのバージョンと、セルフホストランナーの OS・アーキテクチャの二つだ。これは他の原因を否定するものではなく、告知の範囲で先に潰せる二点という意味である。