shwldshwld14 days ago

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