Skip to main content

GitHub と通信するように Copilot エージェントを構成する

ペイロードを確認し、GitHub から Copilot agent を使用してリソースを取得する方法について説明します。

Note

GitHub Copilot Extensions は パブリック プレビュー 段階であり、変更される可能性があります。

前提条件

GitHub と通信するように Copilot agent を構成する前に、Copilot agent が Copilot プラットフォームと通信する方法を理解しておく必要があります。 「Copilot プラットフォームと通信するように Copilot エージェントを構成する」を参照してください。

ペイロードが GitHub から送信されていることを確認する

Copilot agent が要求の処理を開始する前に、要求が GitHub から送信されていること、およびエージェントを対象としていることを確認する必要があります。 すべてのエージェント要求には、Github-Public-Key-Identifier ヘッダーと Github-Public-Key-Signature ヘッダーが含まれます。 特定の要求の署名を確認するには、Github-Public-Key-Signature ヘッダーの署名と、https://api.github.com/meta/public_keys/copilot_api に記載されている現在の公開キーを使用して、要求本文の署名済みコピーを比較します。

特定の言語での署名検証の詳細と例については、「github-technology-partners/signature-verification」リポジトリを参照してください。

GitHub API からのリソースのフェッチ

Copilot agent への要求は、X-Github-Token ヘッダーを受け取ります。 このヘッダーには、エージェントと対話するユーザーの代わりに GitHub API からリソースをフェッチするために使用できる API トークンが含まれています。 このトークンのアクセス許可は、ユーザー自身のアクセス許可と、GitHub App インストールに付与されるアクセス許可の重複です。

X-Github-Token の使用方法の例については、次のコード サンプルを参照してください。

async function whoami(req) {
  const response = await fetch(
    // The GitHub API endpoint for the authenticated user
    "https://api.github.com/user",
    {
      headers: {
        "Authorization": `Bearer ${req.headers.get("x-github-token")}`
      }
    }
  )

  const user = await response.json()
  return user
}

GitHub の API の操作の詳細と、公式のソフトウェア開発キット (SDK) については、「octokit 組織」を参照してください。