# GitHub Copilot クラウド エージェントに組織内のリソースへのアクセス権を付与する

承認された MCP サーバーと内部パッケージへのアクセス権を付与することで、 Copilot を最大限に引き出します。

Copilot クラウドエージェント は、MCP サーバーへの接続、プライベート パッケージの使用、外部サービスへのアクセスを行うことができます。ただし、組織のリポジトリが許可するように構成されている場合に限られます。

以下の構成の多くはリポジトリ レベルで行われますが、組織の所有者は、スコープ内のリソースと、それらのリソースへのアクセスを構成できるユーザーを制御できます。

## サンプル シナリオ

組織では、Sentry を使用して Node アプリのバグを追跡しています。
GitHubの問題として新しい例外が発生し、開発者はこれらの問題をCopilotに割り当てたいと考えています。

Copilot を次の目的で使用します:

* Sentry インスタンスの詳細にアクセスできるように、Sentry MCP サーバーに接続します
* アプリをビルドしてテストを実行するために、 GitHubでホストされているプライベート パッケージを含む依存関係をインストールする
* 組織の規則に従ってエラー処理を行う

## シークレットを安全に格納する

既定では、 Copilotの認証トークンのスコープは、実行されているリポジトリに制限されます。 つまり、 Copilot は外部システムに対して認証を行ったり、プライベートな組織スコープのパッケージにアクセスしたりすることはできません。

Copilotにシークレットへのアクセスを提供するために、リポジトリ管理者はエージェント シークレットを構成できます。 組織の所有者は、組織レベルでエージェント シークレットを追加して、複数のリポジトリ間で構成を共有することもできます。
Copilot は、セットアップとタスクの実行中にこのデータにアクセスできます。 シークレットと変数 GitHub Actions、 Codespaces、または Dependabot にアクセスすることはできません。 詳細については、「[Copilotクラウドエージェントのシークレットと変数を設定する](/ja/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/configure-secrets-and-variables)」を参照してください。

### 例: シークレットを保存する

リポジトリ管理者は、組織の Sentry インスタンスの認証トークンを保存します。

1. リポジトリ設定の **\[シークレットと変数** > **Agents** ] セクションに移動します。
2. Sentry インスタンスのアクセス トークンを、 `COPILOT_MCP_SENTRY_ACCESS_TOKEN` というシークレットに保存します。

> \[!TIP] 標準のGitHub PackagesGitHub Actionsを使用してアクセスするプライベート `GITHUB_TOKEN` レジストリのトークンを保存する必要はありません。 ただし、外部パッケージ レジストリを使用している場合は、認証トークンを保存する必要があります。

## MCP サーバーへのアクセスの構成

組織と企業の所有者は、ユーザーが MCP サーバーへのアクセスを構成できるようにポリシーを設定できます。 このポリシーが有効になっている場合、ユーザーはリポジトリ設定またはカスタム エージェント プロファイルで Copilot クラウドエージェント 用に MCP サーバーを構成できます。 組織全体の一貫性を確保するために、組織レベルまたはエンタープライズ レベルで **カスタム エージェント プロファイル** を作成することをお勧めします。

カスタム エージェントを使用するセッションは、リポジトリ設定とエージェント プロファイルの **両方** で構成された MCP サーバーにアクセスできます。 ただし、組織全体のカスタム エージェントに対応するユース ケースが多いほど、リポジトリ設定で MCP サーバーへのアドホック アクセスを構成する必要が少なくなります。

