Skip to main content
Skip to content

클라우드 및 로컬 샌드박스에 대하여 GitHub Copilot

클라우드 및 로컬 샌드박스는 로컬 컴퓨터 또는 완전히 격리된 클라우드 환경에서 Copilot 코드, 도구, 파일 시스템 및 네트워크 리소스와 안전하게 상호 작용할 수 있는 격리된 실행 환경을 제공합니다.

참고

GitHub Copilot용 클라우드 샌드박스는 공개 미리 보기 상태이며 변경될 수 있습니다.

Introduction

Copilot 클라우드 및 로컬 샌드박스는 GitHub Copilot CLI 및 GitHub Copilot app를 위한 안전한 샌드박스 환경을 지원하는 실행 플랫폼입니다. Copilot 도구를 실행하고, 명령을 실행하고, 파일을 수정하는 등 사용자를 대신하여 더 많은 작업을 수행할 때 샌드박싱은 에이전트 워크플로를 안전하게 채택하는 데 필요한 격리, 이식성 및 정책 제어를 제공합니다.

샌드박싱은 둘 다 GitHub Copilot CLIGitHub Copilot app에서 사용할 수 있지만 두 표면은 다르게 노출됩니다.

  • 여기서는 Copilot CLI이 문서에 설명된 명령 및 설정을 사용하여 로컬 및 클라우드 샌드박싱을 모두 제어합니다.
  • GitHub Copilot app클라우드 샌드박스에서 세션을 실행하거나 로컬 리포지토리 및 작업 트리 세션에 로컬 샌드박싱을 사용할 수 있습니다. 리포지토리 설정은 새 로컬 세션의 기본값을 정의하며 활성 로컬 세션에 대한 샌드박싱을 변경할 수 있습니다. 자세한 내용은 GitHub Copilot 앱에서 에이전트 세션 사용하기을(를) 참조하세요.

로컬 샌드박스 설정은 Copilot CLI 및 GitHub Copilot app에서 각각 별도로 구성됩니다. 한 화면에서 로컬 샌드박싱을 사용하거나 구성해도 다른 화면에서는 변경되지 않습니다.

샌드박싱을 사용하면 실행할 위치를 Copilot 선택할 수 있습니다.

  • 로컬 샌드박싱: 사용자 고유의 컴퓨터에서 안전하게 실행 Copilot 합니다. 실행되는 명령은 Copilot 파일 시스템, 네트워크 및 시스템 기능에 대한 액세스를 제한합니다. 추가 비용 없이 로컬 샌드박싱을 사용할 수 있습니다.
  • 클라우드 샌드박싱: 완전히 격리된 임시 Linux 환경 내에서 전체 Copilot 세션을 원격으로 실행합니다 GitHub. 클라우드 샌드박싱은 사용량에 따라 청구됩니다.

로컬 샌드박싱

로컬 샌드박싱을 사용하면 Copilot 파일 시스템, 네트워크 연결 및 시스템 기능에 대한 액세스가 제한되어 컴퓨터에서 직접 샌드박스로 처리된 환경에서 실행할 수 있습니다. 로컬 샌드박싱을 Copilot CLIGitHub Copilot app구성할 수 있습니다.

로컬 샌드박싱은 기본적으로 꺼져 있습니다. 이 명령을 사용하도록 설정할 때까지 실행되는 셸 명령은 Copilot 사용자 계정과 동일한 액세스 권한으로 컴퓨터에서 직접 실행됩니다. 사용자가 할 수 있는 모든 위치에서 읽고, 쓰고, 삭제하고, 컴퓨터가 연결할 수 있는 네트워크에 도달하고, 제한 없이 자격 증명을 사용할 수 있습니다. 로컬 샌드박싱을 사용하도록 설정하면 제어하는 정책에 대한 액세스가 제한됩니다.

로컬 샌드박싱 작동 방식

로컬 샌드박싱은 각 운영 체제에서 사용할 수 있는 격리 메커니즘에 공통 인터페이스를 제공하는 플랫폼 간 기술인 Microsoft mXC(eXecution Container)를 통해 구동됩니다. Copilot CLI 는 적용하려는 샌드박스 정책(읽을 수 있거나 쓰기 가능한 경로, 네트워크 액세스 허용 여부 등)을 선언하고 MXC는 운영 체제에 적절한 격리 백 엔드를 사용하여 해당 정책을 적용합니다.

