Skip to main content

에서 로컬 샌드박싱에 대한 파일 시스템 정책 이해 GitHub Copilot CLI

로컬 샌드박싱을 사용하도록 설정 Copilot CLI 하면 읽고 쓸 수 있는 파일 및 디렉터리를 제어하는 파일 시스템 정책에 따라 각 샌드박스 처리 또는 작업을 실행합니다. 해당 정책을 빌드하는 방법과 해당 정책이 부여하는 액세스 권한을 확인하는 방법을 알아봅니다.

참고

로컬 샌드박스가 GitHub Copilot 있으며 공개 미리 보기 변경될 수 있습니다.

중요

Windows 로컬 샌드박싱에는 Windows 참가자 빌드가 필요합니다.

Introduction

로컬 샌드박싱을 Copilot CLI 사용하도록 설정하면 운영 체제 샌드박스 내에서 사용자 대신 호출하는 명령을 실행합니다. 샌드박스는 샌드박스 프로세스 또는 작업에서 읽을 수 있는 경로, 쓸 수 있는 경로 및 전혀 건드리지 못하는 경로를 결정하는 규칙 집합인 파일 시스템 정책을 적용합니다.

이 정책의 대부분은 자동으로 어셈블되므로 일상적인 명령이 설정 없이 계속 작동합니다. 이 문서에서는 정책에 도착하는 방법과 Copilot 특정 디렉터리에서 부여하는 액세스를 확인하는 방법을 설명합니다.

로컬 샌드박싱을 켜고 끄는 방법을 포함하여 로컬 샌드박싱에 대한 개요는 AUTOTITLE 및 AUTOTITLE 을 참조 하세요.

정책이 적용되는 대상

파일 시스템 정책은 사용자 대신 수행하는 작업을 Copilot 다루지만 작업 종류에 따라 다른 방식으로 적용됩니다.

  • 셸 명령 및 기본 제공 검색 은 샌드박스 자식 프로세스로 실행되므로 운영 체제에서 정책을 직접 적용합니다. 예를 들어 globgrep 도구는 ripgrep를 샌드박스된 자식 프로세스로 실행합니다.
  • 로컬 MCP 및 LSP(언어 서버 프로세스) 도 샌드박스 내에서 실행할 수 있으므로 운영 체제에서도 정책을 적용합니다.
  • 기본 제공 파일 읽기 및 파일 편집 도구 는 샌드박스가 있는 자식 프로세스가 아닌 자체의 Copilot CLI 일부로 실행됩니다. 파일을 읽거나 쓰기 전에 동일한 파일 시스템 정책을 확인하지만 운영 체제 샌드박스에서 이러한 작업을 볼 수 없으므로 확인은 운영 체제에서 적용하는 것이 아니라 소프트웨어 전용 보호 장치입니다.
  • 원격 MCP 서버 는 컴퓨터 외부에서 실행되므로 샌드박스에 대한 로컬 자식 프로세스가 없으며 파일 시스템 정책이 이를 제한하지 않습니다.
  • 하위 에이전트는 직접 동작하지 않으며, 다른 도구를 조정합니다. 정책이 적용되는지 여부와 방법은 스바겐트가 호출하는 도구에 따라 달라집니다.

따라서 샌드박스 처리 프로세스 는 운영 체제에 의해 제한되는 반면, In-Process 작업은 소프트웨어에서 동일한 정책을 적용하므로 이 문서에서는 명령만이 아닌 샌드박스 처리 또는 작업을 참조합니다.

권한 수준

샌드박스는 기본적으로 거부됩니다. 경로가 명시적으로 부여되지 않는 한 명령은 이를 사용할 수 없습니다. 정책의 모든 경로에는 다음 세 가지 권한 수준 중 하나가 있습니다.

  • 읽기/쓰기 - 이 명령은 이 경로에서 파일을 읽고 수정할 수 있습니다.
  • 읽기 전용 - 명령은 이 경로에서 파일을 읽을 수 있지만 변경할 수는 없습니다.
  • 거부됨 - 이 명령은 더 넓은 규칙이 허용하지 않더라도 이 경로에서 읽거나 쓸 수 없습니다.

액세스는 권한이 부여된 경우에만 허용되므로, Copilot는 명령이 정당하게 필요로 하는 모든 항목(프로젝트 파일, 실행하는 도구, 임시 디렉터리와 같은 지원 위치 등)에 대한 접근 권한을 부여하되, 그 밖의 모든 항목에는 접근할 수 없도록 유지해야 합니다.

참고

이러한 권한 수준은 모든 샌드박스 프로세스 또는 작업에 적용되지만 다르게 적용됩니다. 샌드박스 자식 프로세스의 경우 운영 체제에서 직접 적용하는 반면 CLI의 기본 제공 파일 읽기 및 파일 편집 도구는 운영 체제 백스톱 없이 소프트웨어에서 동일한 수준을 확인합니다.

정책 빌드 방법

