コンテンツにスキップ

GitHub インテグレーションを設定

このガイドでは、セットアップのうち GitHub に固有の部分を扱います。GitHub は対応している 3 つの コードホストの 1 つです — GitLab や Bitbucket の接続方法と、ワークスペースでこれらを 併用する方法については、コードホストを接続 を参照してください。

  • 作業したいリポジトリにアクセスできる GitHub アカウント
  • サーバーに登録された GitHub App( GitHub App を作成を参照)でサインインできるようにする、 または repo と read:org を持つ個人アクセストークンを貼り付ける

デバイスフローです。GitHub が短いコードを表示し、あなたが github.com で承認すると、 サーバーが認証情報を受け取ります — コールバック URL もポートも不要で、公開するものは 何もありません。サーバーにクライアント id があればいつでも利用でき、公式ビルドには すでに含まれています。

  1. 設定 → ワークスペース → プロフィールと識別情報 → コードホスティングを開きます(またはオンボーディングの 最初のステップ)
  2. GitHub の行で GitHub でサインインをクリックします
  3. ダイアログに 8 文字のコードが表示され、ブラウザーで github.com/login/device が開きます。 コードはすでにクリップボードにあります
  4. 貼り付けてアプリを承認し、戻ります。行は自動的に 「your-username としてサインインしています」に変わります

ブラウザーでの作業を終える間はダイアログを閉じてもかまいません — サーバーはコードの有効期限が 切れるまで(約 15 分)ポーリングを続けるため、サインインはそのまま完了します。

サーバーにアプリがない場合、必要なアカウントにアプリがインストールされていない場合、 または単に PAT を使いたい場合のフォールバックです。

  1. 設定 → ワークスペース → プロフィールと識別情報 → コードホスティングを開きます
  2. GitHub の行で トークンを追加をクリックします
  3. repo と read:org を持つトークン(classic)を貼り付けて保存します。きめ細かい トークンには、リポジトリの Contents と Pull requests(read and write)、 さらに Checks と Actions(read)が必要です。

トークンは保存された時点で検証されるため、行にはそれが属するアカウントの名前が表示されます。 削除するには切断をクリックします。

確認ポイント: GitHub の行に「your-username としてサインインしています」と表示されます。応答している 認証情報が自分のものでない場合、末尾にそのソースが示されます — 「このサーバーの アプリ経由」または「環境変数から」です。

機能 仕組み
PR 一覧と詳細 サーバーから、アプリのアイデンティティまたは自分の認証情報で GitHub REST API を利用
チェック実行 GitHub Checks API
レビューの公開 レビューを PR に投稿する、ユーザーの操作を必要とするステップ
リポジトリの登録 チェックアウトの origin リモートが github.com — または gitlab.com / bitbucket.org — を指していれば受け入れられます
エージェントの GitHub アクセス 認証情報ブローカーが読み取り専用のトークンを GH_TOKEN / GITHUB_TOKEN として注入します。プッシュは Control Center を通ります
通知ピング サーバー側で GitHub の通知受信トレイをポーリングし、「プルリクエストでメンション」と「レビュー依頼」を発生させます
ユーザープロフィール プロフィールのホバーカードと、作者ごとの PR フィルタリング

一部の経路では、よりコストが低い箇所で REST の代わりに GraphQL API を使用します — PR 作成 ピッカーのブランチアクティビティと、レビュー依頼の通知がまだ保留中かどうかを判断する ライブのレビュー状態です。

プロバイダーが機能低下しているとき、タイトルバーにステータスチップが表示されます。対象は GitHub、 Claude、OpenAI、Kimi です。すべてが正常な間は非表示になります — 表示は障害の存在を 伝えるものであり、その不在を伝えるものではありません。

チップをクリックすると、各プロバイダーの状態と更新ボタンを備えたフライアウトが開きます。 ステータスは 2 分ごとに自動で更新されます。

エージェントが GitHub でどのように動作するか

