pnpm 11.11.0で追加されたpnpm accessコマンドで何ができるか確認してみた

pnpm 11.11.0で追加されたpnpm accessコマンドで何ができるか確認してみた

pnpm 11.11.0 で追加された `pnpm access` コマンドについて、リリースノートと実装を基に試してみました。npm access と同じ体系で、レジストリ上のパッケージ公開範囲やチームアクセスを CLI から操作できるコマンドです。
2026.07.12

どうも!オペ部の西村祐二です!

2026年7月にリリースされた pnpm 11.11.0 で、pnpm access コマンドが追加されました。npm の access コマンドと同じ体系で、レジストリ上のパッケージ公開範囲やチームアクセスを CLI から操作できるコマンドです。

ただ、執筆時点では pnpm 公式ドキュメントに pnpm access のページがまだありません。そこで、リリースノートと実装PRを一次情報として、手元の 11.11.0 で実際に動かしながら整理してみました。なお、同じ 11.11.0 にはセキュリティ修正(依存インストール時の path traversal 対策)も入っていますが、この記事では新コマンドの pnpm access に絞ります。

pnpm access で何ができるか

pnpm access は、npm レジストリ上のパッケージに対する「誰が何をできるか」を操作するコマンドです。対象は大きく3つあります。

  • 公開範囲: パッケージの public / private(限定公開)状態の取得・変更
  • 2FA の要求レベル: パッケージ単位で、publish 時などに 2FA を要求するかの設定
  • チームアクセス: organization のチーム(scope:team)への read-only / read-write 権限の付与・剥奪

npm には以前から npm access があり、pnpm access はそのサブコマンド体系を踏襲しています(実装は PR #12816)。pnpm では 11.0whoamipingdist-tag などの npm CLI への委譲をやめてネイティブ実装に置き換えるなど、レジストリ操作系コマンドを pnpm 本体に取り込む流れが続いており、pnpm access もその一つです。

試してみる

環境

  • pnpm 11.11.0
  • Node.js v22.22.2 / corepack 0.34.6
  • macOS

corepack を使い、package.jsonpackageManager フィールドに pnpm@11.11.0 を指定してバージョンを固定しています。

1. サブコマンド一覧を確認する

pnpm access --help を実行すると、次のサブコマンドが確認できます。

$ pnpm access --help
Usage: pnpm access list packages [<user>|<scope>|<scope:team>]
       pnpm access list collaborators [<package> [<user>]]
       pnpm access get status [<package>]
       pnpm access set status=public|private [<package>]
       pnpm access set mfa=none|publish|automation [<package>]
       pnpm access grant <read-only|read-write> <scope:team> [<package>]
       pnpm access revoke <scope:team> [<package>]
サブコマンド 役割
list packages ユーザー・scope・チームがアクセスできるパッケージ一覧を表示
list collaborators パッケージのコラボレーター(ユーザーと権限)一覧を表示
get status パッケージの公開状態(public / private)を取得
set status=public|private パッケージの公開範囲を変更
set mfa=none|publish|automation パッケージ単位の 2FA 要求レベルを設定
grant <read-only|read-write> <scope:team> チームにアクセス権を付与
revoke <scope:team> チームのアクセス権を剥奪

--help のオプション欄では、共通オプションとして --registry <url> / --json / --otp <code> が確認できます。

2. 読み取り系を実行してみる

書き込み系(set / grant / revoke)はレジストリ上の実パッケージの設定を変更してしまうため、今回は読み取り系だけ実行しました。認証なしの状態で public パッケージに対して実行すると、次のようになります。

$ pnpm access get status is-positive
[ERR_PNPM_REGISTRY_ERROR] Failed to get status of package:
405 Method Not Allowed. GET is not allowed

$ pnpm access list packages
[ERR_PNPM_PACKAGE_NOT_FOUND] Package not found in registry. /-/-/package does not exist

どちらもエラーになりましたが、コマンドはレジストリまで到達しており、レジストリ側の応答が pnpm のエラーコードに変換されています。1つ目の 405 Method Not Allowed は、access 系エンドポイントが GET での照会を受け付けていないことを示しています。認証なしで気軽にパッケージの状態を眺める用途は想定されていない、と読めます。

つまり pnpm access は「public パッケージのメタ情報を眺めるコマンド」ではありません。pnpm login などで認証したうえで、自分が管理する scoped パッケージや organization の権限を操作するためのコマンド、という位置づけです。なお、認証ありでの動作と書き込み系は今回検証していません。--help を見る限り、2FA を有効にしたアカウントで書き込み系を実行する場合は --otp で OTP を渡す想定になっています。

現時点の注意点

公式ドキュメントがまだない(2026/7/12時点)

npm access との差分と共通の制約

npm access との差分が1つ、npm と共通の制約が1つあります。

npm access のドキュメントでは、パッケージ名を省略するとカレントディレクトリのパッケージに作用すると説明されています。一方 pnpm 11.11.0 で get status をパッケージ名なしで実行すると、次のエラーになりました。

$ pnpm access get status
[ERR_PNPM_ACCESS_GET_STATUS_PACKAGE_REQUIRED] Package name is required (e.g., pnpm access get status @scope/pkg)

また、unscoped なパッケージは npm のレジストリ仕様として常に public です(npm access のドキュメントに「Unscoped packages are always public.」と記載があります)。そのため、unscoped パッケージを set status で private にすることはできません。この点は npm と共通の制約です。

どんな場面で使えるか

試した範囲では、次のような場面で出番がありそうです。

  • scoped パッケージのメンテナ: 限定公開パッケージの公開範囲や、publish 時の 2FA 要求をコマンドラインで管理したい場合
  • organization の管理者: チーム単位のアクセス権の付与・剥奪を、Web UI ではなく CLI で扱いたい場合
  • npm CLI を併用している pnpm ユーザー: レジストリの権限操作だけ npm CLI に頼っていた構成を、pnpm に揃えたい場合

一方で、パッケージのメタ情報を見たいだけなら、認証不要の pnpm view が引き続き選択肢になります。

--help だけでもサブコマンド体系は把握できるので、npm access を使ったことがあれば移行の負担は小さそうです。

まとめ

  • pnpm 11.11.0 で、レジストリ上の公開範囲・2FA 要求・チームアクセスを操作する pnpm access が追加されました(npm access と同じサブコマンド体系)

  • 公式ドキュメントは執筆時点(2026/7/12時点)で未公開のため、詳細を確認するときは実装PRと --help の出力を見るのが確実です

誰かの参考になれば幸いです。


参考リンク:

この記事をシェアする

関連記事