격리 기술은 전체 하이퍼바이저 또는 컨테이너와 같은 강력한 격리에서 OS 수준 프로세스 및 파일 시스템 포함과 같은 더 가벼운 격리에 이르기까지 스펙트럼에 존재합니다. 로컬 샌드박싱은 현재 이 스펙트럼의 더 가벼운 끝에 위치합니다. 프로세스에서 네트워크에서 읽고 쓰고 연결할 수 있는 것을 제한하지만 별도의 가상 머신 또는 컨테이너 내에서 명령을 실행하지는 않습니다. 이 수준의 격리가 보안 요구 사항을 충족하는지 여부를 평가하려면 구현 세부 정보는 microsoft/mxc 리포지토리 를 참조하세요.

자세한 내용은 에서 로컬 샌드박싱에 대한 파일 시스템 정책 이해 GitHub Copilot CLI을(를) 참조하세요.

로컬 샌드박스 활성화

세션 내에서 로컬 샌드박싱을 사용하도록 설정하려면 다음을 Copilot CLI 실행합니다.

Shell
/sandbox enable

로컬 샌드박싱을 사용하도록 설정하면 에이전트가 사용자 대신 실행하는 명령 및 도구가 시스템에 대한 액세스를 제한하는 운영 체제 수준 샌드박스 내에서 실행됩니다. 여기에는 셸 명령, 파일 검색 및 기본적으로 모든 로컬 MCP 및 언어(LSP) 서버가 포함됩니다. Copilot는 /sandbox disable를 실행하여 사용하지 않도록 설정할 때까지 이후 세션을 포함하여 로컬 샌드박싱을 계속 사용합니다.

엔터프라이즈 관리 설정에 샌드박싱이 필요한 경우 일반 설정 및 시작 옵션으로 이를 해제할 수 없습니다. 유효 정책이 샌드박스 바이패스를 허용하는 경우, 바이패스 권한 프롬프트에서 또는 /sandbox disable를 실행하여 여전히 현재 세션의 나머지 부분에 대해 샌드박싱을 사용하지 않도록 설정할 수 있습니다. 이렇게 하면 저장된 정책이 변경되지 않습니다.

CLI의 기본 제공 파일 도구(sed 같은 셸 명령이 아니라 CLI 자체에 포함된 명령)는 CLI 프로세스 내에서 실행됩니다. CLI 자체는 샌드박스가 아니므로 운영 체제 샌드박스는 이러한 도구가 수행하는 파일 작업을 볼 수 없으며 이를 제한할 수 없습니다. 대신, 샌드박스 정책 자체를 확인하고 구성된 설정을 최대한 활용하기 위해 기본 제공 도구가 코딩됩니다.

GitHub Copilot app에서 리포지토리 설정은 새 로컬 리포지토리 및 작업 트리 세션에 대한 로컬 샌드박싱 기본값을 정의합니다. 리포지토리 기본값을 변경하지 않고 활성 로컬 세션에 대한 샌드박싱을 변경할 수도 있습니다.

Copilot CLI 및 Copilot app에서 로컬 샌드박싱을 사용하도록 설정하는 방법에 대한 자세한 내용은 로컬 샌드박싱 사용을 참조하세요.

로컬 샌드박싱 구성

기본 로컬 샌드박싱 동작을 사용하거나 Copilot이(가) 접근할 수 있는 항목을 수정할 수 있습니다. 사용 가능한 컨트롤은 사용하는 표면에 따라 달라집니다.

에서 Copilot CLI액세스의 여러 차원을 제어할 수 있습니다.

  • 파일 시스템: 특정 경로에 대한 읽기 전용 또는 읽기/쓰기 액세스 권한을 부여하거나 경로를 거부합니다.
  • 네트워크: 아웃바운드 인터넷 액세스 및 로컬 네트워크 액세스를 제어하거나 특정 호스트를 허용하거나 차단합니다. 사용 가능한 제한 사항은 운영 체제에 따라 다릅니다.
  • 자격 증명: Git 및 GitHub CLI (gh) 인증을 사용하도록 설정하거나 추가 환경 변수를 마스킹합니다. 샌드박스가 적용된 도구는 자리 표시자를 수신하고 로컬 프록시는 승인된 HTTPS 대상에만 실제 자격 증명을 제공합니다.
  • 하위 프로세스: 로컬 MCP 서버 및 언어 서버도 샌드박스 내에서 실행되는지 여부를 선택합니다. 원격 MCP 서버는 샌드박스가 지정되지 않습니다.
  • 키 집합(macOS): 샌드박스 내에서 시스템 키 집합에 연결할 수 있는지 여부를 선택합니다.
  • 명령별 예외: 더 광범위한 액세스가 필요한 경우 개별 명령이 샌드박스 외부에서 실행되지 않도록 허용하거나 방지합니다.

