사람들이 잘못 알고 있는 부분부터 짚고 넘어가죠. rm 명령어를 차단하는 건 가장 약한 방어책입니다. rm을 입력하지 않고도 파일을 삭제할 방법은 많거든요(find -delete, 한 줄짜리 파이썬 스크립트, git clean, 다른 파일로 덮어쓰기 등). 이름 기반 차단은 뻔한 경우만 잡고 나머지는 다 놓칩니다.
가장 확실한 방어책은 다음과 같습니다(강력한 순서대로):
-
버전 관리와 기기 외부 백업. 에이전트가 작업하기 전에 커밋하고, 에이전트가 접근할 수 없는 곳(원격 저장소, 별도 디스크)에 백업을 유지하세요. 에이전트가 작업하도록 허용된 프로젝트 내부 파일까지 보호할 수 있는 유일한 방법입니다.
-
기본 제공 샌드박스(기본값은 꺼져 있음). /sandbox를 실행하거나 sandbox.enabled: true로 설정하세요. Claude Code 문서에 따르면, 셸 명령어는 작업 디렉토리, 임시 디렉토리, 그리고 사용자가 추가한 디렉토리에만 쓸 수 있게 되어 드라이브의 나머지 부분은 접근이 불가능해집니다. 단, 프로젝트 폴더 자체는 여전히 쓰기가 가능하다는 점을 명심하세요. 그래서 1번이 가장 중요합니다.
-
탈출구 차단. 샌드박스에서 명령어가 실패하면 Claude는 샌드박스 없이 재시도하겠냐고 물어볼 수 있습니다. "allowUnsandboxedCommands": false("엄격한 샌드박스 모드")로 설정해서 재시도 요청을 무시하고, failIfUnavailable을 설정해 샌드박스가 시작되지 않으면 조용히 샌드박스 없이 실행되는 일을 방지하세요. 문서에서도 그런 재시도 프롬프트가 뜨면 거절하라고 되어 있습니다.
-
신뢰가 쌓일 때까지 bypassPermissions 모드는 사용하지 마세요. 이 모드에서는 샌드박스 없는 재시도가 프롬프트 없이 실행됩니다.
-
가장 강력한 분리를 원한다면, Claude Code 자체를 프로젝트만 마운트된 컨테이너나 VM에서 실행하세요. 문서에 옵션을 비교한 "샌드박스 환경" 페이지가 있습니다.
문서에는 설치 후 간단한 자가 테스트도 나와 있습니다: macOS에서 touch ~/sandbox-probe를 실행했을 때 "Operation not permitted" 오류가 떠야 합니다.