「エージェントが GitHub でどのように動作するか」というセクション
  • GitHub のワークツリーで作業するエージェントは、常に読み取り専用の GitHub トークンを 受け取ります。プッシュは Control Center を通り、Control Center は リモートへプッシュ の ルールに問い合わせてから、エージェントが決して持たない書き込みトークンでプッシュを転送します。 サンドボックスポリシーを設定を参照してください
  • エージェントが作成するコミットはエージェントとして作成されます — 表示名に (agent) を加えたもの、エージェントの id をキーとする合成アドレスを使い、人間として作成されることは ありません。依頼した人には Co-Authored-By トレーラーでクレジットが付きます
  • GitHub App が設定されている場合、ブローカーは広範なトークンを渡す代わりに、起動ごとに、 きめ細かくリポジトリ単位にスコープされた約 1 時間有効のインストールトークンを発行します。 インストールは実行対象リポジトリのオーナーから解決されるため、複数のアカウントに インストールされた 1 つのアプリは、その実行が触れるアカウントに正しくスコープされます。アプリがない場合、 エージェントは環境のトークンを受け取ります。これは読み取り専用に絞り込めないため、 プッシュのルールは git push には効きますが、トークンを直接使うコードには効きません
  • トークンは常にブローカーのものであり、依頼したメンバー自身のものではありません。オーナーではなく GitHub を接続していないメンバーのために動く実行には、サーバーのトークンは渡されません

PR 一覧が空で、GitHub が接続されていないと表示される

「PR 一覧が空で、GitHub が接続されていないと表示される」というセクション

このサーバーに GitHub の認証情報がありません。コードホスティングでサインインするか、トークンを 貼り付けてください。他のコードホストのリポジトリは影響を受けません — GitHub のものだけが 何も寄与しません。

行に「トークンを追加」はあるが「GitHub でサインイン」がない

「行に「トークンを追加」はあるが「GitHub でサインイン」がない」というセクション

サーバーにクライアント id がありません — ソースからのビルドではこれが通常の状態で、 認証情報は公式ビルドにのみ組み込まれるためです。 GitHub App を作成を参照してください。所要時間は約 2 分で、 サーバー所有者だけが 1 回行うだけです。

サインインダイアログに、プロバイダーがデバイスコードを返さなかったと表示される

「サインインダイアログに、プロバイダーがデバイスコードを返さなかったと表示される」というセクション

GitHub App は存在しますが、Device flow チェックボックスがオフになっています。アプリの 設定(General → Device flow)でオンにして、もう一度試してください。

自分のアカウントを期待したのに、行に「このサーバーのアプリ経由」と表示される

「自分のアカウントを期待したのに、行に「このサーバーのアプリ経由」と表示される」というセクション

あなたはサインインしていません。表示されているのは、応答しているサーバーのアプリの アイデンティティです。その行の GitHub でサインインをクリックしてください。

きめ細かい PAT でマージボタンやチェックステータスが表示されない

「きめ細かい PAT でマージボタンやチェックステータスが表示されない」というセクション

トークンには Contents と Pull requests(read and write)、さらに Checks と Actions(read)が必要です。変更後は、コードホスティングで 再度貼り付けてください。

登録には次の 3 つすべてが必要です。パスが git ワークツリーの内部にあること、origin リモートがあること、そしてそのリモートが対応しているコードホスト(github.com、 gitlab.com、bitbucket.org)を指していることです。 ワークスペースにリポジトリを追加を参照してください。

集中的に使ったあと、しばらく何も動かなくなる

「集中的に使ったあと、しばらく何も動かなくなる」というセクション

それはレート制限のサーキットブレーカーです。GitHub はプライマリ制限を、 x-ratelimit-remaining: 0 とリセット時刻を伴う 403 で通知します。クライアントはそれを見ると、 ウィンドウが経過するまで、ネットワーク呼び出しを行わずに以降のリクエストをローカルで失敗させるため、 リトライの嵐が制限を深刻化させることはありません。一時的な失敗は、 指数バックオフで最大 3 回再試行され、retry-after が尊重されます。