本文へスキップ
ecdsa.com
npm publish --provenance (npm 9.5+)パッケージマネージャー

エラーメッセージ

Automatic provenance generation not supported for provider: null

別の表記

  • Provenance generation in GitHub Actions requires "write" access to the "id-token" permission
  • Provenance generation in GitLab CI requires "SIGSTORE_ID_TOKEN" with "sigstore" audience to be present in "id_tokens".

GitHub Actions で `permissions: id-token: write` がない場合、メッセージは「Provenance generation in GitHub Actions requires "write" access to the "id-token" permission」となります(どちらも npm 11.19.1 で再現)。GitLab で `id_tokens` のエントリがない場合は、メッセージに `SIGSTORE_ID_TOKEN` が示されます(libnpmpublish のソースにある文言)。いずれも `EUSAGE` エラーです。プロバイダー名は、npm の CI 検出(`ci-info`)によって決まります。

npm publish --provenance (npm 9.5+) — libnpmpublish, code EUSAGE

このエラーの意味

`npm publish --provenance` は、どの CI ワークフローがパッケージをビルドしたかを示す、署名付きの SLSA 来歴ステートメントを作成します。npm がこれを行えるのは、OIDC アイデンティティを提供するサポート対象の CI システム(GitHub ホステッドランナー上の GitHub Actions、共有ランナー上の GitLab CI)の中だけです。Sigstore が署名用証明書に記載するのは、このアイデンティティです。`provider: null` は、npm が CI をまったく検出しなかったこと、つまりコマンドが開発者のマシンか、サポート対象外の CI で実行されたことを意味します。何も公開されていません。

発生する理由

修正方法

  1. 1.

    GitHub Actions のワークフローから公開する

    `id-token: write` を付与し、GitHub ホステッドランナー上で実行して、`--provenance` を付けて公開してください。npm の信頼できる公開(trusted publishing、OIDC)を使えば、npm トークンを完全に置き換えられます。

    yaml
    name: release
    on: { release: { types: [published] } }
    permissions:
      contents: read
      id-token: write          # lets npm obtain the OIDC token Sigstore needs
    jobs:
      publish:
        runs-on: ubuntu-latest   # GitHub-hosted runner
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with: { node-version: 24, registry-url: "https://registry.npmjs.org" }
          - run: npm ci
          - run: npm publish --provenance --access public
            env: { NODE_AUTH_TOKEN: "${{ secrets.NPM_TOKEN }}" }
  2. 2.

    または GitLab CI から公開する

    `id_tokens` の下で、オーディエンスが `sigstore` の ID トークンを要求してください。npm は `SIGSTORE_ID_TOKEN` からそのトークンを読み取ります。

    yaml
    publish:
      image: node:24
      id_tokens:
        SIGSTORE_ID_TOKEN:
          aud: sigstore
      script:
        - npm publish --provenance --access public

関連するエラー

署名エラーデータベースをすべて見る