Skip to main content

GitHub Copilot CLI の構成

Copilot CLI の信頼ディレクトリ、ツールアクセス、パスと URL 権限を設定する

ja-JP: > [!NOTE]

GitHub Copilot CLI(コマンドラインインターフェース) は データ保護を使用したパブリック プレビュー にあり、変更される可能性があります。は、CLIを使用した新機能のプレビュー方法についての情報を提供します。この情報は、最新のCLIの使用から得られたものです。

イントロダクション

Copilot CLI には、ユーザーに代わってアクセスして実行できる操作を制御する構成オプションがいくつかあります。

この記事では、信頼されたディレクトリの設定、ツールへのアクセスの構成、ファイル パスと URL へのアクセス許可の付与を行う方法について説明します。

[前提条件]

信頼されたディレクトリの設定

信頼されたディレクトリは、Copilot CLI がファイルの読み取り、変更、および実行を行うことができる場所を制御します。 ディレクトリを信頼すると、セキュリティに影響があります。 「セキュリティに関する考慮事項」を参照してください。

ディレクトリを信頼することを選択する

GitHub Copilot CLI(コマンドラインインターフェース) セッションを開始すると、CLI を起動したディレクトリとその下位ディレクトリにあるファイルを信頼するかどうかを確認するメッセージが表示されます。

以下に対して、現在のディレクトリを信頼することを選択できます。

  • 現在実行中のセッションのみ
  • このセッションと今後のセッション

今後のセッションでディレクトリを信頼することを選んだ場合、信頼済みディレクトリのプロンプトは表示されなくなります。 Copilot を使用しても常に安全な場所であると確信できる場合にのみ、この 2 つ目のオプションを選んでください。

信頼されたディレクトリの編集

永続的に信頼されたディレクトリの一覧を編集できます。

  1. CLI の config.json ファイルを開きます。 既定では、ホーム ディレクトリの下の .copilot フォルダーに格納されます。 * macOS/Linux: ~/.copilot/config.json * Windows: $HOME\.copilot\config.json

           `XDG_CONFIG_HOME`環境変数 (主に macOS/Linux) を設定することで、構成の場所を変更できます。
    
  2.        `trusted_folders`配列の内容を編集します。
    

許可されるツールの設定

コマンド ライン フラグを使用してアクセス許可を指定するか、Copilot がツールを使用しようとしたときの承認プロンプトに応答することで、Copilot CLI が使用できるツールを制御できます。

ツールのアクセスを許可するとセキュリティに影響があることに注意してください。 「セキュリティに関する考慮事項」を参照してください。