[
GitHub MCP レジストリ](https://github.com/mcp)を参照して、信頼できる高評価のオプションを見つけることをお勧めします。

### 例: カスタム エージェントを作成する

組織の所有者は、Sentry エージェントのカスタム エージェント プロファイルを作成します。 Sentry MCP サーバーと、組織のエラー処理規則に関するカスタム命令にアクセスできます。

1. 組織内に `.github-private` というリポジトリを作成します。 必要に応じて、エンタープライズ所有者は、エンタープライズ内のすべてのカスタム エージェントのソースとしてこのリポジトリを設定できます。

2. リポジトリで、次のようなプロファイルを含む `agent.md` ファイルを追加します。 これには、保存したシークレットを参照する MCP サーバーの構成が含まれます。

   ```text
   ---
   name: sentry-error-fixer
   description: Proposed fixes for exception issues raised from Sentry
   mcp-servers:
     sentry:
       type: 'local'
       command: 'npx'
       args: ['@sentry/mcp-server@latest']
       env:
         SENTRY_ACCESS_TOKEN: ${{ secrets.COPILOT_MCP_SENTRY_ACCESS_TOKEN }}
   ---

   You are an error resolution specialist. When you're assigned an issue created by our Sentry integration, check for error details and stack traces using the MCP server, then propose a fix.

   Make sure you check that your proposed fix works by building the site with `npm run build` and running the test suite in `npm test`.
   ```

3. 開発者は、 Copilotに問題を割り当てるときに、ドロップダウンからカスタム エージェントを選択できます。

## プライベート パッケージのインストール

プロジェクトの依存関係に Copilot アクセスできるようにする最善の方法は、 `copilot-setup-steps.yml` ワークフロー ファイルにインストールすることです。 このファイルは、 Copilot が動作を開始する前に環境を設定する方法を定義します。

ワークフローが組織スコープのプライベート パッケージをプルできるようにするには、パッケージ設定を更新して、リポジトリの `GITHUB_TOKEN` がパッケージにアクセスできることを確認します。 これは、組織のアクセス許可を持つ有効期間の長い personal access token を使用するよりも安全です。

### 例: ノードの依存関係をインストールする

開発者は、リポジトリの `package-lock.json` ファイルに定義されている Node 依存関係をインストールするワークフローを作成します。 これには、 GitHubでホストされている、組織を対象としたプライベート パッケージが含まれます。

1. 開発者は、リポジトリに `copilot-setup-steps.yml` ファイルを作成します。

2. プロジェクトの依存関係をインストールするための手順を追加します。 例えば次が挙げられます。

   ```yaml
   # ...

   jobs:
     copilot-setup-steps:
       # ...

       # You can define any steps you want, and they will run before the agent starts.
       # If you do not check out your code, Copilot will do this for you.
       steps:
         - name: Checkout code
           uses: actions/checkout@v6

         - name: Set up Node.js
           uses: actions/setup-node@v4
           with:
             node-version: "20"
             cache: "npm"

         - name: Install JavaScript dependencies
           run: npm ci
   ```

3. 組織の管理者は、各パッケージの設定でリポジトリへのアクセスを許可することで、リポジトリが組織のプライベート パッケージにアクセスできることを確認します。 「[パッケージのアクセス制御と可視性の設定](/ja/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#github-actions-access-for-packages-scoped-to-organizations)」を参照してください。

> \[!TIP] 社内ネットワーク内で内部的にホストされているパッケージにアクセスする必要がある場合は、セルフホステッド Copilot クラウドエージェント ランナーでGitHub Actionsを実行することが必要になる場合があります。

## これらの設定を構成できるユーザーの制御

リポジトリと組織レベルでリソースへのアクセスを制御する方法を確認しました。これらの設定を管理するためにユーザーに付与するスコープの量を検討します。

1. \*\*
   \*\*にCopilot クラウドエージェントします。 特定のリポジトリが気になる場合は、すべてのユーザーに対してそれをブロックできます。
2. これらのリポジトリ**への管理者アクセス権を取得するユーザーを検討**します。 これを組織レベルで制御するには、 **すべてのリポジトリ管理者** カスタム ロールを持つチームを作成します。 これらのユーザーは、すべてのリポジトリで、MCP 構成やエージェントのシークレットと変数などの構成 \_設定\_を管理できます。
3. **ルールセットと CODEOWNERS ファイルを使用して**、\_\_ などの構成`copilot-setup-steps.yml`の編集を制御します。書き込みアクセス権を持つすべてのユーザーが既定で編集できます。
4. **既定のファイアウォールを確認します**。 ファイアウォールは MCP サーバーへの接続や `copilot-setup-steps.yml`のセットアップ手順には影響しませんが、タスクの実行中にインターネットへの Copilotのアクセスが制限されます。 「[GitHub Copilotのファイアウォールのカスタマイズまたは無効化](/ja/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall)」を参照してください。