← 블로그 목록
AI 뉴스약 5분 분량

Copilot 앱 로컬 샌드박스를 켜도 홈 디렉터리는 읽히고 외부 송신은 열려 있다, 보안 검토는 거부 목록에서 시작한다

쓰기를 막는 샌드박스와 유출을 막는 샌드박스는 설정이 다르다

Copilot 앱에 로컬 샌드박스가 9월 23일 공개 프리뷰로 들어왔다. 켜더라도 기본값은 홈 디렉터리 읽기와 외부 송신을 허용한다. 프로젝트마다 거부 폴더와 네트워크 항목을 직접 닫아야 한다.

코딩 에이전트 도입 회의에서 "샌드박스 켜면 되지 않나요"라는 말이 나오면 논의가 거기서 끝나곤 한다. 샌드박스에 켜짐과 꺼짐 두 상태만 있다고 보기 때문이다.

GitHub 9월 23일 공지를 보면 Copilot 앱에 로컬 샌드박스가 들어왔다. 파일, 네트워크, 자격 증명 세 영역의 접근을 제한해서 의도하지 않은 명령이 일으키는 피해를 줄이는 기능이다. 이 기능은 기본으로 꺼져 있다. 켰을 때 적용되는 기본 정책도 생각보다 많은 경로를 열어 둔다.

샌드박스를 켠 상태의 기본값은 쓰기만 막는다

GitHub 로컬 샌드박스 사용 문서에 따르면 샌드박스 안의 명령은 현재 작업 디렉터리와 임시 폴더에만 쓸 수 있다. 홈 디렉터리와 시스템 경로는 읽기 전용이다. 네트워크는 열려 있고 Git·GitHub 인증은 자동으로 붙는다. 샌드박스 설정 문서도 외부 연결 허용, 로컬 네트워크 허용, git 인증, gh 인증 네 항목을 모두 "기본 켜짐"으로 적어 두었다.

영역켠 상태의 기본값남는 경로
파일 쓰기작업 디렉터리·임시 폴더만저장소 밖 파일 변조는 막힌다
파일 읽기홈 디렉터리 읽기 전용~/.aws, ~/.ssh, ~/.npmrc를 읽을 수 있다
네트워크외부 송신·로컬망 허용읽은 내용을 밖으로, 사내 API로 보낼 수 있다
자격 증명git·gh 인증 자동사용자 권한으로 push·API 호출이 가능하다

읽기 전용이라는 말은 읽을 수 있다는 뜻이다.

쓰기를 막는 설계는 파일이 망가지는 사고를 막는다. 비밀을 읽어 밖으로 내보내는 사고는 막지 못한다. 두 사고는 지나가는 경로가 다르다. 홈 디렉터리의 설정 파일이 에이전트에게 계속 보이는 문제는 Copilot CLI 1.0.83은 127.0.0.1을 막으면서 ~/.npmrc는 열었다에서 이미 한 번 다뤘다. 앱의 기본값에서도 같은 모양이 나타난다.

켜는 단위는 프로젝트이고, 앱과 CLI는 따로 켠다

공지에 따르면 샌드박스는 앱 설정에서 프로젝트를 고르고 "Sandbox new sessions"를 켜는 방식으로 적용한다. 진행 중인 세션에서는 /sandbox on으로 켤 수 있다. 적용 대상은 로컬 저장소 세션과 워크트리 세션뿐이고 클라우드 샌드박스와 원격 호스트 세션은 해당하지 않는다. 앱과 Copilot CLI의 샌드박스 설정은 서로 따로 관리한다. CLI 쪽 설정은 ~/.copilot/settings.json의 sandbox.enabled에 저장되며, 이미 열려 있는 세션에는 바로 적용되지 않는다. 그래서 CLI에서 샌드박스를 켠 개발자라도 앱에서는 샌드박스 없이 돌고 있을 수 있다.

설계가 단단한 부분도 있다. 운영체제가 요청한 정책을 강제하지 못하면 셸은 샌드박스 없이 실행되지 않고 오류를 내며 멈춘다. 엔터프라이즈 관리 설정으로 샌드박스를 강제하면 사용자가 /sandbox disable로 끌 수 없다. GitHub 9월 22일 OpenTelemetry 공지에 따르면 관리자는 managed-settings.json으로 에이전트 실행 추적도 한곳에서 모을 수 있다. 이때 프롬프트와 응답 본문은 기본적으로 제외된다.

모델도 경계를 덜 넘는 방향으로 가고 있다. Anthropic 9월 22일 Opus 5.5 발표는 경계를 우회하려는 시도가 Opus 5보다 약 85% 줄었다고 밝혔다. 줄었다는 것이 0이 됐다는 뜻은 아니다. 게다가 이 수치는 Anthropic 평가 환경에서 나온 값이다. 모델이 시도를 덜 하는 것과 시도했을 때 막히는 것은 서로 다른 층이다.

가져갈 것

  • 에이전트를 가장 많이 돌리는 저장소에서 Copilot 앱의 "Sandbox new sessions"가 켜져 있는가?
  • 샌드박스 거부 폴더 목록에 ~/.ssh, ~/.aws, ~/.kube처럼 자격 증명이 든 폴더를 넣었는가?
  • 내부 API나 DB를 부르지 않는 저장소를 골라 "로컬 네트워크 허용"을 껐는가?
  • ~/.copilot/settings.json의 sandbox.enabled를 앱 설정과 따로 확인했는가?
  • 엔터프라이즈 라이선스라면 관리 설정에서 샌드박스 강제 여부와 bypass 허용 여부를 정했는가?

안 되는 경우

  • 로컬 샌드박스는 공개 프리뷰 단계라서 기본값과 설정 항목이 바뀔 수 있다.
  • 클라우드 샌드박스나 원격 호스트 세션 위주로 에이전트를 쓰는 조직에는 이 설정이 적용되지 않는다.
  • 기본 정책의 세부 항목(외부 송신, git·gh 인증)은 CLI 기준 문서에 적혀 있다. 앱 기본값이 완전히 같은지는 공지가 따로 밝히지 않았다.
  • CLI 문서 기준으로 Windows에서 쓰려면 Insiders 빌드가 필요하다. 앱의 운영체제 요구 사항은 공지에 나오지 않는다.

이번 주에는 저장소 하나를 골라 샌드박스를 켜고, 거부 폴더에 자격 증명 폴더를 넣은 뒤 빌드와 테스트가 그대로 통과하는지 확인해 보길 권한다. 샌드박스 도입을 보고할 때 "켰다"로 끝내지 말고, 닫은 경로의 목록을 함께 남기게 하는 것이 다음 단계다. 사업영역 →

출처

AI뉴스Copilot에이전트 샌드박스

Contact

이런 교육이 필요하다면

AI·데이터 교육 도입을 검토 중이라면 카카오 오픈채팅으로 편하게 문의하세요.

Newsletter

조녁컴퍼니 뉴스레터

AI 전환과 교육 현장의 기록을 메일로 받아보세요.