このセクションでは、次の方法について説明します。

  •         [ツールを初めて許可する](#allowing-a-tool-for-the-first-time)
    
  •         [手動承認なしでツールを使用できるようにする](#allowing-tools-to-be-used-without-manual-approval)
    
  •         [許可または拒否するツールを指定する](#specifying-which-tool-you-want-to-allow-or-deny)
    
  •         [一部のツールを許可しながら他のツールを拒否する](#allowing-some-tools-while-denying-others)
    
  •         [使用可能なツールを制限する](#limiting-available-tools)
    

初めてツールを許可する

Copilot が初めて承認を必要とする可能性があるツール (たとえば、 例: touchchmodnodesed ) を使用する必要がある場合は、実行を許可するかどうかを確認するメッセージが表示されます。 プロンプトが表示されるかどうかは、ツールとその使用方法 (指定された引数や、ツールが以前に承認されているかどうかなど) によって異なります。

  1. Copilot に、ツールを用いる必要があるタスクを実行するよう指示します。 例えば次が挙げられます。

    copilot -p "Create a new file called README.md with a project description"
    
  2. 次の 3 つのオプションのいずれかを選択します。

    • 1. Yes

      このオプションを選択すると、Copilot がこの特定のコマンドを実行できるようになります(今回のみ)。 次回このツールを使う必要があるときは、再び確認が求められます。

    • 2. Yes, and approve TOOL for the rest of the running session

      Copilot がこのツールを現在実行中のセッション中に使用できるようにするには、このオプションを選択します。 新しいセッション、または現在のセッションを後から再開する場合は、再度承認が求められます。 このオプションを選んだ場合、Copilot が適切と判断するあらゆる方法でこのツールを使うことを許可することになります。

      たとえば、Copilot からコマンド rm ./this-file.txt の実行を許可するように求められ、オプション 2 を選んだ場合、Copilot は、このセッションの現在の実行中は、承認を求めることなく任意の rm コマンド (たとえば、rm -rf ./*) を実行できます。

    • 3. No, and tell Copilot what to do differently (Esc)

      このオプションを選択すると、提案されたコマンドを取り消し、Copilot に別の方法を試すように指示します。

手動承認なしでツールの使用を許可する

コマンド ライン フラグを使用して、Copilot が承認を求めずに使用できるツールを指定できます。

すべてのツールを許可する

          `--allow-all-tools`を使用して、 Copilot が承認を求めずに任意のツールを使用できるようにします。
  • 例えば次が挙げられます。

    copilot -p "Revert the last commit" --allow-all-tools
    

ツールの拒否

特定のツールの使用を防ぐには、Copilotで--deny-toolを使用します。

  • 例えば次が挙げられます。

    copilot --deny-tool 'shell(git push)'
    

このオプションは、オプション --allow-all-tools--allow-tool よりも優先されます。

ツールを許可する

          `--allow-tool`を使用して、 Copilot が承認を求めずに特定のツールを使用できるようにします。
  • 例えば次が挙げられます。

    copilot --allow-tool 'shell'
    

許可または拒否するツールを指定する

          `--deny-tool`オプションと`--allow-tool`オプションを使用するには、許可または拒否するツールの種類を指定する必要があります。

* シェル コマンド * '書き込み' ツール * MCP サーバー ツール

シェル コマンドの許可または拒否

          `shell(COMMAND)`を使用して、特定のシェル コマンドを許可または拒否します。
  • たとえば、Copilot が rm コマンドを使用できないようにするには、次のコマンドを使用します。

    copilot --deny-tool 'shell(rm)'
    
            `git`コマンドと`gh`コマンドの場合は、許可または拒否する特定の第 1 レベルのサブコマンドを指定します。
    
  • たとえば、Copilot が git pushを使用できないようにするには、次のコマンドを使用します。

    copilot --deny-tool 'shell(git push)'
    

ツールの仕様は省略可能です。 たとえば、copilot --allow-tool 'shell' と指定すると、個別の承認なしで任意のシェル コマンドを使うことを Copilot に許可できます。

          `'write'` ツールの許可または拒否

          `'write'`を使用して、シェル コマンド以外のツールでファイルを変更する権限を許可または拒否します。
  • たとえば、Copilot が個々の承認なしでファイルを編集できるようにするには、次のコマンドを使用します。

    copilot --allow-tool 'write'
    

MCP サーバー ツールの許可または拒否

          `'MCP_SERVER_NAME'`を使用して、指定した MCP サーバーから特定のツールを許可または拒否します。
  • たとえば、Copilot が tool_name という MCP サーバーから My-MCP-Server というツールを使用できないようにするには、次のコマンドを使用します。

    copilot --deny-tool 'My-MCP-Server(tool_name)'
    
            `MCP_SERVER_NAME` は、構成した MCP サーバーの名前です。
    

サーバーからのツールは、MCP サーバーに登録されているツール名を使ってかっこ内に指定します。

ツールを指定せずにサーバー名を使うと、そのサーバーからのすべてのツールが許可または拒否されます。

MCP サーバーの名前を確認するには、Copilot CLI の対話モードで「/mcp」と入力し、表示される一覧からサーバーを選びます。

一部のツールを許可しながら他のツールを拒否する

承認を求めずに使用できるツール Copilot を正確に判断するには、承認オプションを組み合わせて使用できます。 例えば次が挙げられます。

  • Copilot が rm コマンドと git push コマンドを使用しないように制限し、他のすべてのツールを自動的に許可するには、次のコマンドを使用します。

    copilot --allow-all-tools --deny-tool 'shell(rm)' --deny-tool 'shell(git push)'
    
  • Copilot が tool_name という MCP サーバーからツール My-MCP-Server を使うことを禁止し、そのサーバーの他のすべてのツールを個別の承認なしで使用できるようにするには、次のようにします。

    copilot --allow-tool 'My-MCP-Server' --deny-tool 'My-MCP-Server(tool_name)'
    

使用可能なツールの制限

Copilot を特定のツール セットに制限するには、--available-toolsを使用します。

Copilot で使用できるツールは、この一覧に含まれているものに限られます。

パスのアクセス許可の設定

パスのアクセス許可は、Copilot がアクセスできるディレクトリとファイルを制御します。

既定では、Copilot CLI は、現在の作業ディレクトリ、そのサブディレクトリ、およびシステム一時ディレクトリにアクセスできます。

パスのアクセス許可は、シェル コマンド、ファイル操作 (作成、編集、表示)、および検索ツール ( grep や glob パターンなど) に適用されます。 シェル コマンドの場合、パスは、コマンド テキストをトークン化し、パスのように見えるトークンを識別することによってヒューリスティックに抽出されます。

警告

シェル コマンドのパス検出には制限があります。

  • 複雑なシェル コンストラクトに埋め込まれたパスが検出されない場合があります。
  • 特定の環境変数のセットのみが展開されます (HOMETMPDIRPWDなど)。 $MY_PROJECT_DIRなどのカスタム変数は展開されず、正しく検証されない可能性があります。
  • Symlinks は既存のファイルに対しては解決されますが、作成されるファイルについては解決されません。

すべてのパスへのアクセスを許可する

パス検証を無効にし、任意のパスへのアクセスを許可するには、Copilot CLI の起動時に --allow-all-paths フラグを使用します。

一時ディレクトリへのアクセスを禁止する

一時ディレクトリへのアクセスを禁止するには、 --disallow-temp-dirを使用します。

URL アクセス許可の設定

URL パーミッションは、Copilot がアクセスできる外部 URL を制御します。 既定では、アクセスが許可される前にすべての URL に承認が必要です。

URL アクセス許可は、 web_fetch ツールと、ネットワークにアクセスするシェル コマンドのキュレーションされたリスト ( curlwgetfetchなど) に適用されます。 シェル コマンドの場合、URL は正規表現パターンを使用して抽出されます。

警告

シェル コマンドの URL 検出には制限があります。

  • コマンドによって読み取られたファイルの内容、構成ファイル、または環境変数内の URL は検出されません。
  • 難読化された URL (分割文字列やエスケープ シーケンスなど) が検出されない場合があります。
  • HTTP と HTTPS は異なるプロトコルとして扱われ、個別の承認が必要です。

URL のアクセス許可は、セッションに対して永続化することも、永続的に保持することもできます。

URL 検証の無効化

URL 検証を無効にするには、 --allow-all-urls フラグを使用します。

特定のドメインの事前承認

特定のドメインを事前に承認するには、 --allow-url <domain>を使用します。

  • たとえば、「 --allow-url github.com 」のように入力します。

特定のドメインの拒否

特定のドメインを拒否するには、 --deny-url <domain>を使用します。

  • たとえば、「 --deny-url github.com 」のように入力します。

すべてのツール、パス、URL を許可する

すべてのツール、パス、URL を許可するには、 --allow-allまたはそのエイリアス --yoloを使用します。

このフラグは次の内容を組み合わせたものになります。 * --allow-all-tools (ツールの承認をスキップします)。 * --allow-all-paths (パス検証を無効にします)。 * --allow-all-urls (URL 検証を無効にします)。

ヒント

対話型セッション中は、 /allow-all コマンドまたは /yolo スラッシュ コマンドを使用してすべてのアクセス許可を有効にすることもできます。

次のステップ

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot)