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

GitHub Actions:「Permission to ... denied to github-actions[bot]」

ワークフローの中の git push が断られました。github-actions[bot] は GitHub が GITHUB_TOKEN に付けて見せる名前なので、push はジョブ自身のトークンで送られ、そのトークンがメッセージに出ているリポジトリに書き込めなかった、ということです。

見え方

remote: Permission to grafana/grafana.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/grafana/grafana/': The requested URL returned error: 403
##[error]The process '/usr/bin/git' failed with exit code 128

これは grafana #136263 の週1回のジョブのものです。1行目の名前を2つ読みます。「Permission to」のあとのリポジトリが push 先、「denied to」のあとのアカウントが git がサインインした相手です。自前のトークンで push したつもりなのに github-actions[bot] と出るなら、4へ進みます。

1. トークンが読み取りだけだった

contents: write はワークフロー全体でなく、push するジョブだけに付けます。gemma への直しの提案は、ドキュメントを1つ目のジョブで作り、gh-pages への push を2つ目のジョブでします。書き込みの権限を持つのはそのジョブだけで、プロジェクトのコードは動かしません:

jobs:
  deploy:
    needs: generate
    permissions:
      contents: write

2. ワークフローに何を書いても読み取りだけのトークンになる実行

3. push 先が別のリポジトリだった

GitHub のドキュメントには、トークンの権限はワークフローがあるリポジトリに限られる、とあります。permissions の行では変えられません。「Permission to」のあとの名前を、自分のリポジトリと見比べます:

別のリポジトリには、GitHub App のトークン(actions/create-github-app-token)か、そのリポジトリに書き込める fine-grained の個人アクセストークンをシークレットに入れて使います。そのあとで4も確かめます。checkout が自分のトークンを送り続けることがあるからです。

4. 自前のトークンはあったのに、checkout のトークンが送られた

actions/checkout は、persist-credentials: false にしない限りトークンをローカルの git の設定に保存し、その保存されたヘッダーは push の URL に書いたトークンより優先されます。この2か月にマージされた直しが3つあります:

checkout にトークンを保存させないか、自前のトークンを checkout に渡して、保存されるほうを自分のトークンにします:

- uses: actions/checkout@v7
  with:
    persist-credentials: false

# or
- uses: actions/checkout@v7
  with:
    token: ${{ secrets.DEPLOY_TOKEN }}

見分け方

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

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

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

ほかに:「could not read Username for 'https://github.com'」 · 「Resource not accessible by integration」 · 「API rate limit exceeded for installation」 · 「Input required and not supplied」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English