GitHub Copilot app리포지토리 설정에서 이러한 컨트롤의 하위 집합을 노출합니다.

  • 파일 시스템: 특정 경로에 대한 추가 읽기 전용 또는 읽기/쓰기 액세스 권한을 부여하거나 경로를 거부합니다.
  • 네트워크: 아웃바운드 인터넷 및 로컬 네트워크 액세스를 허용하거나 차단합니다.
  • 자격 증명: 샌드박스 내에서 Git 및 GitHub CLI 자격 증명을 사용할 수 있는지 여부를 선택합니다.

또한 앱은 샌드박스 외부에서 실행되도록 개별 명령을 승인하도록 요청할 수 있습니다. 리포지토리 설정에서 바이패스 요청이 허용되는지 여부를 구성할 수 없습니다. 앱 또는 CLI에서 로컬 샌드박싱을 구성하는 방법에 대한 자세한 내용은 로컬 샌드박스 설정 구성을 참조하세요.

교차 플랫폼 지원

로컬 샌드박싱은 macOS, Linux 및 최근 Windows 11 빌드에서 사용할 수 있습니다. 각 운영 체제는 서로 다른 격리 백 엔드를 사용하므로 요구 사항은 서로 다릅니다.

  • macOS는 Seatbelt 백엔드를 사용합니다. Copilot CLI 는 프로세스 범위 프로필을 각 샌드박스 명령에 적용합니다. macOS 15(Sequoia) 이상을 사용합니다. Copilot CLI 는 이전 macOS를 차단하지 않지만 백 엔드는 테스트되지 않습니다.
  • Linux 는 bubblewrap 백 엔드를 사용합니다. bubblewrap 0.5.0 이상을 설치하고 bwrap이(가) PATH에 포함되어 있는지 확인하세요. bwrap에서 사용 중인 /sandbox의 버전이 너무 오래되었다고 보고하면 패키지를 업그레이드하세요. 샌드박스 정책에서 아웃바운드 트래픽을 허용하는 경우 다음 항목도 있어야 합니다.
    •           사용자의 `PATH`에 있는 `slirp4netns`.
      
    • util-linux 2.35 이상부터 --map-current-user 및 --keep-caps를 지원하는 unshare 및 nsenter.
    • iptables, ip6tables, 그리고 해당 복원 바이너리. nf_tables 백엔드를 사용합니다. 레거시 백엔드도 동작하지만, /run/xtables.lock에 쓸 수 있는 경우에만 가능합니다.
    • /dev/net/tun에 액세스합니다.
  • Windows 샌드박싱을 지원하는 최근 Windows 11 업데이트가 필요합니다. 거부된 경로, localhost 연결 및 프록시와 같은 기능에 대한 지원도 Windows 버전에 따라 달라집니다. 호스트가 요청된 기능을 지원할 수 없는 경우 Copilot CLI가 약한 제한으로 명령을 실행하는 대신 요구 사항을 보고합니다. Copilot 샌드박싱에 대한 Windows 업데이트 정보를 참조하세요.

프록시 지원

Copilot CLI에서는 호스트 규칙 및 HTTP 프록시 설정은 기본 제공 로컬 프록시를 사용합니다. 적용은 운영 체제에 따라 다릅니다.

  • macOS 및 Linux: 샌드박스는 로컬 프록시에 대한 아웃바운드 연결을 제한합니다. 프록시 설정을 무시하는 프로그램은 대신 직접 연결할 수 없습니다. 크로스 플랫폼 지원에 나열된 아웃바운드 트래픽에 대한 Linux 요구 사항은 프록시를 구성할 때도 적용됩니다.
  • Windows: 프록시 및 호스트 규칙을 사용하려면 지원되는 Windows 버전이 필요하며 로컬 네트워크 허용이(가) 켜져 있어야 합니다. Windows에서 샌드박스는 프록시 설정을 따르는 프로그램에 의존합니다. 따라서 이러한 컨트롤은 macOS 및 Linux에서와 같은 직접 연결에 대한 동일한 보호를 제공하지 않습니다.

GitHub Copilot app에서 리포지토리 설정에 거부된 경로를 저장할 수 있습니다. 활성 BaseContainer 기능이 거부된 경로를 적용할 수 없는 경우 샌드박스 명령이 약한 정책을 사용하거나 샌드박스 없이 실행하는 대신 실패합니다.

Linux에서 bubblewrap은 셸 명령 및 로컬 MCP 또는 LSP 서버를 포함하여 생성된 프로세스에 대해 로컬 네트워크 액세스를 독립적으로 제어할 수 없습니다. 로컬 네트워크 설정은 CLI와 앱 모두에서 웹 요청 및 원격 MCP 연결과 같은 프로세스 내 작업에 계속 적용됩니다.

