# codespace 内の他のリポジトリへのアクセスの管理

GitHub Codespaces からアクセスできるリポジトリを管理できます。

## 概要

既定では、codespace には、作成元のリポジトリをスコープとするトークンと、`read` アクセス許可または `read` および `write` アクセス許可が割り当てられます。 このトークンのスコープは次の状況で自動的に変わります。

* 読み取りアクセスのみが与えられているリポジトリの codespace を作成し、その codespace でコミットするか、新しいブランチをプッシュすると、GitHub Codespaces では、そのリポジトリの新規または既存のフォークに codespace が自動的にリンクされ、そのフォークの `read` および `write` アクセス許可が与えられるよう、トークンが更新されます。 詳しくは、「[Codespace でソースコントロールを使用する](/ja/codespaces/developing-in-a-codespace/using-source-control-in-your-codespace#about-automatic-forking)」をご覧ください。
* テンプレートから codespace を作成し、その codespace を新しいリポジトリに発行すると、GitHub Codespaces では、新しいリポジトリの `read` および `write` アクセス許可が与えられるよう、トークンが更新されます。 詳しくは、「[テンプレートから codespace を作成する](/ja/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template#publishing-to-a-repository-on-github)」をご覧ください。

詳しくは、「[GitHub Codespaces のセキュリティ](/ja/codespaces/reference/security-in-github-codespaces#authentication)」をご覧ください。

プロジェクトで他のリポジトリに追加のアクセス許可が必要な場合は、この記事で後述する「`devcontainer.json`」で説明されているとおり、これを [](#setting-additional-repository-permissions) ファイルに構成できます。
`devcontainer.json` ファイルにアクセス許可が一覧表示されると、そのリポジトリのcodespace 作成の一環として、追加のアクセス許可を確認して承認するように求められます。 一覧表示されているアクセス許可を承認すると、GitHub Codespaces は選択を記憶し、`devcontainer.json` ファイル内のアクセス許可が変更されない限り、承認を求めるメッセージは表示されません。

> \[!NOTE]
> `devcontainer.json` ファイル内のアクセス許可を更新しても、既存の codespace のアクセス許可は変更されません。 既存の codespace に追加のアクセス許可が必要な場合は、「[リポジトリに対する認証のトラブルシューティング](/ja/codespaces/troubleshooting/troubleshooting-authentication-to-a-repository#authenticating-to-repositories-that-you-didnt-create-the-codespace-from)」を参照してください。

## カスタム アクセス許可を持つコードスペースの作成

カスタム アクセス許可を持つ codespace を作成するには、次のいずれかを使用する必要があります。

* GitHubのウェブUI
* [GitHub CLI](https://github.com/cli/cli/releases/latest) 2.5.2 以降
* [GitHub Codespaces Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) 1.5.3 以降

## 追加のリポジトリのアクセス許可の設定

`devcontainer.json` ファイルの GitHub Codespaces のリポジトリのアクセス許可を構成します。 追加または変更したカスタム アクセス許可は、変更がリポジトリにコミットされた後に作成された新しい codespace にのみ適用されます。 codespace 内からアクセス許可を追加または変更した場合、その codespace を再構築しても、これらのアクセス許可は現在のコードスペースには適用されません。

1. リポジトリに `devcontainer.json` ファイルがまだ含まれていない場合は、今すぐ追加します。 詳しくは、「[開発コンテナー構成のリポジトリへの追加](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration)」をご覧ください。

2. `devcontainer.json` ファイルを編集し、`repositories` オブジェクトに必要なリポジトリ名とアクセス許可を追加します。

   ```json copy
   {
     "customizations": {
       "codespaces": {
         "repositories": {
           "my_org/my_repo": {
             "permissions": {
               "issues": "write"
             }
           }
         }
       }
     }
   }
   ```

   > \[!NOTE]
   >
   > * 参照できるのは、現在作業しているリポジトリと同じ個人用アカウントまたは Organization に属するリポジトリのみです。
   > *

`*` ワイルドカード を使用して、Organization 内の複数のリポジトリにアクセス許可を付与できます。 たとえば、`my_org` Organization 内のすべてのリポジトリにアクセス許可を付与するには、`my_org/*` を使用します。 この構文は、Codespaces でのみ有効です。 プレビルドに使用される `devcontainer.json` ファイルでは、各リポジトリのアクセス許可を個別に定義する必要があります。 詳しくは、「[プレビルドで他のリポジトリにアクセスできるようにする](/ja/codespaces/prebuilding-your-codespaces/allowing-a-prebuild-to-access-other-repositories)」をご覧ください。

一覧に示されている各リポジトリに対して、次のアクセス許可のうち、いくつでも付与することができます。

* `actions` - 読み取り / 書き込み
* `checks` - 読み取り / 書き込み
* `contents` - 読み取り / 書き込み
* `deployments` - 読み取り / 書き込み
* `discussions` - 読み取り / 書き込み
* `issues` - 読み取り / 書き込み
* `packages` - 読み取り
* `pages` - 読み取り / 書き込み
* `pull_requests` - 読み取り / 書き込み
* `repository_projects` - 読み取り / 書き込み
* `statuses` - 読み取り / 書き込み
* `workflows` - 書き込み

組織内のリポジトリのアクセス許可を設定するには、そのリポジトリ名を `repositories` オブジェクトに明示的に追加する必要があります。

```json
{
  "customizations": {
    "codespaces": {
      "repositories": {
        "my_org/my_repo": {
          "permissions": {
            "issues": "write"
          }
        }
      }
    }
  }
}
```

特定のリポジトリのすべてのアクセス許可を設定するには、リポジトリ オブジェクトで `"permissions": "read-all"` または `"permissions": "write-all"` を使用します。

```json
{
  "customizations": {
    "codespaces": {
      "repositories": {
        "my_org/my_repo": {
          "permissions": "write-all"
        }
      }
    }
  }
}
```

## 要求されたアクセス許可の承認

`devcontainer.json` ファイルで追加のリポジトリのアクセス許可が定義されている場合、このリポジトリの codespace またはプレビルド構成を作るときに、アクセス許可を確認し、必要に応じて認可するように求められます。 リポジトリのアクセス許可を承認すると、要求されたアクセス許可のセットがリポジトリに対して変更されない限り、GitHub Codespaces は再プロンプトを表示しません。

![要求されたアクセス許可ページのスクリーンショット。 2 つのアクセス許可が要求済みとして表示されています。メタデータの読み取りアクセス許可と issue の書き込みアクセス許可です。](/assets/images/help/codespaces/codespaces-accept-permissions.png)

承認する必要があるのは、自分が知っていて信頼できるリポジトリに対するアクセス許可のみです。 要求されたアクセス許可のセットを信頼できない場合は、 **\[承認なしで続行]** をクリックして、基本のアクセス許可のセットを使用して codespace を作成します。 追加のアクセス許可を拒否すると、codespace は作成元のリポジトリにしかアクセスできないため、codespace 内のプロジェクトの機能に影響を与える可能性があります。

個人アカウントが既に所有しているアクセス許可のみを承認できます。 現在アクセス権を持たないリポジトリでのアクセス許可を codespace が要求する場合は、リポジトリの所有者または管理者に連絡して十分なアクセス権を取得してから、codespace の作成を再試行してください。

## 参考資料

* [ユーザーの基本設定の設定](/ja/codespaces/setting-your-user-preferences)
* [codespace のカスタマイズ](/ja/codespaces/customizing-your-codespace)