샌드박스와 승인
두 설정은 서로 다른 일을 합니다. 샌드박스는 에이전트가 무엇을 할 수 있는지 를, 승인은 무엇을 먼저 물어야 하는지를 정합니다.
샌드박스
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" 는
아무것도 보여 주지 않고 아무것도 묻지 않으면서 당신 기계에서 임의의 명령을 돌리는
에이전트입니다. 그것이 정답인 디렉터리도 있습니다. 당신의 홈 디렉터리는 그중 하나가
아닙니다.
샌드박스가 하지 않는 두 가지
- 모델이 당신의 파일을 읽는 것을 막지 않습니다. 읽기는 어느 모드에서도 제한되지 않습니다.
- 실행한 명령이 그 뒤에 무엇을 하는지까지 덮지 않습니다. 에이전트가 띄운 스크립트는 샌드박스를 물려받지만, 실행보다 오래 사는 서비스를 띄웠다면 그것은 물려받지 않습니다.