샌드박스가 적용된 각 프로세스가 시작되기 전에 현재 작업 디렉터리, Copilot CLI 환경, 설정 및 자동 부여를 사용하여 해당 프로세스에 대한 효과적인 정책을 확인합니다. 이렇게 하면 프로세스가 필요한 액세스로만 제한되며 이러한 공통 위치를 직접 관리할 필요가 없습니다.

작업 디렉터리

기본적으로 로컬 샌드박싱에 대한 파일 시스템 설정에서 작업 디렉터리 포함 을 사용하도록 설정하면 현재 작업 디렉터리에 읽기/쓰기 권한이 부여됩니다. Git 리포지토리에서 Copilot는 관련 Git 권한 부여도 추가합니다. 이 설정을 해제하면 모든 자동 부여가 표시되지 않으므로 필요한 프로젝트 및 Git 경로에 대한 허용 규칙을 수동으로 추가해야 합니다. 로컬 샌드박스 설정 구성을(를) 참조하세요.

참고

엔터프라이즈 소유 조직에서 가져오는 Copilot 경우 관리자는 작업 디렉터리 포함 설정을 해제하고 잠글 수 있으므로 다시 설정할 수 없습니다. 엔터프라이즈 관리 설정을(를) 참조하세요.

PATH에 있는 도구

같은 python``git프로그램을 실행하려면 샌드박스에서 프로그램이 있는 디렉터리를 명령에 표시하도록 해야 합니다. Copilot이 활성화되면(기본적으로 활성화되어 있음) **** 에서는 **** 환경 변수에 나열된 디렉터리와 GOPATH, JAVA_HOME, PYTHONPATH 같은 관련 도구 변수로 지정된 디렉터리에 PATH 액세스 권한을 부여합니다. 읽기 전용은 외부 도구에 올바른 권한 수준입니다. 명령은 git를 실행해야 하며, 이를 수정하는 것이 아닙니다. 개발 도구 액세스 허용을 끄면 이러한 디렉터리에 더 이상 자동으로 권한이 부여되지 않으며, 사용자가 직접 정의한 허용 규칙에 따라 허용되어야 합니다. 샌드박스가 검사하는 PATH 및 툴체인 환경 변수의 전체 목록과 각 항목이 어떻게 해석되는지에 대해서는 GitHub Copilot CLI 명령 참조을 참조하세요.

시스템 및 프로필 위치

macOS에서는 명령이 공유 라이브러리를 로드하고 시스템 구성을 변경할 수 없도록 표준 시스템 위치에 읽기 전용이 부여됩니다. 사용자 프로필의 애플리케이션 디렉터리도 개발 도구 액세스 허용 을 사용하도록 설정한 경우 읽기 전용으로 부여되므로 명령은 수정하지 않고도 설치한 도구를 읽을 수 있습니다.

패키지 관리자 캐시

샌드박스 Copilot 내에서 설치 및 빌드가 작동하도록 하려면 일반적인 패키지 관리자 및 도구 체인에서 사용하는 캐시 및 레지스트리에 대한 액세스 권한도 부여합니다. 대부분의 위치에서는 읽기 전용이며 빌드 캐시 및 패키지 관리자 종속성 저장소와 같은 선택한 쓰기 가능한 위치에 대해 읽기/쓰기가 가능합니다. /sandbox policy 보고서에서는 개발 도구 액세스로 표시됩니다.

Git 리포지토리

Git 리포지 Copilot 토리의 하위 디렉터리에서 작업하는 경우 명령이 전체 프로젝트를 볼 수 있도록 전체 리포지토리에 대한 읽기 권한을 부여하고 현재 작업 디렉터리 및 리포지토리의 Git 메타데이터(.git해당 디렉터리)에 대한 쓰기를 제한합니다. 이렇게 하면 명령이 리포지토리 전체에서 읽을 수 있지만 작업 중인 위치에 초점을 맞춘 변경 내용이 유지됩니다.

읽기 액세스는 전체 리포지토리에 걸쳐 있으므로 샌드박스가 적용된 명령은 프로젝트의 다른 곳에 저장된 중요한 항목을 포함하여 현재 하위 디렉터리 외부의 파일을 읽을 수 있습니다. 특정 경로가 도달할 수 없도록 하려면 거부 규칙을 추가할 수 있습니다. 로컬 샌드박스 설정 구성을(를) 참조하세요.

액세스 규칙이 겹치는 경우

여러 위치를 부여하고 고유한 위치를 추가할 수 있으므로 Copilot 규칙이 겹칠 수 있습니다. 이렇게 하면 더 구체적인 경로가 우선합니다. 예를 들어 /project은(는) 쓰기 가능하지만 /project/secrets을(를) 읽기 전용으로 표시하면 /project/secrets의 모든 항목은 /project를 제외하고 쓰기 가능한 상태로 유지됩니다. 중요한 하위 폴더를 보호하는 유용한 방법입니다.

