# ツールの使用の許可と拒否

意図しない変更を回避するために使用できるツール Copilot CLI 制御します。

## イントロダクション

Copilot CLI は、さまざまなツールを使用してタスクを完了します。 シェル コマンドの実行、ファイルの読み取りと書き込み、コードベースの検索、Web コンテンツのフェッチ、特殊なサブエージェントへのタスクの委任を行うことができます。

ファイルの検索、読み取り、読み取り専用シェル コマンドの実行などの読み取り専用操作は自動的に許可されますが、破壊的なシェル コマンドの実行、ファイルの編集、URL へのアクセスなど、システムを変更できるツールを使用するには、明示的な承認 Copilot 必要があります。 これは、パッケージのインストール、ファイルの削除、コードのプッシュ、ネットワーク要求など、ユーザー アカウントで実行できる操作をシェル コマンドで実行できるため、意図していない変更が発生する CLI の使用を回避するのに役立ちます。

CLI を起動するとき、または対話型セッション中に、ツールのアクセス許可を許可または拒否できます。 セッションを開始する前にアクセス許可を付与していない場合、 Copilot CLI は破壊的な可能性のあるアクションを実行する必要があるたびにアクセス許可を求められます。 このツールを 1 回許可するか、セッションの残りの部分に対して許可するか選択できます。

## 保存されたアクセス許可

一部のプロンプト オプションでは同意が保存されるため、再度要求されることはありません。 承認の保存場所は、承認した内容によって異なります。

現在の場所のツールを承認すると、承認は構成ディレクトリの `permissions-config.json` に保存されます。 既定では、このファイルは `~/.copilot/permissions-config.json`。 たとえば、シェル コマンド、ファイル書き込み、MCP ツール、またはメモリ更新に対して"このリポジトリでもう一度要求しない" (または "このディレクトリ内") を選択できます。 承認のスコープは、現在の場所 (Git リポジトリ のルートか、リポジトリにいない場合は作業ディレクトリ) です。 アクセス権を付与するすべてのディレクトリは、同じファイルに保存されます。

URL 承認の動作は異なります。 URL を完全に承認すると、そのドメインが`allowedUrls`の`settings.json`リストに追加されます。 既定では、このファイルは `~/.copilot/settings.json`。 この承認は、1 つの場所に関連付けるのではなく、すべてのセッションに適用されます。

`--allow-tool`や`--deny-tool`などのコマンド ライン オプションは、現在のセッションにのみ適用され、`permissions-config.json`には書き込まれません。 拒否規則は、保存された承認よりも引き続き優先されます。

保存された承認の保存場所、場所の照合方法、完全な `permissions-config.json` スキーマの詳細については、 [GitHub Copilot CLI の構成ディレクトリ](/ja/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson) を参照してください。

## ツール コントロールのレイヤー

コマンド ライン オプションでツールの権限を指定するときに使用できるコントロールには、2 つのレイヤーがあります。 次のようにすることができます。

* AI モデルで使用できるツールの選択を制限します。
* 特定のツールのアクセス許可を許可または拒否します。

## AI モデルで使用できるツールの選択を制限する

`--available-tools`オプションと`--excluded-tools` オプションでは、AI モデルが認識するツールのセットが制限されるため、タスクの完了方法を決定するときに選択できます。

* `--available-tools` は、指定したツール以外のすべてのツールを無効にします。
* `--excluded-tools` では、指定したツールのみが無効になります。

両方のオプションを一緒に使用する場合、CLI は `--available-tools` で指定された許可リストを適用し、 `--excluded-tools`で指定された拒否リストを無視します。

使用可能なセットにツールがない場合、ai モデルは、 `--allow-tool` オプションで指定した場合でも、まったく使用できません。 使用可能なツール セットを指定しない対話型セッションでは、AI モデルがツールの使用を試みる場合があります。これは拒否されるだけです。
`--available-tools`オプションと`--excluded-tools`オプションを使用すると、この方法でモデルとの対話を無駄にできなくなります。

### ユースケースの例

CLI セッションを開始してプロジェクトでベンチマークを実行し、AI モデルが Web 検索を使用することを回避したいと考えています。

```bash
copilot --excluded-tools='web_fetch, web_search'
```

> \[!NOTE]
> この記事で説明するこれらのコマンド ライン オプションとその他のコマンド ライン オプションの構文の詳細については、 [GITHUB COPILOT CLI コマンド リファレンス](/ja/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options) を参照してください。

## 特定のツールに対するアクセス許可の許可または拒否

`--allow-tool`および`--deny-tool`オプションでは、特定のツールまたはツール サブコマンドに対するアクセス許可を許可または拒否できます。

これらの各オプションの値は、ツールの種類のコンマ区切りの一覧であり、必要に応じて正確なツールとサブコマンド パターンを指定できます。

`--allow-tool`を使用してツールを指定した場合、AI モデルでは、アクセス許可を求めることなく、そのツールの使用を選択できます。
`--deny-tool`を使用してツールを指定した場合、タスクを完了するための最適な選択肢であっても、AI モデルはそのツールをまったく使用できません。

拒否規則は、 `--allow-all` が設定されているか、一致する承認が `permissions-config.json`に保存されている場合でも、許可規則よりも常に優先されます。

### 例示

| Option                                                                                                   | 影響                                   |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| `--allow-tool=shell`                                                                                     | すべてのシェル コマンドを許可します。                  |
| `--allow-tool='shell(git commit)'`                                                                       |                                      |
| `git commit` コマンドを許可します。                                                                                 |                                      |
| `--allow-tool='shell(git:*)' --deny-tool='shell(git push)'`                                              |                                      |
| `git`を除くすべての`git push`コマンドを許可します。                                                                        |                                      |
| `--deny-tool=write`                                                                                      | すべてのファイル書き込み操作を拒否します。                |
| `--allow-tool='read, write(.github/copilot-instructions.md)'`                                            | すべての読み取り操作を許可し、特定のファイルの書き込み操作を許可します。 |
| `--allow-tool='MyMCP(create_issue), MyMCP(delete_issue)'`                                                |                                      |
| `create_issue` と `delete_issue` ツールを `MyMCP` MCP サーバー内で許可します。                                            |                                      |
| `--available-tools='bash,edit,view,grep,glob' --allow-tool='shell(git:*)' --deny-tool='shell(git push)'` | 制限付き CLI セッションの両方の制御レイヤーを組み合わせます。    |
| Copilot は、コードの探索、編集、変更のコミットを行うことができますが、インターネットに到達したり、任意のサブエージェントを実行したり、Git 履歴にプッシュしたりすることはできません。         |                                      |

サポートされているツールの種類の詳細については、 [AUTOTITLE を](/ja/copilot/reference/copilot-cli-reference/cli-command-reference#tool-permission-patterns)参照してください。

## 許容的なオプション

次のコマンド ライン オプションでは、使用可能なすべてのツール Copilot CLI 使用するアクセス許可が付与されます。

Copilot BusinessライセンスまたはCopilot Enterpriseライセンスをお持ちの場合、これらのコマンドはエンタープライズ管理者によってブロックされる可能性があります。

allow-all オプション Copilot 幅広いアクセス許可を付与する前に、ローカル サンドボックスを使用するか、クラウド サンドボックスでセッションを実行して、アクセスできる Copilot を制限することを検討してください。 詳細については、「[クラウドサンドボックスとローカルサンドボックスについて GitHub Copilot](/ja/copilot/concepts/about-cloud-and-local-sandboxes)」を参照してください。

* `--allow-all-tools` — 使用可能なツールへのフル アクセス。

* `--allow-all`  または `--yolo` — CLI を開始するときにすべての `--allow-all-tools`、 `--allow-all-paths`、および `--allow-all-urls` オプションを使用するのと同じです。

  対話型セッション内では、 `/allow-all` または `/yolo` スラッシュ コマンドを使用して、セッションを再起動しなくてもすべてのツールを許可できます。

> \[!CAUTION]
> これらのオプションは、分離された環境でのみ使用することを強くお勧めします。
> Copilot CLIを開始するたびにエイリアスを使用してこれらのオプションのいずれかを適用しないでください。これを行うと、CLI を使用するたびに明示的なアクセス許可なしでツールを使用Copilotが許可されるため、意図しない結果が生じる可能性があります。

## アクセス許可のリセット

`/reset-allowed-tools`スラッシュ コマンドは、現在の対話型セッション中に付与したすべてのアクセス許可を取り消します。 これは、プロンプトに応答して付与したアクセス許可と、 `/allow-all` または `/yolo` スラッシュ コマンドの使用にも同様に適用されます。

`/reset-allowed-tools`を使用すると、アクセス許可が既定にリセットされるか、Copilot CLIを開始したときに使用したコマンド ライン オプションによって定義された状態にリセットされます。 また、現在の場所の保存済みツールの承認も `permissions-config.json`からクリアされます。 たとえば、オプション Copilot CLIを使用して`--allow-tool='shell(git:*)'`対話型セッションを開始し、プロンプトに応答してセッション中にそれ以上のアクセス許可を許可および拒否した場合、`/reset-allowed-tools` コマンドを使用すると、CLI のアクセス許可は元の`--allow-tool='shell(git:*)'`状態に戻り、他のアクセス許可は許可も拒否もされません。 セッションで作業を続ける際に、 Copilot に追加のアクセス許可が必要な場合は、もう一度メッセージが表示されます。

別の場所の保存済み承認を削除するには、 `permissions-config.json`の関連する場所エントリを編集または削除します。 詳細については、「[GitHub Copilot CLI の構成ディレクトリ](/ja/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)」を参照してください。

## 詳細については、次を参照してください。

* [GitHub Copilot CLI のベスト プラクティス](/ja/copilot/how-tos/copilot-cli/cli-best-practices#configure-allowed-tools)
* [GITHUB COPILOT CLI コマンド リファレンス](/ja/copilot/reference/copilot-cli-reference/cli-command-reference)
* [GitHub Copilot CLI の構成ディレクトリ](/ja/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)