호스트가 로컬 샌드박싱을 지원하지 않는 경우

Copilot CLI에서는 호스트가 샌드박싱을 지원하지 않는 경우 현재 세션에 대해 샌드박싱을 사용하도록 설정하는 저장된 사용자 기본 설정이 해제됩니다. 알림은 셸 명령 및 서비스가 샌드박스 없이 실행된다는 것을 설명합니다. 저장된 sandbox.enabled 설정은 변경되지 않은 상태로 유지됩니다. /sandbox enable을 지원되지 않는 호스트에서 실행하는 것은 거부됩니다.

엔터프라이즈 설정은 이 동작을 변경할 수 있습니다. 지원되지 않는 호스트에서는 유효한 관리 설정에서도 sandbox.failIfUnavailable을 true로 설정하지 않으면 샌드박싱을 사용하도록 설정하는 서버 관리형 요청이 거부됩니다. 디바이스 관리 설정은 지원되지 않는 호스트에서도 샌드박싱이 필요할 수 있습니다. 샌드박싱이 필요한 명령 및 서비스는 실행하지 않고 실패합니다. 효과적인 관리 설정이 sandbox.enabled 및 sandbox.failIfUnavailable을 모두 true로 설정하면, CLI는 샌드박싱을 적용할 수 없는 경우 해당 세션의 모델 요청 및 도구 실행을 차단합니다. 이러한 요구 사항은 서버 관리 설정, 디바이스 관리 설정 또는 둘의 조합에서 비롯할 수 있습니다.

GitHub Copilot app로컬 샌드박싱을 지원하지 않는 호스트의 경우 로컬 샌드박싱을 사용하도록 구성된 세션이 정상적으로 시작될 수 있지만, 셸 명령 및 기타 샌드박스 처리는 Copilot에서 이를 시작하려고 하면 실패합니다. GitHub Copilot app은 저장된 기본 설정을 유지하고, 실패한 작업은 플랫폼에서 샌드박싱이 지원되지 않는다고 보고합니다. 디바이스 관리 설정에는 이 장애 조치(fail-closed) 동작이 필요할 수 있으며 모델 및 도구 실행을 차단할 수 있습니다.

엔터프라이즈 정책 적용

엔터프라이즈는 로컬 샌드박싱을 요구하고 서버 관리, MDM 관리 또는 파일 기반 관리 설정을 통해 해당 구성을 적용할 수 있습니다. 엔터프라이즈 관리 설정 시작을(를) 참조하세요.

클라우드 샌드박싱

클라우드 샌드박싱을 사용하면 완전히 격리된 임시 Linux 환경에서 호스트되는 GitHub세션을 실행할 수 있습니다. Copilot CLI와 GitHub Copilot app에서 모두 클라우드 샌드박싱을 사용할 수 있습니다. 각 클라우드 샌드박스 세션은 로컬 환경 및 다른 세션에서 격리됩니다.

클라우드 샌드박싱은 id, 정책 및 청구 계층을 제공하는 GitHub Azure Container Apps 샌드박스를 기반으로 합니다.

참고

조직을 통해 Copilot를 사용하는 경우, 클라우드 샌드박싱에 대한 액세스는 조직 또는 엔터프라이즈 설정에서 해당 기능이 사용 설정되어 있는지에 따라 달라지며, 기본적으로는 비활성화되어 있습니다. 자세한 내용은 조직 또는 엔터프라이즈에 클라우드 샌드박스 사용 또는 사용 안 함을(를) 참조하세요.

클라우드 샌드박스 세션 시작

클라우드 지원 세션을 시작하려면 다음 명령을 실행합니다.

Shell
copilot --cloud --experimental

참고

클라우드 샌드박싱은 현재 실험적 기능입니다. 이를 사용하려면 Copilot CLI에 대해 실험적 기능이 활성화되어 있어야 합니다. 예를 들어, 위에 표시된 대로 CLI 세션을 시작할 때 ‑‑experimental 명령줄 옵션을 사용하면 됩니다.

‑‑cloud 명령줄 옵션은 클라우드 샌드박스 내에서 대화형 Copilot CLI 세션을 시작합니다. 로컬 세션에서 하듯이 Copilot에 작업 수행, 셸 명령 실행, 코드 반복 개선을 지시할 수 있습니다. 실행되는 명령은 Copilot 로컬 컴퓨터가 아닌 클라우드 환경에서 실행됩니다.

copilot --cloud을 실행하면 클라우드 샌드박스에서 단일 Copilot CLI 세션이 시작됩니다. 이후 Copilot 세션에는 영향을 주지 않습니다. 클라우드 샌드박스에서 새 세션을 실행할 때마다 이 옵션을 사용하여 CLI를 ‑‑cloud 시작해야 합니다.

참고

클라우드 샌드박싱은 대화형 Copilot CLI 세션에만 사용할 수 있습니다. 클라우드 샌드박스에서는 CLI를 프로그래밍 방식으로 실행할 수 없습니다. 즉, ‑‑cloud 옵션을 -p 또는 -i 옵션과 함께 사용할 수 없습니다.

GitHub Copilot app이 경우 명령을 사용하여 클라우드 샌드박스 세션을 시작하지 않습니다. 대신 새 세션을 만들 때 클라우드 샌드박스 옵션을 선택합니다. 자세한 내용은 GitHub Copilot 앱에서 에이전트 세션 사용하기을(를) 참조하세요.

디바이스에서 세션 계속

클라우드 샌드박스 세션은 GitHub호스팅 인프라에서 실행되므로 세션이 처음 시작된 위치와 관계없이 어느 기기에서나 Copilot 세션을 이어서 사용할 수 있습니다. 이렇게 하면 파일을 복사하거나 종속성을 다시 설치할 필요 없이 보다 유연한 워크플로를 사용할 수 있습니다.

계산 집약적 워크플로 오프로드

로컬 리소스를 사용하지 않고 클라우드에서 여러 Copilot 작업을 병렬로 실행할 수 있습니다. 이렇게 하면 에이전트 기반 작업의 크기를 조정하는 동안 로컬 환경이 가볍고 응답성이 유지됩니다.

통합 거버넌스

클라우드 샌드박스 정책은 정책과 동일한 구성 Copilot cloud agent 을 공유하며, 추가 설정 없이 기존 보안 제어를 클라우드 샌드박스 실행으로 확장합니다.

세션 수명 주기

클라우드 샌드박스 세션에는 세 가지 주요 상태가 있습니다.

  • 활성 상태: 세션이 실행 중이며 Copilot CLI 또는 GitHub Copilot app에서 세션과 상호 작용하고 있습니다.
  • 중지됨: 세션이 현재 실행되고 있지 않지만 해당 상태가 저장됩니다. 다시 시작하면 파일, 환경 변수 및 진행 중인 작업이 복원됩니다.
  • 삭제됨: 세션 및 저장된 상태가 제거되고 복구할 수 없습니다.

세션을 중지하면 클라우드 샌드박스는 나중에 중단한 위치를 선택할 수 있도록 해당 상태의 스냅샷을 만듭니다. 세션을 삭제하면 실행 중인 환경과 스냅샷이 모두 제거됩니다.

인증 및 액세스

샌드박싱은 기존 Copilot 인증을 사용합니다. Copilot CLI 또는 GitHub Copilot app에 로그인할 수 있고 Copilot에 액세스할 수 있다면, 해당 화면에서 사용할 수 있는 샌드박싱 옵션에 대해 별도의 인증을 구성할 필요가 없습니다. 별도의 클라우드 공급자를 구성하거나, API 키를 관리하거나, 인프라를 설정할 필요가 없습니다.

조직 또는 엔터프라이즈 소유자는 구성원이 클라우드 샌드박스 를 사용하려면 먼저 조직 또는 엔터프라이즈 설정에서 클라우드 샌드박스 액세스 정책을 사용하도록 설정해야 합니다.

조직의 구성원에 대해 클라우드 샌드박스를 사용하거나 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 조직 또는 엔터프라이즈에 클라우드 샌드박스 사용 또는 사용 안 함을 참조하세요.

결제

추가 비용 없이 표준 GitHub Copilot 좌석에 로컬 샌드박싱이 포함되어 있습니다.

클라우드 샌드박싱은 사용량에 따라 청구됩니다. GitHub 3미터에 걸쳐 클라우드 샌드박스 사용량을 측정합니다.

MeterDescription단위가격(USD)
Compute클라우드 샌드박스 세션이 실행되는 시간입니다.컴퓨팅 초$0.000024
Memory실행되는 동안 클라우드 샌드박스 세션에 할당된 메모리입니다.GiB 초$0.000003
Storage중지된 세션에 대한 스냅샷 스토리지입니다.GiB 월0.005달러

클라우드 샌드박스 사용량을 측정하고 청구하는 방법에 대한 자세한 내용은 GitHub Copilot에 대한 클라우드 및 로컬 샌드박스 청구을 참조하세요.

추가 읽기