はじめに
Copilot CLI は、さまざまなツールを使用してタスクを実行します。 シェル コマンドの実行、ファイルの読み取りと書き込み、コードベースの検索、Web コンテンツのフェッチ、特殊なサブエージェントへのタスクの委任を行うことができます。
ファイルの検索、読み取り、読み取り専用シェル コマンドの実行などの読み取り専用操作は自動的に許可されますが、システムを変更できるツール (破壊的シェル コマンドの実行、ファイルの編集、URL へのアクセスなど) は、Copilot で使用する前に明示的な承認が必要です。 これは、パッケージのインストール、ファイルの削除、コードのプッシュ、ネットワーク要求など、ユーザー アカウントで実行できる操作をシェル コマンドで実行できるため、意図していない変更が発生する CLI の使用を回避するのに役立ちます。
CLI を起動するとき、または対話型セッション中に、ツールのアクセス許可を許可または拒否できます。 セッションを開始する前にアクセス許可を付与していない場合、Copilot CLI は、潜在的に破壊的なアクションを実行する必要があるたびにアクセス許可を求めます。 このツールを 1 回許可するか、セッションの残りの部分に対して許可するか選択できます。
ツール コントロールのレイヤー
コマンド ライン オプションでツールの権限を指定するときに使用できるコントロールには、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 検索を使用することを回避したいと考えています。
copilot --excluded-tools='web_fetch, web_search'
メモ
この記事で説明するこれらのコマンド ライン オプションとその他のコマンド ライン オプションの構文の詳細については、 GitHub Copilot CLI コマンド リファレンス を参照してください。
特定のツールに対するアクセス許可の許可または拒否
`--allow-tool`および`--deny-tool`オプションでは、特定のツールまたはツール サブコマンドに対するアクセス許可を許可または拒否できます。
これらの各オプションの値は、ツールの種類のコンマ区切りの一覧であり、必要に応じて正確なツールとサブコマンド パターンを指定できます。
`--allow-tool`を使用してツールを指定した場合、AI モデルでは、アクセス許可を求めることなく、そのツールの使用を選択できます。
`--deny-tool`を使用してツールを指定した場合、タスクを完了するための最適な選択肢であっても、AI モデルはそのツールをまったく使用できません。
拒否規則は、 --allow-all が設定されている場合でも、許可規則よりも常に優先されます。
例示
| オプション | 影響 |
|---|---|
--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 を参照してください。
許容的なオプション
次のコマンド ライン オプションを使用すると、Copilot CLI に使用可能なすべてのツールを使用するアクセス許可が付与されます。
-
`--allow-all-tools` — 使用可能なツールへのフル アクセス。 -
`--allow-all` または `--yolo` — CLI を開始するときにすべての `--allow-all-tools`、 `--allow-all-paths`、および `--allow-all-urls` オプションを使用するのと同じです。対話型セッション内では、
/allow-allまたは/yoloスラッシュ コマンドを使用して、セッションを再起動しなくてもすべてのツールを許可できます。メモ
これらのオプションは、分離された環境でのみ使用することを強くお勧めします。 Copilot CLI を起動するたびにエイリアスを使用してこれらのオプションのいずれかを適用しないでください。これにより、Copilot は CLI を使用するたびに明示的なアクセス許可なしでツールを使用できるため、意図しない結果が生じる可能性があります。
アクセス許可のリセット
`/reset-allowed-tools`スラッシュ コマンドは、現在の対話型セッション中に付与したすべてのアクセス許可を取り消します。 これは、プロンプトに応答して付与したアクセス許可と、 `/allow-all` または `/yolo` スラッシュ コマンドの使用にも同様に適用されます。
`/reset-allowed-tools`を使用すると、権限がデフォルトまたはCopilot CLI 起動時に指定したコマンドラインオプションによって定義された状態に戻ります。 たとえば、オプション `--allow-tool='shell(git:*)'`を使用して Copilot CLI 対話型セッションを開始し、プロンプトに応答してセッション中にそれ以上のアクセス許可を許可および拒否した場合、 `/reset-allowed-tools` コマンドを使用すると、CLI のアクセス許可は元の `--allow-tool='shell(git:*)'` 状態に戻り、他のアクセス許可は許可も拒否もされません。 セッションで作業を続ける際に、Copilot に追加のアクセス許可が必要な場合は、再度メッセージが表示されます。
詳細については、次を参照してください。
-
[AUTOTITLE](/copilot/how-tos/copilot-cli/cli-best-practices#configure-allowed-tools) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)