npm v12でnpm installのデフォルト動作を変更へ⁠スクリプト実行やGit⁠リモートURL依存を明示許可制に

GitHubは2026年6月9日、2026年7月にリリースされる見込みの次期メジャーバージョン「npm v12」で、npm installのデフォルト動作をセキュリティを重視する方向へ変更すると案内した。この変更により、依存パッケージが持つインストール時スクリプトは明示的に許可しない限り実行されず、Git依存とリモートURL依存も明示的に許可しない限り解決されなくなる。現在は自動で実行・解決されている処理を、利用者が明示的に許可する方式へ切り替える変更で、npm 11.16.0以降では警告として事前に確認できる。

npm v12では、allowScriptsがデフォルトでオフになる。プロジェクトで許可されていない依存パッケージが持つpreinstallinstallpostinstallスクリプトは、npm install時に実行されなくなる。ネイティブモジュールのビルドも対象で、binding.gypを持つパッケージでnpmが暗黙的にnode-gyp rebuildを実行する場合もブロックされる。Git、file、link依存のprepareスクリプトも同じ扱いになる。

移行前に確認するには、npm 11.16.0以降で通常のインストールを実行し、警告を確認する。どのパッケージのインストール時スクリプトが許可されていないかを一覧するには、npm approve-scripts --allow-scripts-pendingを使う。信頼するパッケージはnpm approve-scriptsで許可し、それ以外はnpm deny-scriptsで拒否する。許可リストはpackage.jsonallowScriptsフィールドに書き込まれるため、GitHubは更新後のpackage.jsonをコミットするよう案内している。

Gitリポジトリを参照する依存関係も、直接依存か推移的依存かにかかわらず、--allow-gitで明示的に許可しない限り解決されなくなる[1]。GitHubは、Git依存に含まれる.npmrcがGit実行ファイルのパスを上書きでき、--ignore-scriptsを使っていても[2]コード実行につながる経路を閉じるための変更だと述べている。

--allow-remoteは、HTTPS tarballなどのリモートURLを参照する依存関係を制御するフラグで、npm 11.15.0で追加されていた。npm v12では、これも明示的に許可しない限りnpm installで解決されなくなる。関連する--allow-file--allow-directoryは、対象をすべて許可するallがデフォルト値のまま変更されない。

おすすめ記事

記事・ニュース一覧