Skip to main content
Skip to content

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

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

イントロダクション

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

一般に、ファイルの検索、読み取り、読み取り専用シェル コマンドの実行などの読み取り専用操作は、適用できるポリシーに従って自動的に許可されます。 その他の操作 (破壊的なシェル コマンドの実行、ファイルの編集、URL へのアクセスなど) には、Copilot がそれらを使用する前にアクセス許可が必要です。 メッセージが表示されるかどうかは、既存のアクセス許可とアクセス許可モードによって異なります。 シェル コマンドは、パッケージのインストール、ファイルの削除、コードのプッシュ、ネットワーク要求など、ユーザー アカウントで実行できるあらゆる操作を実行できるため、これらのコントロールは意図しない変更を回避するのに役立ちます。

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 の構成ディレクトリ を参照してください。

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

コマンド ライン オプションでツールの権限を指定するときに使用できるコントロールには、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 が設定されているか、一致する承認が 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 を参照してください。

許容的なオプション

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

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

allow-all オプションで幅広いアクセス許可を付与する前に、ローカル サンドボックスを使用するか、クラウド サンドボックスでセッションを実行して、Copilot がアクセスできるものを制限することを検討してください。 詳細については、「ローカル サンドボックスについて GitHub Copilot」および「クラウド サンドボックスについて GitHub Copilot」を参照してください。

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

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

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

注意事項

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

プロンプトを減らす assisted permissions

[Allow-all permissions](すべて許可) オプションでは、個々のアクションを確認することなく、広範なアクセス許可が付与されます。 一括アクセス許可を付与せずに承認プロンプトを減らすには、代わりに assisted permissions オプションを使用してください。

assisted permissionsを有効にするには、対話型セッションで /permissions assisted スラッシュ コマンドを入力してください。 大規模な言語モデルは、適格なアクセス許可要求を評価し、安全であると判断した要求を自動的に承認します。 既存のアクセス許可とエンタープライズ ルールは引き続き適用され、承認が必要な要求はユーザーに提示されます。 手動承認に戻るには /permissions manual を、現在の設定を確認するには /permissions show を使用します。 /permissionsを引数なしで入力して、一覧からモードを選択することもできます。

管理された既定値が構成されていない場合に新しい対話型セッションで既定で assisted permissions を使用するには、ユーザー構成ファイルで defaultPermissionMode を "assisted" に設定します。 CI/CD ワークフローなどの非対話型実行でそれを使用するには、--assisted-approval コマンド ライン オプションを使用します。 詳細については、「手動承認なしで安全なコマンドを実行できるようにする」を参照してください。

アクセス許可のリセット

/reset-allowed-toolsスラッシュ コマンドは、現在の対話型セッション中に付与したアクセス許可を取り消します。 これは、プロンプトに応答して付与したアクセス許可、および /permissions、/allow-all、または /yolo のスラッシュ コマンドの使用にも同様に適用されます。 また、アクセス許可モードを手動に戻し、すべて許可のアクセス許可または assisted permissions が有効になっている場合は、それらをオフにします。

/reset-allowed-toolsを使用すると、アクセス許可が既定値、またはCopilot CLIの開始時に使用した--allow-tool、--deny-tool、--allow-url、--deny-urlなどのルール ベースおよび URL のコマンド ライン オプションによって定義されたベースラインに戻ります。

また、このコマンドは、保存されたツールの承認と保存されたディレクトリのアクセス許可の両方を含め、permissions-config.jsonから現在の場所に関する保存済みのすべての承認をクリアします。 さらに、autopilot のアクセス許可ダイアログを再度表示できる状態にするため、必要に応じて、Copilot が再度 autopilot のアクセス許可を求めます。

たとえば、オプション Copilot CLIを使用して--allow-tool='shell(git:*)'対話型セッションを開始し、プロンプトに応答してセッション中にそれ以上のアクセス許可を許可および拒否した場合、/reset-allowed-tools コマンドを使用すると、CLI のアクセス許可は元の--allow-tool='shell(git:*)'状態に戻り、他のアクセス許可は許可も拒否もされません。 セッションで作業を続ける際に、 Copilot に追加のアクセス許可が必要な場合は、もう一度メッセージが表示されます。

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

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