# GitHub Copilot CLI の認証

コマンド ラインから直接Copilot CLIを使用できるように、Copilotを認証します。

## 認証について

独自の LLM プロバイダー API キー (BYOK) を使用する場合、 GitHub 認証は必要ありません。

その他の GitHub Copilot CLI の使用には認証が必要です。

認証が必要な場合、 Copilot CLI では 3 つの方法がサポートされます。 使用する方法は、対話形式で作業しているか、自動化された環境で作業しているかによって異なります。

* **OAuth デバイス フロー**: 対話型で使用するための既定の推奨される方法。
  `/login`でCopilot CLIを実行すると、CLI によって 1 回限りのコードが生成され、ブラウザーで認証するように指示されます。 これは認証を行う最も簡単な方法です。
  [OAuth を使用した認証を](#authenticating-with-oauth)参照してください。
* **環境変数**: CI/CD パイプライン、コンテナ、非対話型環境のために推奨されます。 サポートされているトークンを環境変数 (`COPILOT_GITHUB_TOKEN`、 `GH_TOKEN`、または `GITHUB_TOKEN`) として設定すると、CLI はプロンプトを表示せずに自動的に使用します。
  [環境変数を使用した認証を](#authenticating-with-environment-variables)参照してください。
* **GitHub CLIフォールバック**: GitHub CLI (`gh`) (注: `gh`ではなく、`copilot` CLI) がインストールされ、認証されている場合、Copilot CLIはそのトークンを自動的に使用できます。 これは最も優先度の低い方法であり、他の資格情報が見つからない場合にのみアクティブになります。 [GitHub CLIを使用した認証を](#authenticating-with-github-cli)参照してください。

認証されると、 Copilot CLI はログインを記憶し、すべての Copilot API 要求にトークンを自動的に使用します。 複数のアカウントでログインでき、CLI は最後に使用したアカウントを記憶します。 トークンの有効期間と有効期限は、アカウントまたは組織の設定でトークンがどのように作成されたかによって異なります。

## 認証されていない使用

独自の LLM プロバイダー API キー (BYOK) を使用するように Copilot CLI を構成する場合、 GitHub 認証は **必要ありません**。
Copilot CLI は、 GitHub アカウントまたはトークンを使用せずに、構成済みのプロバイダーに直接接続できます。

ただし、 GitHub 認証がないと、次の機能は **使用できません**。

* `/delegate`: Copilot cloud agentのサーバー上で実行されるGitHubが必要です
* GitHub MCP サーバー: GitHub API にアクセスするには認証が必要です
* GitHub コード検索: GitHubの検索インデックスに対してクエリを実行するには認証が必要です

BYOK とGitHub認証を組み合わせて、AI 応答に適したモデルと、GitHubやコード検索などの`/delegate`ホストされる機能へのアクセスの両方を最大限に活用できます。

### オフライン モード

`COPILOT_OFFLINE`環境変数を`true`に設定すると、Copilot CLIはGitHubのサーバーに接続せずに実行されます。 オフライン モードの場合:

* GitHub認証は試行されません。
* CLI は、構成済みの BYOK プロバイダーに対してのみネットワーク要求を行います。
* テレメトリは完全に無効になっています。

オフライン モードが完全にエアギャップされるのは、BYOK プロバイダーがローカルであるか、同じ分離環境内にある場合のみです (たとえば、外部ネットワーク アクセスがない状態でオンプレミスで実行されているモデルのように)。
`COPILOT_PROVIDER_BASE_URL`がリモートまたはインターネットにアクセス可能なエンドポイントを指している場合、プロンプトとコード コンテキストは引き続きネットワーク経由でそのプロバイダーに送信されます。 オフライン モードを使用しない場合、 GitHub 認証なしで BYOK を使用している場合でも、テレメトリは通常どおり送信されます。

### サポートされているトークンの種類

| トークンの種類                     | Prefix        | サポートされています | 注記                                                                           |
| --------------------------- | ------------- | ---------- | ---------------------------------------------------------------------------- |
| OAuth トークン (デバイス フロー)       | `gho_`        | イエス        |                                                                              |
| `copilot login`を使用した既定のメソッド |               |            |                                                                              |
| 詳細な PAT                     | `github_pat_` | イエス        | 個人用アカウント（組織用アカウントではありません）が所有しており、**Copilot リクエスト**アカウントのアクセス許可を持っている必要があります。 |
| GitHub アプリ ユーザーとサーバー間の通信    | `ghu_`        | イエス        | 環境変数経由で                                                                      |
| クラシック PAT                   | `ghp_`        | いいえ        |                                                                              |
| Copilot CLI によってサポートされていません |               |            |                                                                              |

### Copilot CLI は資格情報をどのように格納するか

既定では、CLI は OAuth トークンをオペレーティング システムのキーチェーンのサービス名 `copilot-cli`に格納します。

| Platform | キーチェーン                             |
| -------- | ---------------------------------- |
| macOS    | キーチェーンアクセス                         |
| Windows  | 資格情報マネージャー                         |
| Linux    | libsecret (GNOME Keyring, KWallet) |

`libsecret`がインストールされていないヘッドレス Linux サーバーなど、システム キーチェーンが使用できない場合、CLI はトークンを`~/.copilot/config.json`のプレーンテキスト構成ファイルに格納するように求めます。

コマンドを実行すると、 Copilot CLI は次の順序で資格情報を確認します。

1. `COPILOT_GITHUB_TOKEN` 環境変数
2. `GH_TOKEN` 環境変数
3. `GITHUB_TOKEN` 環境変数
4. システム キーチェーンからの OAuth トークン
5. GitHub CLI (`gh auth token`) フォールバック

> \[!NOTE]
>
> * 環境変数は、格納されている OAuth トークンを自動的にオーバーライドします。 別のツール `GH_TOKEN` 設定した場合、CLI では、 `copilot login`からの OAuth トークンの代わりにそのトークンが使用されます。 予期しない動作を回避するために、CLI で使用する予定のない環境変数を設定解除します。
> * BYOK プロバイダー環境変数 ( `COPILOT_PROVIDER_BASE_URL`、 `COPILOT_PROVIDER_API_KEY` など) を構成する場合、 Copilot CLI は、 GitHub 認証の状態に関係なく、これらを AI モデル要求に使用します。
>   GitHub トークンは、 GitHubホストされる機能にのみ必要です。

## OAuth を使用した認証

OAuth デバイス フローは、対話型で使用するための既定の認証方法です。 認証するには、`/login`からCopilot CLIを実行するか、ターミナルから`copilot login`します。

### `/login` で認証する

1. Copilot CLIから、`/login`を実行します。

   ```bash copy
   /login
   ```

2. 認証するアカウントを選択します。 データ所在地を使用した GitHub Enterprise Cloudは、インスタンスのホスト名を入力します

   ```text
   What account do you want to log into?
    1. GitHub.com
    2. GitHub Enterprise Cloud with data residency (*.ghe.com)
   ```

3. CLI では、1 回限りのユーザー コードが表示され、自動的にクリップボードにコピーされ、ブラウザーが開きます。

   ```text
   Waiting for authorization...
   Enter one-time code: 1234-5678 at https://github.com/login/device
   Press any key to copy to clipboard and open browser...
   ```

4. ブラウザーが自動的に開かなかった場合は、`https://github.com/login/device` の確認 URL に移動します。

5. 1 回限りのコードをページのフィールドに貼り付けます。

6. 組織で SAML SSO を使用している場合は、accessを付与する各組織の横にある **Authorize** をクリックします。

7. 要求された権限を確認して、**GitHub Copilot CLI を承認**をクリックします。

8. ターミナルに戻ります。 認証が完了すると、CLI によって成功メッセージが表示されます。

   ```text
   Signed in successfully as Octocat. You can now use Copilot.
   ```

### `copilot login` で認証する

1. ターミナルから、 `copilot login`を実行します。 データ所在地で GitHub Enterprise Cloud を使用している場合は、インスタンスのホスト名を渡します。

   ```bash copy
   copilot login
   ```

GitHub Enterprise Cloudの場合:

```bash copy
copilot login --host HOSTNAME
```

CLI では、1 回限りのユーザー コードが表示され、自動的にクリップボードにコピーされ、ブラウザーが開きます。

```text
To authenticate, visit https://github.com/login/device and enter code 1234-5678.
```

1. ブラウザーが自動的に開かなかった場合は、`https://github.com/login/device` の確認 URL に移動します。
2. 1 回限りのコードをページのフィールドに貼り付けます。
3. 組織で SAML SSO を使用している場合は、accessを付与する各組織の横にある **Authorize** をクリックします。
4. 要求された権限を確認して、**GitHub Copilot CLI を承認**をクリックします。
5. ターミナルに戻ります。 認証が完了すると、CLI によって成功メッセージが表示されます。

   ```text
   Signed in successfully as Octocat.
   ```

## 環境変数を使用した認証

非対話型環境の場合は、サポートされているトークンを使用して環境変数を設定することで認証できます。 これは、CI/CDパイプライン、コンテナー、またはヘッドレスサーバーに最適です。

1. [
   Fine-grained personal access tokens
   ](https://github.com/settings/personal-access-tokens/new)にアクセスしてください。
2. \[ **リソース所有者**] で、 **個人アカウント**を選択します。 組織を選択しないでください。
   \*\*
   Copilot要求\*\*のアクセス許可は、ユーザー所有のfine-grained personal access tokensでのみ使用できます。
3. \[ **リポジトリ アクセス**] で、ユース ケースに適したアクセス レベルを選択します。
   * **パブリック リポジトリ** のみを操作する必要がある場合。
   ***

現在および将来のすべてのリポジトリにアクセスする必要がある場合は、「すべてのリポジトリへのアクセス」を選択してください。

* 特定**のリポジトリ**へのアクセスを制限する場合にのみ、リポジトリを選択します。

1. \[ **アクセス許可**] で、\[ **アカウント** ] タブを選択します。
2. \[ **アクセス許可の追加]** をクリックし、\[ **Copilot 要求**] を選択します。
3. **\[トークンの生成]** をクリックします。
4. ターミナルまたは環境の構成でトークンをエクスポートします。
   `COPILOT_GITHUB_TOKEN`、`GH_TOKEN`、または環境変数`GITHUB_TOKEN` (優先順位順) を使用します。

## GitHub CLI を用いた認証

もし GitHub CLI がインストールされて認証されている場合、Copilot CLI はそのトークンをフォールバックとして使用できます。 このメソッドの優先度は最も低く、環境変数が設定されておらず、格納されているトークンが見つからない場合にのみアクティブになります。

1. GitHub CLIが認証されていることを確認します。

   ```bash copy
   gh auth status
   ```

   データ所在地で GitHub Enterprise Cloud を使用する場合は、正しいホスト名が認証されていることを確認します。

   ```bash copy
   gh auth status --hostname HOSTNAME
   ```

2. `copilot` を実行します。 Copilot CLI では、GitHub CLI トークンが自動的に使用されます。

3. `/user`を実行して、CLI で認証されたアカウントを確認します。

## アカウント間の切り替え

Copilot CLI では、複数のアカウントがサポートされています。 使用可能なアカウントを一覧表示し、CLI 内から切り替えることができます。
使用可能なアカウントを一覧表示するには、`/user list` プロンプトからCopilot CLIを実行します。
別のアカウントに切り替えるには、プロンプトに「 `/user switch` 」と入力します。

別のアカウントを追加するには、新しいターミナル セッションから `copilot login` を実行するか、CLI 内からログイン コマンドを実行して、もう一方のアカウントで承認します。

## サインアウトして資格情報を削除する

サインアウトするには、`/logout` プロンプトで「Copilot CLI」と入力します。 これにより、ローカルに格納されているトークンは削除されますが、 GitHubでは取り消されません。

GitHubで OAuth アプリの承認を取り消し、他の場所で使用されないようにするには、次の手順に従います。

1. **設定** > **Applications** > **Authorized OAuth Apps** に移動します。
2. 設定ページに移動します。
   1. GitHubのページの右上隅にあるプロフィール画像をクリックします。
   2. **\[設定]** をクリックします。
3. 左側のサイドバーで、\[ **アプリケーション**] をクリックします。
4. **Authorized OAuth Apps** で、<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="The horizontal kebab icon" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg> の横にある \*\*\*\* をクリックしてメニューを展開し、 **Revoke** を選択します。

## 次のステップ

認証の問題が発生した場合は、 [GitHub Copilot CLI 認証のトラブルシューティング](/ja/enterprise-cloud@latest/copilot/how-tos/copilot-cli/set-up-copilot-cli/troubleshoot-copilot-cli-auth) を参照してください。