Introduction
로컬 샌드박싱을 Copilot CLI 사용하도록 설정하면 운영 체제 샌드박스 내에서 사용자 대신 호출하는 명령을 실행합니다. 샌드박스는 샌드박스 프로세스 또는 작업에서 읽을 수 있는 경로, 쓸 수 있는 경로 및 전혀 건드리지 못하는 경로를 결정하는 규칙 집합인 파일 시스템 정책을 적용합니다.
이 정책의 대부분은 자동으로 어셈블되므로 일상적인 명령이 설정 없이 계속 작동합니다. 이 문서에서는 정책에 도착하는 방법과 Copilot 특정 디렉터리에서 부여하는 액세스를 확인하는 방법을 설명합니다.
로컬 샌드박싱을 켜고 끄는 방법을 포함하여 로컬 샌드박싱에 대한 개요는 AUTOTITLE 및 AUTOTITLE 을 참조 하세요. 로컬 샌드박싱을 구성하는 방법에 대한 자세한 내용은 로컬 샌드박스 설정 구성을 참조하세요.
정책이 적용되는 대상
파일 시스템 정책은 사용자 대신 수행하는 작업을 Copilot 다루지만 작업 종류에 따라 다른 방식으로 적용됩니다.
- 셸 명령 및 기본 제공 검색 은 샌드박스 자식 프로세스로 실행되므로 운영 체제에서 정책을 직접 적용합니다. 예를 들어
glob및grep도구는 ripgrep를 샌드박스된 자식 프로세스로 실행합니다. - 로컬 MCP 및 LSP(언어 서버 프로세스) 는 기본적으로 샌드박스 내에서 실행되므로 운영 체제도 해당 프로세스에 정책을 적용합니다. 관리 정책에서 요구하지 않는 한 샌드박스 설정에서 이를 변경할 수 있습니다.
- 기본 제공 파일 읽기 및 파일 편집 도구 는 샌드박스가 있는 자식 프로세스가 아닌 자체의 Copilot CLI 일부로 실행됩니다. 파일을 읽거나 쓰기 전에 동일한 파일 시스템 정책을 확인하지만 운영 체제 샌드박스에서 이러한 작업을 볼 수 없으므로 확인은 운영 체제에서 적용하는 것이 아니라 소프트웨어 전용 보호 장치입니다.
- 원격 MCP 서버 는 컴퓨터 외부에서 실행되므로 샌드박스에 대한 로컬 자식 프로세스가 없으며 파일 시스템 정책이 이를 제한하지 않습니다. 샌드박스 MCP 서버가 활성화된 경우 CLI에서의 연결은 네트워크 정책에 의해 계속 제한될 수 있습니다.
- 하위 에이전트는 다른 도구를 사용하여 작업을 수행합니다. 정책이 적용되는지 여부와 방법은 스바겐트가 호출하는 도구에 따라 달라집니다.
따라서 샌드박스 처리 프로세스 는 운영 체제에 의해 제한되는 반면, 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에서는 명령이 공유 라이브러리를 로드하고 시스템 구성을 변경할 수 없도록 표준 시스템 위치에 읽기 전용 권한이 부여됩니다. 사용자 프로필의 애플리케이션 디렉터리(예: Windows 하위 디렉터리 또는 ~/.local/bin macOS 및 ~/.local/lib Linux의 %LOCALAPPDATA%\Programs 디렉터리)에도 개발 도구 액세스 허용을 사용하도록 설정할 때 읽기 전용 권한이 부여되므로 명령은 수정할 수 없이 설치한 도구를 읽을 수 있습니다.
패키지 관리자 캐시
개발 도구 액세스 허용이 활성화되면, Copilot은 일반적인 패키지 관리자 및 도구 체인에서 사용하는 캐시 및 레지스트리에 대한 액세스 권한을 부여합니다. 대부분의 위치는 읽기 전용입니다. npm의 캐시, 빌드 캐시 및 일부 종속성 저장소와 같은 선택한 위치는 쓰기 가능하므로 설치 및 빌드가 작동할 수 있습니다.
이러한 권한은 프로젝트에서 검색된 명령 및 도구에 따라 달라집니다. 일반적인 디렉터리 외부에서 구성한 캐시 위치를 추적할 수 있습니다. 권한이 부여된 일부 구성 파일에는 레지스트리 자격 증명이 포함되며, 쓰기 가능한 캐시는 샌드박스 외부에서 실행하는 명령과 공유할 수 있습니다. 이러한 위치를 직접 부여하려면 개발 도구 액세스 허용을 끕니다.
/sandbox policy 보고서에서 개발 도구 섹션에는 검색된 도구 및 해당 경로가 나열됩니다. 선택한 쓰기 가능 캐시는 명령이 필요할 때 만들어지므로 처음 사용하기 전에 보고서에 표시되지 않을 수 있습니다.
Git 리포지토리
Git 리포지 Copilot 토리의 하위 디렉터리에서 작업하는 경우 명령이 전체 프로젝트를 볼 수 있도록 전체 리포지토리에 대한 읽기 권한을 부여하고 현재 작업 디렉터리 및 리포지토리의 Git 메타데이터(.git해당 디렉터리)에 대한 쓰기를 제한합니다. 이렇게 하면 명령이 리포지토리 전체에서 읽을 수 있지만 작업 중인 위치에 초점을 맞춘 변경 내용이 유지됩니다.
읽기 액세스는 전체 리포지토리에 걸쳐 있으므로 샌드박스가 적용된 명령은 프로젝트의 다른 곳에 저장된 중요한 항목을 포함하여 현재 하위 디렉터리 외부의 파일을 읽을 수 있습니다. 특정 경로가 도달할 수 없도록 하려면 거부 규칙을 추가할 수 있습니다. 로컬 샌드박스 설정 구성을(를) 참조하세요.
액세스 규칙이 겹치는 경우
여러 위치를 부여하고 고유한 위치를 추가할 수 있으므로 Copilot 규칙이 겹칠 수 있습니다. 읽기 전용 및 읽기/쓰기 권한 부여가 겹치면 보다 구체적인 경로가 우선합니다. 예를 들어 /project은(는) 쓰기 가능하지만 /project/secrets을(를) 읽기 전용으로 표시하면 /project/secrets의 모든 항목은 /project를 제외하고 쓰기 가능한 상태로 유지됩니다. 거부된 경로는 두 종류의 허용보다 우선합니다.
발견된 도구 디렉터리 권한 부여는 이를 이미 포함하는 읽기/쓰기 액세스로 대체됩니다.
PATH에 로컬 가상 환경(.venv)이 표시되는 Python 프로젝트가 있다고 가정해 보겠습니다. 해당 디렉터리를 일반 읽기 전용 도구 위치로 처리하면 쓰기 가능한 프로젝트 내에 있더라도 읽기 전용이 되며, 환경을 업데이트하려고 할 때와 같은 pip install 명령이 실패할 수 있습니다.
Copilot은 작업 영역의 일부로 두어 쓰기가 가능하도록 둡니다. 직접 구성한 규칙을 포함하여 다른 읽기 전용 규칙은 이러한 방식으로 폐기되지 않습니다.
동일한 경로가 자동으로 검색되었더라도 사용자가 구성한 규칙이 제거되지 않습니다. 이를 사용하여 기존 .env 파일과 같은 민감한 위치에 대한 액세스를 제한할 수 있습니다. 누락된 경로 및 기호 링크는 파일 시스템 액세스 문제 해결에 설명된 대로 추가적인 주의가 필요합니다.
현재 정책에서 허용하는 내용 확인
정책은 각 디렉터리 및 명령에 대해 어셈블되므로 액세스 권한을 확인하는 가장 간단한 방법은 요청하는 Copilot CLI것입니다. 세션에서 다음을 입력합니다.
/sandbox policy
/sandbox policy
Copilot 는 현재 디렉터리에 대한 유효 정책을 인쇄합니다. 경로는 사용자가 구성한 경로 및 개발 도구와 같은 출처와 액세스 수준별로 그룹화됩니다. 또한 이 보고서에는 네트워크 설정 및 바이패스, MCP/LSP 샌드박싱 및 인증과 같은 설정을 다루는 Capabilities 섹션이 포함되어 있습니다. 이는 저장된 설정의 복사본이 아니라 자동 권한 부여, 설정 및 관리 제한 사항이 결합된 후의 결과입니다.
특정 명령에 대한 개발자 도구 액세스를 검사하려면 policy 뒤에 명령을 추가합니다. 다음은 그 예입니다.
/sandbox policy npm install
/sandbox policy npm install
이 작업은 실행 npm install되지 않습니다. 도구가 명령이 받게 될 액세스 권한을 보여줍니다. 미리 보기에서는 없거나 액세스가 거부된 경로 및 도구 캐시를 포함하여 디렉터리를 생성하지 않습니다.
보고서를 읽을 때 유의해야 할 몇 가지 사항은 다음과 같습니다.
- 현재 디렉터리를 반영합니다. 권한 부여는 디렉터리별로 검색되므로 실행 위치에 따라 동일한 설정이 다른 경로로 확인될 수 있습니다.
- 포함할 수 없었던 구성된 경로는 메모에서 확인하세요. 읽기/쓰기 또는 읽기 전용 권한 부여가 없는 항목은 생략됩니다. Linux에서 없는 거부 경로는 이 미리 보기에서 생략되지만 시작 준비에서는 정책을 적용하기 전에 해당 경로를 만듭니다. 미리 보기는 macOS 및 거부된 경로를 지원하는 Windows 호스트에서 해당 항목을 유지합니다.
- 샌드박싱이 비활성화되어 있으면 적용되는 제한이 없으므로,
/sandbox policy는 정책을 출력하는 대신 그 사실을 알려줍니다.
샌드박싱이 현재 켜져 있는지만 확인하려면 /sandbox status을 사용하세요. 이러한 명령에 대한 자세한 내용은 로컬 샌드박싱 사용을 참조하세요.
파일 시스템 액세스 문제 해결
구성된 읽기/쓰기 또는 읽기 전용 경로가 존재하지 않으면 명령을 다시 시작하기 전에 샌드박스 외부에서 만듭니다. 실행 중인 자식 프로세스는 시작 시 받은 정책을 유지합니다. 나중에 경로를 만들어도 해당 프로세스에 누락된 권한이 추가되지는 않습니다. 업데이트된 액세스가 필요한 경우 장시간 실행 중인 서버를 다시 시작합니다.
샌드박스 처리된 프로세스가 시작되기 전에 Copilot CLI가 머신에 누락된 거부 경로 및 해당 부모 디렉터리를 만듭니다. 여기에는 파일용 경로가 포함되므로 .env가 누락되면 디렉터리가 됩니다. 프로세스가 종료된 후에도 디렉터리는 남아 있습니다.
액세스가 거부된 경로를 준비할 수 없는 경우 프로세스가 시작되지 않습니다. 읽기 전용 /sandbox policy 미리 보기는 이 준비를 수행하지 않으므로 누락된 거부 경로가 Linux에서 생략됩니다. 문제 해결은 로컬 샌드박싱 사용을 참조하세요.
허용된 디렉터리 내의 기호 링크는 해당 디렉터리 외부의 대상에 대한 액세스를 보장하지 않습니다. 거부 메시지가 이러한 대상의 이름을 지정하는 경우 해당 대상을 검사하고 의도한 경우에만 액세스 권한을 부여합니다. 해결 가능한 심볼릭 링크 자체를 /sandbox config을 통해 추가하면 읽기/쓰기 또는 읽기 전용 액세스를 위한 현재 대상도 추가됩니다. 수동 경로 규칙 및 자동으로 검색된 개발자 도구 권한은 해당 대상을 자동으로 추가하지 않습니다.
거부된 경로는 허용 경로와 다르게 처리됩니다. CLI는 기록된 경로와 현재 대상을 확인하여 결정합니다. Linux에서 거부된 기호 링크는 대상을 보호하지만 링크 자체가 대체되는 것을 안정적으로 방지하지는 않습니다. 기호 링크 규칙만 사용하는 대신 실제 민감한 디렉터리를 거부하는 것이 좋습니다.
네트워크 오류, 관리되는 제한 사항 및 우회 옵션에 대해서는 차단된 명령 문제 해결을 참조하세요.
정책 사용자 지정
추가 읽기/쓰기 또는 읽기 전용 경로를 부여하고, 경로를 거부하고, 대화 상자 또는 설정 파일에서 다른 파일 시스템 동작을 /sandbox config 변경할 수 있습니다. 변경한 후 실행 /sandbox policy 하여 결과를 확인합니다. 단계별 지침은 로컬 샌드박스 설정 구성을 참조하세요.
엔터프라이즈 관리 정책
엔터프라이즈 소유 조직을 통해 가져오는 Copilot 경우 관리자는 관리되는 설정을 통해 파일 시스템 정책을 적용할 수 있습니다. 관리되는 설정은 제한적인 기준 역할을 합니다. 샌드박싱이 필요하고, 거부된 경로를 추가하고, 부여할 수 있는 경로를 제한할 수 있습니다. 관리되는 설정이 적용되는 경우 /sandbox config 대화 상자에는 잠금된 (관리형) 값으로 표시되고, /sandbox policy에는 해당 값이 확정된 정책에 반영되어 표시됩니다. 유효 정책이 샌드박스 바이패스를 허용하는 경우 사용자는 활성 바이패스 권한 프롬프트에서 또는 실행 /sandbox disable하여 현재 세션의 나머지 부분에 대해 샌드박싱을 명시적으로 사용하지 않도록 설정할 수 있습니다. 이 세션 옵트아웃은 저장된 정책을 완화하지 않습니다.
단일 원본이 승리하는 대부분의 설정과 달리 샌드박스 정책은 모든 원본에서 한 번에 구성됩니다. 관리되는 설정은 서버 관리형, MDM, 파일 기반 등 둘 이상의 채널을 통해 동시에 전달될 수 있으며, 이러한 설정은 서로 간은 물론 사용자 자신의 설정과도 어느 한 소스가 다른 소스를 덮어쓰는 방식이 아니라 가장 제한적인 방향으로 결합됩니다. 즉, 필수 토글은 계속 켜진 상태로 유지되고, 모든 소스에서 거부된 경로는 누적되며, 사용자가 허용할 수 있는 경로 범위는 더 좁아질 뿐입니다. 자세한 내용은 엔터프라이즈 관리 설정을(를) 참조하세요.