できない.dev

GitHub Actions が GITHUB_TOKEN の権限不足(403)で push / API できない

GITHUB_TOKEN の既定権限が read-only だと書き込みを伴う操作は 403 Resource not accessible by integration で失敗する。
ワークフローに必要な permissions を明示すると解決する。

#github-actions#github-token#permissions#403#security

公開:

要約

ステップが 403 Resource not accessible by integration で落ちるのは、ワークフローが使う GITHUB_TOKEN に対象操作の権限が無いためです。

現在は既定が読み取り専用のことが多く、コミットの push やリリース作成などの書き込みには、ワークフロー側で permissions を明示する必要があります。

よくある原因

  1. 既定が read-only: リポジトリや Organization の設定で GITHUB_TOKEN が読み取り専用になっている。
  2. permissions 未指定: ワークフローに権限宣言が無く、必要な書き込みができない。
  3. Fork からの PR: セキュリティ上、Fork 由来の実行ではトークンが read-only に制限される。
  4. スコープ不足: Packages や Pages など、対象機能のスコープを付け忘れている。

解決策

1. ワークフローに権限を宣言する

必要最小の権限を明示します。
トップレベルに書くと全 job に適用されます。

permissions:
  contents: write

job 単位で絞ることもできます。

jobs:
  release:
    permissions:
      contents: write
      packages: write

2. 既定設定を確認する

リポジトリの Settings → Actions → General → Workflow permissions で、既定が「Read repository contents permission」のみになっていないか確認します。
組織で固定されている場合は管理者に依頼します。

3. Fork PR の扱い

Fork からの PR では書き込みトークンが渡りません。
書き込みが必要な処理は、トリガや実行タイミングの設計を分けて安全に扱ってください。

この記事は役立ちましたか?