npm 12
npm の次期メジャー v12 では、npm install のセキュリティ関連デフォルトが opt-in 化される。公開は 7 月頃の見込みで、変更は npm 11.16.0 以降で警告として確認できる。
各変更は、現在自動で走る挙動を明示的な許可に切り替える。
Git 依存の解決(--allow-git)
--allow-git の既定が none になる。直接・推移的な Git 依存は、--allow-git で許可しない限り解決されない。Git 依存の .npmrc が Git 実行ファイルを上書きし、--ignore-scripts でもコード実行に至る経路を塞ぐ変更で、2026 年 2 月の告知以降 npm 11.10.0 以降で試せる。
リモート URL 依存(--allow-remote)
--allow-remote の既定が none になる。https tarball などリモート URL 由来の依存(直接・推移的)は、明示許可がない限り解決されない。フラグは npm 11.15.0 以降で利用可能。--allow-file と --allow-directory の既定は v12 では変わらない。
install スクリプト(allowScripts)
allowScripts の既定が off になる。依存の preinstall / install / postinstall は、プロジェクトで明示許可しない限り実行されない。binding.gyp を持つネイティブビルドも、暗黙の node-gyp rebuild ごとブロックされる。git / file / link 依存の prepare も同様。
ブロック対象の確認と許可は npm approve-scripts / npm deny-scripts で行い、結果の allowlist は package.json に書き込まれコミット対象とする。
# 未レビューの install スクリプトを一覧(package.json は変更しない)
npm approve-scripts --allow-scripts-pending
# 信頼するパッケージを許可
npm approve-scripts <pkg> [<pkg> ...]
# 残りを拒否
npm deny-scripts <pkg> [<pkg> ...]移行前の準備
npm 11.16.0 以降へ上げ、通常の install を走らせて警告を確認する。npm approve-scripts --allow-scripts-pending でスクリプトを持つパッケージを洗い出し、信頼分だけ approve して package.json をコミットする。v12 移行後も approve 済みのスクリプトだけが実行され、未承認分は停止する。npx や global install 向けの設定は allow-scripts config を参照する。