편의상 부여된 권한이 그렇지 않으면 걸림돌이 될 경우에도, 중복은 사용자에게 유리하게 해결됩니다. PATH에 로컬 가상 환경(.venv)이 표시되는 Python 프로젝트가 있다고 가정해 보겠습니다. 해당 디렉터리를 일반 읽기 전용 도구 위치로 처리하면 쓰기 가능한 프로젝트 내에 있더라도 읽기 전용이 되며, 환경을 업데이트하려고 할 때와 같은 pip install 명령이 실패할 수 있습니다. Copilot는 이를 해결합니다. 자동으로 추가한 권한(예: PATH의 도구 디렉터리)은 이미 이를 포괄하는 더 광범위한 읽기/쓰기 권한에 우선순위를 내줍니다. 따라서 프로젝트-로컬 .venv``node_modules/.bin또는 유사한 디렉터리가 작업 영역의 일부로 쓰기 가능한 상태로 유지됩니다.

구성하는 규칙은 항상 유지됩니다. 경로를 읽기 전용으로 표시하거나 거부하면 동일한 경로가 검색되고 자동으로 부여되는 경우에도 해당 결정이 적용됩니다. 이렇게 하면 민감한 위치를 보호할 수 있는 신뢰할 만한 방법이 생깁니다. 예를 들어 .env 파일에 대한 접근을 거부하여 샌드박스된 어떤 명령도 비밀 정보를 읽지 못하게 할 수 있습니다.

현재 정책에서 허용하는 내용 확인

정책은 각 디렉터리 및 명령에 대해 어셈블되므로 액세스 권한을 확인하는 가장 간단한 방법은 요청하는 Copilot CLI것입니다. 세션에서 다음을 입력합니다.

Shell
/sandbox policy

Copilot 는 현재 디렉터리에 대한 유효 정책을 출력합니다. 여기서 시작된 명령이 실제로 수신하는 읽기/쓰기, 읽기 전용 및 거부된 경로와 함께 네트워크 액세스 및 개발 도구 액세스가 적용됩니다. 이것은 자동 부여된 권한과 사용자의 설정을 결합하고 중복을 해소한 뒤의 최종 반영 결과이며, 저장된 설정을 그대로 복사한 것만은 아닙니다.

보고서를 읽을 때 유의해야 할 몇 가지 사항은 다음과 같습니다.

  • 현재 디렉터리를 반영합니다. 권한 부여는 디렉터리별로 검색되므로 실행 위치에 따라 동일한 설정이 다른 경로로 확인될 수 있습니다.
  • 구성한 경로가 디스크에 없으면 정책에서 제외되고 메모 섹션에 기록됩니다. 이렇게 하면 추가한 규칙이 아무런 영향을 주지 않는 것처럼 보일 수 있는 이유를 설명합니다.
  • 샌드박싱이 비활성화되어 있으면 적용되는 제한이 없으므로, /sandbox policy는 정책을 출력하는 대신 그 사실을 알려줍니다.

샌드박싱이 현재 켜져 있는지만 확인하려면 /sandbox status을 사용하세요. 이러한 명령에 대한 자세한 내용은 로컬 샌드박싱 사용을 참조하세요.

정책 사용자 지정

추가 읽기/쓰기 또는 읽기 전용 경로를 부여하고, 경로를 거부하고, 대화 상자 또는 설정 파일에서 다른 파일 시스템 동작을 /sandbox config 변경할 수 있습니다. 변경한 후 실행 /sandbox policy 하여 결과를 확인합니다. 단계별 지침은 로컬 샌드박스 설정 구성을 참조하세요.

엔터프라이즈 관리 정책

엔터프라이즈 소유 조직을 통해 가져오는 Copilot 경우 관리자는 관리되는 설정을 통해 파일 시스템 정책을 적용할 수 있습니다. 관리되는 설정은 제한적인 기준 역할을 합니다. 샌드박싱이 필요하고, 거부된 경로를 추가하고, 부여할 수 있는 경로를 제한할 수 있습니다. 관리되는 설정이 적용되는 경우 /sandbox config 대화 상자에는 잠금된 (관리형) 값으로 표시되고, /sandbox policy에는 해당 값이 확정된 정책에 반영되어 표시됩니다. 유효 정책이 샌드박스 바이패스를 허용하는 경우 사용자는 활성 바이패스 권한 프롬프트에서 현재 세션의 나머지 부분에 대해 샌드박싱을 명시적으로 사용하지 않도록 설정할 수 있습니다. 이 세션 옵트아웃은 저장된 정책을 완화하지 않습니다.

단일 원본이 승리하는 대부분의 설정과 달리 샌드박스 정책은 모든 원본에서 한 번에 구성됩니다. 관리되는 설정은 서버 관리형, MDM, 파일 기반 등 둘 이상의 채널을 통해 동시에 전달될 수 있으며, 이러한 설정은 서로 간은 물론 사용자 자신의 설정과도 어느 한 소스가 다른 소스를 덮어쓰는 방식이 아니라 가장 제한적인 방향으로 결합됩니다. 즉, 필수 토글은 계속 켜진 상태로 유지되고, 모든 소스에서 거부된 경로는 누적되며, 사용자가 허용할 수 있는 경로 범위는 더 좁아질 뿐입니다. 자세한 내용은 엔터프라이즈 관리 설정을(를) 참조하세요.

추가 읽기