# 도구 사용 허용 및 거부

의도하지 않은 변경을 방지하는 데 사용할 수 있는 도구를 Copilot CLI 제어합니다.

## 소개

Copilot CLI 는 다양한 도구를 사용하여 작업을 완료합니다. 셸 명령을 실행하고, 파일을 읽고 쓰고, 코드베이스를 검색하고, 웹 콘텐츠를 가져오고, 작업을 특수 하위 에이전트에 위임할 수 있습니다.

파일 검색, 파일 읽기 및 읽기 전용 셸 명령 실행과 같은 읽기 전용 작업은 자동으로 허용되지만 파괴적인 셸 명령 실행, 파일 편집 또는 URL 액세스와 같이 시스템을 수정할 수 있는 도구는 사용하려면 Copilot 명시적 승인이 필요합니다. 예를 들어 셸 명령은 패키지 설치, 파일 삭제, 코드 푸시 또는 네트워크 요청 등 사용자 계정에서 수행할 수 있는 모든 작업을 수행할 수 있으므로 CLI를 사용하지 않아도 됩니다.

CLI를 시작할 때 또는 대화형 세션 중에 도구에 대한 사용 권한을 허용하거나 거부할 수 있습니다. 세션을 Copilot CLI 시작하기 전에 권한을 부여하지 않은 경우 잠재적으로 파괴적인 작업을 수행해야 할 때마다 사용 권한을 묻는 메시지가 표시됩니다. 이 도구를 한 번 또는 세션의 나머지 부분에 대해 허용하도록 선택할 수 있습니다.

## 지속형 권한

일부 프롬프트 옵션은 다시 묻지 않도록 동의를 저장합니다. 승인이 저장되는 위치는 승인한 내용에 따라 달라집니다.

현재 위치에 대한 도구를 승인하면 승인이 구성 디렉터리에 저장 `permissions-config.json` 됩니다. 기본적으로 이 파일은 .입니다 `~/.copilot/permissions-config.json`. 예를 들어 셸 명령, 파일 쓰기, MCP 도구 또는 메모리 업데이트에 대해 "이 리포지토리에서 다시 묻지 않음"(또는 "이 디렉터리에서")을 선택할 수 있습니다. 승인 범위는 현재 위치(Git 리포지토리 루트 또는 리포지토리에 없는 경우 작업 디렉터리)로 범위가 지정됩니다. 액세스 권한을 부여하는 모든 디렉터리도 동일한 파일에 저장됩니다.

URL 승인은 다르게 작동합니다. URL을 영구적으로 승인하면 해당 도메인이 사용자의 `allowedUrls`목록에 추가 `settings.json` 됩니다. 기본적으로 이 파일은 .입니다 `~/.copilot/settings.json`. 이 승인은 단일 위치에 연결되지 않고 모든 세션에 적용됩니다.

`--allow-tool` 및 `--deny-tool` 같은 명령줄 옵션은 현재 세션에만 적용되며 `permissions-config.json`에 기록되지 않습니다. 거부 규칙은 여전히 저장된 승인보다 우선합니다.

저장된 승인이 저장되는 위치, 위치 일치 방법 및 전체 `permissions-config.json` 스키마에 대한 자세한 내용은 [GITHUB COPILOT CLI 구성 디렉터리](/ko/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)을 참조하세요.

## 도구 컨트롤의 레이어

명령줄 옵션에서 도구 권한을 지정할 때 사용할 수 있는 두 가지 컨트롤 계층이 있습니다. 당신은 할 수 있어요:

* AI 모델에 사용할 수 있는 도구의 선택을 제한합니다.
* 특정 도구에 대한 사용 권한을 허용하거나 거부합니다.

## AI 모델에 사용할 수 있는 도구 선택 제한

`--available-tools` 및 `--excluded-tools` 옵션은 AI 모델이 알고 있는 도구 집합을 제한하므로 작업을 완료하는 방법을 결정할 때 선택할 수 있습니다.

* `--available-tools` 은 지정한 도구 이외의 모든 도구를 사용하지 않도록 설정합니다.
* `--excluded-tools` 는 지정된 도구만 사용하지 않도록 설정합니다.

두 옵션을 함께 사용하는 경우 CLI는 지정된 `--available-tools` 허용 목록을 적용하고 지정한 거부 목록을 `--excluded-tools`무시합니다.

도구가 사용 가능한 집합에 없는 경우 옵션으로 `--allow-tool` 지정하더라도 AI 모델은 도구를 전혀 사용할 수 없습니다. 사용 가능한 도구 집합을 지정하지 않는 대화형 세션에서 AI 모델은 거부될 때만 도구를 사용하려고 할 수 있습니다.
`--available-tools` 및 `--excluded-tools` 옵션을 사용하면 이러한 방식으로 모델과의 상호 작용을 낭비할 수 없습니다.

### 예제 사용 사례

프로젝트에서 벤치마킹을 실행하기 위해 CLI 세션을 시작하고 있으며, AI 모델이 웹 검색을 사용하지 않도록 하려고 합니다.

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

> \[!NOTE]
> 이 문서에 언급된 이러한 명령줄 및 기타 명령줄 옵션에 대한 구문에 대한 자세한 내용은 [GitHub Copilot CLI 명령 참조](/ko/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` MCP 서버의 `delete_issue` 도구와 `MyMCP` 도구를 허용합니다.                                             |                                        |
| `--available-tools='bash,edit,view,grep,glob' --allow-tool='shell(git:*)' --deny-tool='shell(git push)'` | 제한된 CLI 세션에 대해 두 컨트롤 계층을 결합합니다.        |
| Copilot 에서는 코드를 탐색하고, 편집하고, 변경 내용을 커밋할 수 있지만 인터넷에 연결하거나, 임의의 스바겐트를 실행하거나, Git 기록에 푸시할 수 없습니다.            |                                        |

지원되는 도구 종류에 대한 자세한 내용은 [GitHub Copilot CLI 명령 참조](/ko/copilot/reference/copilot-cli-reference/cli-command-reference#tool-permission-patterns)을 참조하세요.

## 허용 옵션

다음 명령줄 옵션은 Copilot CLI에 모든 사용 가능한 도구를 사용할 수 있는 권한을 부여합니다.

Copilot Business 또는 Copilot Enterprise 라이선스를 보유하고 있는 경우, 엔터프라이즈 관리자가 이러한 명령을 차단할 수 있습니다.

모든 허용 옵션을 사용하여 광범위한 권한을 부여 Copilot 하기 전에 로컬 샌드박싱을 사용하거나 클라우드 샌드박스에서 세션을 실행하여 액세스할 수 있는 항목을 제한하는 것이 Copilot 좋습니다. 자세한 내용은 [클라우드 및 로컬 샌드박스 정보 GitHub Copilot](/ko/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 구성 디렉터리](/ko/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)을(를) 참조하세요.

## 추가 읽기

* [GitHub Copilot CLI에 대한 모범 사례](/ko/copilot/how-tos/copilot-cli/cli-best-practices#configure-allowed-tools)
* [GitHub Copilot CLI 명령 참조](/ko/copilot/reference/copilot-cli-reference/cli-command-reference)
* [GITHUB COPILOT CLI 구성 디렉터리](/ko/copilot/reference/copilot-cli-reference/cli-config-dir-reference#permissions-configjson)