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 を明示する必要があります。
よくある原因
- 既定が read-only: リポジトリや Organization の設定で GITHUB_TOKEN が読み取り専用になっている。
- permissions 未指定: ワークフローに権限宣言が無く、必要な書き込みができない。
- Fork からの PR: セキュリティ上、Fork 由来の実行ではトークンが read-only に制限される。
- スコープ不足: Packages や Pages など、対象機能のスコープを付け忘れている。
解決策
1. ワークフローに権限を宣言する
必要最小の権限を明示します。
トップレベルに書くと全 job に適用されます。
permissions:
contents: writejob 単位で絞ることもできます。
jobs:
release:
permissions:
contents: write
packages: write2. 既定設定を確認する
リポジトリの Settings → Actions → General → Workflow permissions で、既定が「Read repository contents permission」のみになっていないか確認します。
組織で固定されている場合は管理者に依頼します。
3. Fork PR の扱い
Fork からの PR では書き込みトークンが渡りません。
書き込みが必要な処理は、トリガや実行タイミングの設計を分けて安全に扱ってください。