본문으로 건너뛰기

샌드박스와 승인

두 설정은 서로 다른 일을 합니다. 샌드박스는 에이전트가 무엇을 할 수 있는지 를, 승인은 무엇을 먼저 물어야 하는지를 정합니다.

샌드박스

sandbox_mode = "workspace-write"
에이전트가 할 수 있는 것
read-only파일을 보기. 바꾸지는 않음
workspace-write작업 디렉터리 안에 쓰기
danger-full-access당신 계정이 할 수 있는 것 전부

읽기는 결코 제한되지 않습니다. 제한되는 것은 쓰기와 네트워크뿐이라, read-only디스크 전체가 보이되 하나도 바꿀 수 없다는 뜻입니다.

쓸 수 있는 뿌리는 작업 디렉터리입니다

workspace-write 아래에서 「작업공간」이란 그 대화나 실행이 열려 있는 디렉터리입니다. 프로젝트도, 저장소도 아니고 그 디렉터리입니다.

이 페이지에서 가장 중요한 한 문장입니다. 홈 디렉터리에서 열린 실행은 .ssh, Documents, Library 에 쓸 수 있습니다.

가정이 아닙니다. 부서가 생기기 전에 만들어진 예약 작업이 홈 디렉터리를 안은 채 그런 식으로 마흔두 번 돌았습니다. 매번 그 전부에 손이 닿았고, 아무도 묻지 않았고 아무 말도 없었습니다. 새 대화의 기본값을 바꿔도 그것은 건드려지지 않았습니다 —— 기본값은 소급되지 않기 때문입니다.

그래서 실행이 시작되는 순간에 두 번째 검사가 있습니다.

백그라운드 실행이 어디서 시작될 수 있는가

실행은 자기 디렉터리가 이 제품이 이미 아는 곳일 때 시작할 수 있습니다:

  • 작업공간 안
  • 어떤 부서의 디렉터리 안
  • 당신이 이름으로 허락한 곳

그 밖의 것은 붙들리고, Dispatch 패널의 당신을 기다림 아래에 이 디렉터리 허용 버튼과 함께 나타납니다. 한 곳을 허용하면 그곳을 기다리던 실행이 전부 풀립니다.

묻는 것이 핵심입니다: 평소와 다른 곳에서 도는 것이 종종 정확히 원했던 것이고, 답은 거절이 아니라 물음 하나입니다.

승인

approval_policy = "on-failure"
untrusted안전하다고 알려지지 않은 명령을 매번 먼저 보여 줌
on-failure명령은 지켜보지 않아도 돌고, 더 많은 권한이 필요할 때만 물음
never실행 전에 아무것도 보여 주지 않음

never아무것도 붙들리지 않는다는 뜻이기도 합니다. 승인을 꺼 둔 사람은 말 그대로 「멈춰 세워지고 싶지 않다」고 말한 것이고, 그가 더 좁은 뜻으로 말했다고 단정하는 것은 제품이 자기 설정을 뒤엎는 일입니다.

스크립트를 마음대로 풀어놔도 괜찮은 디렉터리에 쓰세요.

사람들이 걸려 넘어지는 조합

sandbox_mode = "danger-full-access"approval_policy = "never"아무것도 보여 주지 않고 아무것도 묻지 않으면서 당신 기계에서 임의의 명령을 돌리는 에이전트입니다. 그것이 정답인 디렉터리도 있습니다. 당신의 홈 디렉터리는 그중 하나가 아닙니다.

샌드박스가 하지 않는 두 가지

  • 모델이 당신의 파일을 읽는 것을 막지 않습니다. 읽기는 어느 모드에서도 제한되지 않습니다.
  • 실행한 명령이 그 뒤에 무엇을 하는지까지 덮지 않습니다. 에이전트가 띄운 스크립트는 샌드박스를 물려받지만, 실행보다 오래 사는 서비스를 띄웠다면 그것은 물려받지 않습니다.