# GitHub Copilot CLI の認証

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

## 認証について

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

その他の GitHub Copilot CLI（コマンドラインインターフェース） の使用には認証が必要です。

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

* **OAuth デバイス フロー**: 対話型で使用するための既定の推奨される方法。 
              `/login`でCopilot CLI (コパイロット 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 (コパイロット CLI)はそのトークンを自動的に使用できます。 これは最も優先度の低い方法であり、他の資格情報が見つからない場合にのみアクティブになります。 
              [
              GitHub CLIを使用した認証を](#authenticating-with-github-cli)参照してください。

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

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

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

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

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

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

### オフライン モード

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

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

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

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

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

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

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

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

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

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

1. 
              `COPILOT_GITHUB_TOKEN` 環境変数
1. 
              `GH_TOKEN` 環境変数
1. 
              `GITHUB_TOKEN` 環境変数
1. システム キーチェーンからの OAuth トークン
1. 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 (コパイロット CLI) は、 GitHub 認証の状態に関係なく、これらを AI モデル要求に使用します。 
              GitHub トークンは、 GitHubホストされる機能にのみ必要です。

## OAuth を使用した認証

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

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

1. 
              Copilot CLI (コパイロット CLI)から、`/login`を実行します。

   ```bash copy
   /login
   ```

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

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

1. 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...
   ```

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

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

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

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

1. 
              [
              Fine-grained personal access tokens
              ](https://github.com/settings/personal-access-tokens/new)にアクセスしてください。
1. [アクセス許可] で [ **アクセス許可の追加** ] をクリックし、 **Copilot 要求**を選択します。
1. 
              **[トークンの生成]** をクリックします。
1. ターミナルまたは環境の構成でトークンをエクスポートします。 
              `COPILOT_GITHUB_TOKEN`、`GH_TOKEN`、または環境変数`GITHUB_TOKEN` (優先順位順) を使用します。

## 
              GitHub CLI を用いた認証

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

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

    ```bash copy
    gh auth status
    ```

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

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

1. 
              `copilot` を実行します。 Copilot CLI では、GitHub CLI トークンが自動的に使用されます。
1. 
              `/user`を実行して、CLI で認証されたアカウントを確認します。

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

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

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

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

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

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

1. 
              **設定** > **Applications** > **Authorized OAuth Apps** に移動します。
1. 設定ページに移動します。
   1. 
              GitHubのページの右上隅にあるプロフィール画像をクリックします。 
   1. 
              **[設定]** をクリックします。
1. 左側のサイドバーで、[ **アプリケーション**] をクリックします。
1. 
              **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** を選択します。