GitHub Actionsのpermissionsは未指定だとreadがデフォルト
GitHub Actionsでpermissionsを明示的に書くと、書かなかったスコープはすべてnoneになる。一方、permissionsキー自体を省略すると、リポジトリ設定に依存する(多くの場合read)。
# これだと issues: write 以外は全部 none になる
permissions:
issues: write
# issueコメントだけしたい場合でも contents: read が必要なケースがある
permissions:
contents: read
issues: write
id-tokenだけはデフォルトがnone(他のスコープと違う)。OIDC認証が必要な場合は明示的にid-token: writeを追加するghコマンドはGitHub-hosted runnerにプリインストールされているので、別途インストール不要。GITHUB_TOKENも自動で設定される- CIでAIエージェントにgitやghコマンドを使わせる場合、permissionsの設定が実質的なサンドボックスになる。必要最小限のスコープだけ与えることで、エージェントの行動範囲を制限できる
refs: https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token