Lesstep
GitHub Actions・npm・2026年11月3日に確認

GitHub Actions:npm publish が「ENEEDAUTH」で失敗する

ジョブに npm のトークンが無いとき、npm publish は trusted publishing に頼ります。npm が GitHub に OIDC のトークンを頼み、レジストリで短い時間だけ使える公開用のトークンに換えます。このどこかで失敗しても、npm は標準のログでは何も言いません。認証情報の無いまま進み、「need auth」で止まります。エラーは結果で、理由は、こちらから頼まないと出ないログの行にあります。

見え方

npm error code ENEEDAUTH
npm error need auth This command requires you to be logged in to https://registry.npmjs.org/
npm error need auth You need to authorize this machine using `npm adduser`

npm に理由を表示させる

npm の lib/utils/oidc.js は、コマンドを失敗にしません。あきらめる道はどれも、verbose か silly のログに1行出るだけです。一度だけ、次のように公開します:

- run: npm publish --loglevel silly

そして oidc を含む行を探します:

交換を断られたあとで --loglevel verbose を足したプロジェクトがいくつもあります(duskfleet #314・agentboard #71)。verbose ではレジストリの理由は出ますが、権限が無いことは silly にしか出ません。

1. npm が 11.5.1 より古い

npm のドキュメントには、trusted publishing は「requires npm CLI version 11.5.1 or later and Node version 22.14.0 or higher.」(npm CLI 11.5.1 以降と Node 22.14.0 以上が必要)とあります。Ubuntu 24.04 のランナーのイメージに入っているのは Node.js 22.23.4 と npm 10.9.9 で、setup-node で node-version: '22' にしても npm は 10 です。Node 24 を入れないジョブは、試しもしない npm で公開します。homeboy のリリースのアクションは、Node の版を書いていない部品では Node のセットアップを飛ばしていて、その公開が ENEEDAUTH で失敗しました(#17247)。

- uses: actions/setup-node@v7
  with:
    node-version: '24'
- run: npm --version
- run: npm publish

Node の版を変えないなら、公開の前に npm install -g npm@latest を実行します。

2. id-token: write が無い

これが無いと、ジョブには GitHub に OIDC のトークンを頼む手段がありません。ジョブの permissions: はワークフローのものを置き換えるので、公開のジョブに自分の permissions: があるなら、そこにも要ります。公開が再利用可能なワークフローの中で動くなら、npm のドキュメントは、この権限は「must also be given to both parent and child workflows.」(呼ぶ側と呼ばれる側の両方に与える必要がある)と書いています。

permissions:
  contents: read
  id-token: write

3. trusted publisher が実行と合わない

npm は、npmjs.com のパッケージの設定に入れた内容と実行を照らし合わせます。保存するときには中身を確かめません。どの欄も大文字と小文字を区別します。

4. セルフホストランナー

npm のドキュメントには「Self-hosted runners are not currently supported but are planned for future releases.」(セルフホストランナーはいまは対応しておらず、今後の予定)とあります。GitHub のホストランナーから公開するか、そこではトークンを使います。

見分け方

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

GitHub・GitHub Actions は GitHub, Inc. の商標、npm は npm, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・npm, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:AWS:「Not authorized to perform sts:AssumeRoleWithWebIdentity」 · 「Node.js 20 is deprecated」の警告 · 「Input required and not supplied」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English