CoodespacesのTokenのパーミッション

  • このエントリーをはてなブックマークに追加

GitHub Codespacesのデフォルトの権限設定は弱い。

トークンのスコープは、codespace が作成されたリポジトリへのアクセス権によって異なります。

基本的にはそのRepositoryに対する権限のみがGRANTされている。
他のレポジトリや組織範囲に対しての権限が必要な場合はdevcontainer.jsonに記述してrebuildする必要がある。

なお、devcontainer.jsonに指定できるRepositoryは1種類のみである。
1種類のみなので以下の設定はできない。仮に指定しても1番目の指定のみが有効になる。
複数指定したい場合は、ワイルドカードを利用するしかない。

{
"customizations": {
"codespaces": {
"repositories": {
"example-org/repo1": {
"permissions": {
"actions": "write",
"checks": "read",
"contents": "read",
"deployments": "write",
"discussions": "read",
"issues": "write",
"packages": "read",
"pages": "read",
"pull_requests": "write",
"repository_projects": "read",
"statuses": "write",
"workflows": "write"
}
},
"example-org/repo2": {
"actions": "read",
"checks": "read",
"contents": "read",
"deployments": "write",
"discussions": "read",
"issues": "read",
"packages": "read",
"pages": "read",
"pull_requests": "read",
"repository_projects": "read",
"statuses": "read",
"workflows": "read"
}
}
}
}
}

ワイルドカードを利用する場合は、以下のようになる。(example-org/*)
また、種別毎に指定しない場合は "permissions": "read-all", "permissions": "write-all" の記述が可能。

{
"customizations": {
"codespaces": {
"repositories": {
"example-org/*": {
"permissions": {
"actions": "write",
"checks": "read",
"contents": "read",
"deployments": "write",
"discussions": "read",
"issues": "write",
"packages": "read",
"pages": "read",
"pull_requests": "write",
"repository_projects": "read",
"statuses": "write",
"workflows": "write"
}
}
}
}
}
}

なお、VSCode内でrebuildをしても権限は反映されなかったので、UIから作り直す必要があった。

参考