2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.
4 4
5# 샌드박싱5# 샌드박싱된 Bash 도구 구성
6 6
7> Claude Code의 샌드박싱된 bash 도구가 파일시스템 및 네트워크 격리를 제공하여 더 안전하고 자율적인 에이전트 실행을 가능하게 하는 방법을 알아봅니다.7> Claude Code의 샌드박싱된 Bash 도구가 파일시스템 및 네트워크 격리를 제공하여 더 안전하고 자율적인 에이전트 실행을 가능하게 하는 방법을 알아봅니다.
8 8
9## 개요9Bash 샌드박스를 사용하면 Claude가 대부분의 셸 명령을 권한을 요청하지 않고 실행할 수 있습니다. 각 명령을 승인하는 대신 명령이 접근할 수 있는 파일과 네트워크 도메인을 정의하면 운영 체제가 모든 Bash 명령과 그 자식 프로세스에 대해 해당 경계를 적용합니다.
10 10
11Claude Code는 에이전트 실행을 위한 더 안전한 환경을 제공하고 지속적인 권한 프롬프트의 필요성을 줄이기 위해 기본 샌드박싱 기능을 제공합니다. 각 bash 명령에 대해 권한을 요청하는 대신, 샌드박싱은 Claude Code가 위험을 줄이면서 더 자유롭게 작업할 수 있는 정의된 경계를 미리 생성합니다.11이 페이지에서는 다음을 다룹니다:
12 12
13샌드박싱된 bash 도구는 OS 수준의 기본 요소를 사용하여 파일시스템 및 네트워크 격리를 모두 적용합니다.13* [샌드박스 활성화](#get-started) 및 샌드박싱된 명령이 승인되는 방식 선택
14* [경로 및 네트워크 도메인 구성](#configure-sandboxing) 명령이 접근할 수 있는 것
15* [샌드박싱을 권한 규칙 및 권한 모드와 결합](#how-sandboxing-relates-to-permissions-and-permission-modes)
16* [조직 전체에서 샌드박싱 적용](#configure-the-sandbox-for-your-organization) 관리 설정 사용
14 17
15## 샌드박싱이 중요한 이유18<Note>
16 19 dev 컨테이너, 사용자 정의 컨테이너, 가상 머신 등 다른 격리 방식을 비교하려면 [샌드박스 환경](/ko/sandbox-environments)을 참조하세요. Bash 이외의 도구에 대한 권한 프롬프트를 줄이려면 [권한 모드](/ko/permission-modes)를 참조하세요.
17기존의 권한 기반 보안은 bash 명령에 대한 지속적인 사용자 승인이 필요합니다. 이는 제어를 제공하지만 다음과 같은 문제를 야기할 수 있습니다:20</Note>
18
19* **승인 피로**: "승인" 버튼을 반복적으로 클릭하면 사용자가 승인하는 내용에 덜 주의를 기울이게 될 수 있습니다
20* **생산성 감소**: 지속적인 중단으로 인해 개발 워크플로우가 느려집니다
21* **제한된 자율성**: Claude Code는 승인을 기다릴 때 효율적으로 작업할 수 없습니다
22
23샌드박싱은 다음과 같은 방식으로 이러한 문제를 해결합니다:
24
251. **명확한 경계 정의**: Claude Code가 액세스할 수 있는 정확한 디렉토리 및 네트워크 호스트를 지정합니다
262. **권한 프롬프트 감소**: 샌드박스 내의 안전한 명령은 승인이 필요하지 않습니다
273. **보안 유지**: 샌드박스 외부의 리소스에 액세스하려는 시도는 즉시 알림을 트리거합니다
284. **자율성 활성화**: Claude Code는 정의된 제한 내에서 더 독립적으로 실행할 수 있습니다
29
30<Warning>
31 효과적인 샌드박싱은 **파일시스템 및 네트워크 격리 모두**를 필요로 합니다. 네트워크 격리가 없으면 손상된 에이전트가 SSH 키와 같은 민감한 파일을 유출할 수 있습니다. 파일시스템 격리가 없으면 손상된 에이전트가 시스템 리소스를 백도어하여 네트워크 액세스를 얻을 수 있습니다. 샌드박싱을 구성할 때 구성된 설정이 이러한 시스템에서 우회를 생성하지 않도록 하는 것이 중요합니다.
32</Warning>
33 21
34## 작동 방식22<h2 id="get-started">
23 시작하기
24</h2>
35 25
36### 파일시스템 격리26샌드박스는 Claude Code에 내장되어 있으며 macOS, Linux 및 WSL2에서 실행됩니다. 기본 Windows는 지원되지 않습니다. Windows에서는 WSL2 배포판 내에서 Claude Code를 실행하세요.
37 27
38샌드박싱된 bash 도구는 파일 시스템 액세스를 특정 디렉토리로 제한합니다:28macOS에서는 설치할 것이 없습니다: 샌드박싱은 기본 제공 Seatbelt 프레임워크를 사용합니다. Linux 및 WSL2에서 샌드박스는 두 개의 패키지에 의존하며, [Linux 및 WSL2 설정](#set-up-linux-and-wsl2)에서 다룹니다. 아직 설치하지 않았더라도 `/sandbox`로 시작할 수 있습니다. 해당 패널은 누락된 것이 있는지 보여줍니다.
39 29
40* **기본 쓰기 동작**: 현재 작업 디렉토리 및 그 하위 디렉토리에 대한 읽기 및 쓰기 액세스30<Steps>
41* **기본 읽기 동작**: 특정 거부된 디렉토리를 제외한 전체 컴퓨터에 대한 읽기 액세스31 <Step title="/sandbox 실행">
42* **차단된 액세스**: 명시적 권한 없이 현재 작업 디렉토리 외부의 파일을 수정할 수 없습니다32 Claude Code 세션을 시작하고 `/sandbox` 명령을 실행합니다:
43* **구성 가능**: 설정을 통해 사용자 정의 허용 및 거부 경로를 정의합니다
44 33
45설정에서 `sandbox.filesystem.allowWrite`를 사용하여 추가 경로에 대한 쓰기 액세스를 부여할 수 있습니다. 이러한 제한은 OS 수준(macOS의 Seatbelt, Linux의 bubblewrap)에서 적용되므로 Claude의 파일 도구뿐만 아니라 `kubectl`, `terraform`, `npm`과 같은 도구를 포함한 모든 하위 프로세스 명령에 적용됩니다.34 ```text theme={null}
35 /sandbox
36 ```
46 37
47### 네트워크 격리38 이는 세 개의 탭이 있는 샌드박스 패널을 엽니다:
48 39
49네트워크 액세스는 샌드박스 외부에서 실행되는 프록시 서버를 통해 제어됩니다:40 * **Mode**: 샌드박싱된 명령이 승인되는 방식을 선택합니다. 다음 단계에서 다룹니다
41 * **Overrides**: 샌드박스에서 실패한 명령이 샌드박싱되지 않은 상태로 실행되도록 폴백할 수 있는지 선택합니다. 이는 [`allowUnsandboxedCommands`](/ko/settings#sandbox-settings) 설정입니다
42 * **Config**: 해석된 샌드박스 설정을 봅니다
50 43
51* **도메인 제한**: 승인된 도메인만 액세스할 수 있습니다44 패널에 Dependencies 탭만 표시되면 필수 패키지가 누락된 것입니다. [Linux 및 WSL2 설정](#set-up-linux-and-wsl2)에 설명된 대로 설치하고 Claude Code를 다시 시작한 후 `/sandbox`를 다시 실행합니다.
52* **사용자 확인**: 새 도메인 요청은 권한 프롬프트를 트리거합니다([`allowManagedDomainsOnly`](/ko/settings#sandbox-settings)가 활성화된 경우 제외, 이는 허용되지 않은 도메인을 자동으로 차단합니다)45 </Step>
53* **사용자 정의 프록시 지원**: 고급 사용자는 나가는 트래픽에 대한 사용자 정의 규칙을 구현할 수 있습니다
54* **포괄적 범위**: 제한은 명령으로 생성된 모든 스크립트, 프로그램 및 하위 프로세스에 적용됩니다
55 46
56### OS 수준 적용47 <Step title="모드 선택">
48 Mode 탭에서 자동 허용 또는 일반 권한을 선택합니다. 자동 허용은 샌드박싱된 명령을 프롬프트 없이 실행하고, 일반 권한은 명령이 샌드박싱되었을 때도 일반 권한 프롬프트를 유지합니다. 자동 허용 모드에서 여전히 프롬프트되는 명령은 [샌드박스 모드](#sandbox-modes)를 참조하세요.
49 </Step>
57 50
58샌드박싱된 bash 도구는 운영 체제 보안 기본 요소를 활용합니다:51 <Step title="Bash 명령 실행">
52 Claude에게 빌드 또는 테스트 스위트와 같은 명령을 실행하도록 요청합니다. 기본적으로 샌드박스 내의 명령은 작업 디렉토리에만 쓸 수 있습니다. 명령이 새 네트워크 도메인에 처음 액세스해야 할 때 Claude Code가 승인을 요청합니다.
59 53
60* **macOS**: 샌드박스 적용을 위해 Seatbelt를 사용합니다54 샌드박싱할 수 없는 명령은 일반 권한 흐름으로 폴백합니다. 이러한 경계를 확대하거나 축소하려면 [샌드박싱 구성](#configure-sandboxing)을 참조하세요.
61* **Linux**: 격리를 위해 [bubblewrap](https://github.com/containers/bubblewrap)을 사용합니다55 </Step>
62* **WSL2**: Linux와 동일하게 bubblewrap을 사용합니다56</Steps>
63 57
64WSL1은 bubblewrap이 WSL2에서만 사용 가능한 커널 기능을 필요로 하기 때문에 지원되지 않습니다.58패널에서 모드를 선택하면 현재 프로젝트에 적용되고 git에 체크인되지 않는 프로젝트의 로컬 설정 `.claude/settings.local.json`에 기록됩니다. 모든 프로젝트에서 샌드박스를 활성화하려면 사용자 설정 `~/.claude/settings.json`에서 [`sandbox.enabled`](/ko/settings#sandbox-settings)를 `true`로 설정합니다. 조직의 모든 개발자에게 샌드박싱을 적용하려면 [관리 설정](#enforce-sandboxing-with-managed-settings)을 사용합니다.
65 59
66이러한 OS 수준의 제한은 Claude Code의 명령으로 생성된 모든 자식 프로세스가 동일한 보안 경계를 상속하도록 보장합니다.60<Warning>
61 기본적으로 종속성이 누락되었거나 플랫폼이 지원되지 않아 샌드박스를 시작할 수 없으면 Claude Code는 경고를 표시하고 샌드박싱 없이 명령을 실행합니다. 대신 하드 실패로 만들려면 [`sandbox.failIfUnavailable`](/ko/settings#sandbox-settings)을 `true`로 설정합니다. 이는 샌드박싱을 보안 게이트로 요구하는 관리 배포를 위한 것입니다.
62</Warning>
67 63
68## 시작하기64<h3 id="set-up-linux-and-wsl2">
65 Linux 및 WSL2 설정
66</h3>
69 67
70### 필수 조건68Linux 및 WSL2에서 샌드박스는 두 개의 패키지에 의존합니다:
71 69
72**macOS**에서는 기본 제공 Seatbelt 프레임워크를 사용하여 샌드박싱이 기본적으로 작동합니다.70* [`bubblewrap`](https://github.com/containers/bubblewrap): 파일시스템 격리를 적용하는 권한 없는 샌드박싱 도구
71* [`socat`](http://www.dest-unreach.org/socat/): 샌드박스 프록시를 통해 네트워크 트래픽을 라우팅하는 데 사용되는 릴레이
73 72
74**Linux 및 WSL2**에서는 먼저 필수 패키지를 설치합니다:73배포판의 패키지 관리자로 설치합니다:
75 74
76<Tabs>75<Tabs>
77 <Tab title="Ubuntu/Debian">76 <Tab title="Ubuntu/Debian">
87 </Tab>86 </Tab>
88</Tabs>87</Tabs>
89 88
90WSL1은 필요한 Linux 네임스페이스 프리미티브가 부족하기 때문에 샌드박싱을 지원하지 않습니다. `Sandboxing requires WSL2` 메시지가 표시되면 배포판을 WSL2로 업그레이드하거나 샌드박싱 없이 Claude Code를 실행합니다.89설치 후 `/sandbox`의 Dependencies 탭은 `ripgrep`, `bubblewrap`, `socat` 및 seccomp 필터가 플랫폼에서 사용 가능한지 보여줍니다. Ripgrep은 기본 Claude Code 바이너리와 함께 번들됩니다. seccomp 필터는 선택 사항이며 Unix 도메인 소켓 차단을 추가합니다. 누락된 경우 `npm install -g @anthropic-ai/sandbox-runtime`으로 설치합니다.
91 90
92WSL2에서 샌드박싱된 명령은 `cmd.exe`, `powershell.exe` 또는 `/mnt/c/` 아래의 모든 항목과 같은 Windows 바이너리를 시작할 수 없습니다. WSL은 이러한 항목을 Unix 소켓을 통해 Windows 호스트로 전달하며, 샌드박스가 이를 차단합니다. 명령이 Windows 바이너리를 호출해야 하는 경우 [`excludedCommands`](/ko/settings#sandbox-settings)에 추가하여 샌드박스 외부에서 실행되도록 합니다.91필수 종속성이 누락되면 설치할 때까지 Dependencies 탭만 표시됩니다. 종속성 확인은 시작 시 실행되므로 패키지 설치 후 Claude Code를 다시 시작하여 `/sandbox`가 이를 감지하도록 합니다.
93 92
94### 샌드박싱 활성화93<AccordionGroup>
94 <Accordion title="Ubuntu 24.04 이상: bubblewrap이 사용자 네임스페이스를 생성하도록 허용">
95 Ubuntu 24.04 이상에서 기본 AppArmor 정책은 bubblewrap이 격리에 필요한 사용자 네임스페이스를 생성하는 것을 방지합니다.
95 96
96`/sandbox` 명령을 실행하여 샌드박싱을 활성화할 수 있습니다:97 WSL2 내부를 포함하여 환경이 이 제한을 적용하는지 확인하려면 `sysctl kernel.apparmor_restrict_unprivileged_userns`를 실행합니다. 키가 존재하지 않거나 `0`을 반환하면 이 단계를 건너뜁니다. `1`을 반환하면 `bwrap`에 이 기능을 부여하는 AppArmor 프로필을 추가합니다:
97 98
98```text theme={null}99 ```bash theme={null}
99/sandbox100 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'
100```101 abi <abi/4.0>,
102 include <tunables/global>
103
104 profile bwrap /usr/bin/bwrap flags=(unconfined) {
105 userns,
106 include if exists <local/bwrap>
107 }
108 EOF
109 ```
101 110
102이는 샌드박스 모드 중에서 선택할 수 있는 메뉴를 엽니다. Linux에서 `bubblewrap` 또는 `socat`과 같은 필수 종속성이 누락된 경우 메뉴에 플랫폼에 대한 설치 지침이 표시됩니다.111 프로필은 `bwrap` 자체에만 적용되며 샌드박스 내에서 실행되는 명령에는 적용되지 않습니다. AppArmor를 다시 로드하여 적용합니다:
103 112
104기본적으로 샌드박스를 시작할 수 없는 경우(누락된 종속성 또는 지원되지 않는 플랫폼), Claude Code는 경고를 표시하고 샌드박싱 없이 명령을 실행합니다. 대신 이를 하드 실패로 만들려면 [`sandbox.failIfUnavailable`](/ko/settings#sandbox-settings)을 `true`로 설정합니다. 이는 샌드박싱을 보안 게이트로 요구하는 관리 배포를 위한 것입니다.113 ```bash theme={null}
114 sudo systemctl reload apparmor
115 ```
116 </Accordion>
117
118 <Accordion title="WSL2 참고 사항">
119 PowerShell에서 `wsl -l -v`로 WSL 버전을 확인합니다. `Sandboxing requires WSL2`가 표시되면 배포판이 WSL1을 실행 중입니다. WSL2로 업그레이드하거나 샌드박싱 없이 Claude Code를 실행합니다.
105 120
106### 샌드박스 모드121 WSL2에서 샌드박싱된 명령은 `cmd.exe`, `powershell.exe` 또는 `/mnt/c/` 아래의 모든 항목과 같은 Windows 바이너리를 시작할 수 없습니다. WSL은 이를 Unix 소켓을 통해 Windows 호스트로 전달하며, 샌드박스가 이를 차단합니다. 명령이 Windows 바이너리를 호출해야 하면 [`excludedCommands`](/ko/settings#sandbox-settings)에 추가하여 샌드박스 외부에서 실행되도록 합니다.
122 </Accordion>
123</AccordionGroup>
124
125<h3 id="sandbox-modes">
126 샌드박스 모드
127</h3>
107 128
108Claude Code는 두 가지 샌드박스 모드를 제공합니다:129Claude Code는 두 가지 샌드박스 모드를 제공합니다:
109 130
110**자동 허용 모드**: Bash 명령은 샌드박스 내에서 실행을 시도하며 권한 없이 자동으로 허용됩니다. 샌드박싱할 수 없는 명령(허용되지 않은 호스트에 대한 네트워크 액세스가 필요한 경우 등)은 일반 권한 흐름으로 폴백됩니다. 명시적 거부 규칙은 항상 존중됩니다. 그리고 `/`, 홈 디렉토리 또는 기타 중요한 시스템 경로를 대상으로 하는 `rm` 또는 `rmdir` 명령은 여전히 권한 프롬프트를 트리거합니다. Ask 규칙은 일반 권한 흐름으로 폴백되는 명령에만 적용됩니다.131**자동 허용 모드**: Bash 명령은 샌드박스 내에서 실행을 시도하며 권한 없이 자동으로 허용됩니다. 허용되지 않은 호스트에 대한 네트워크 액세스가 필요한 경우 등 샌드박싱할 수 없는 명령은 일반 권한 흐름으로 폴백합니다. 여기서 Claude Code는 [권한 규칙](/ko/permissions)을 확인하고 해당 규칙이 이미 허용하지 않는 모든 명령에 대해 프롬프트합니다.
132
133자동 허용 모드에서도 다음이 적용됩니다:
111 134
112**일반 권한 모드**: 모든 bash 명령은 샌드박싱되었더라도 표준 권한 흐름을 거칩니다. 이는 더 많은 제어를 제공하지만 더 많은 승인이 필요합니다.135* 명시적 [거부 규칙](/ko/permissions)은 항상 존중됩니다
136* `/`, 홈 디렉토리 또는 기타 중요한 시스템 경로를 대상으로 하는 `rm` 또는 `rmdir` 명령은 여전히 권한 프롬프트를 트리거합니다
137* [Ask 규칙](/ko/permissions)은 일반 권한 흐름으로 폴백되는 명령에 적용됩니다
138
139**일반 권한 모드**: 모든 Bash 명령은 샌드박싱되었더라도 일반 권한 흐름을 거칩니다. 이는 더 많은 제어를 제공하지만 더 많은 승인이 필요합니다.
113 140
114두 모드 모두에서 샌드박스는 동일한 파일시스템 및 네트워크 제한을 적용합니다. 차이점은 샌드박싱된 명령이 자동 승인되는지 또는 명시적 권한이 필요한지 여부뿐입니다.141두 모드 모두에서 샌드박스는 동일한 파일시스템 및 네트워크 제한을 적용합니다. 차이점은 샌드박싱된 명령이 자동 승인되는지 또는 명시적 권한이 필요한지 여부뿐입니다.
115 142
143일부 명령은 샌드박스 내에서 전혀 실행할 수 없습니다. 예를 들어 호환되지 않는 도구나 허용하지 않은 호스트가 필요한 도구입니다. 작업을 실패하거나 샌드박싱을 끄도록 요구하는 대신 Claude Code는 탈출 해치를 포함합니다: 명령이 샌드박스 제한으로 인해 실패하면 Claude는 실패를 분석하고 `dangerouslyDisableSandbox` 매개변수로 명령을 다시 시도할 수 있습니다. 다시 시도된 명령은 샌드박스 외부에서 실행되므로 일반 권한 흐름을 거치고 승인이 필요합니다.
144
145[샌드박스 설정](/ko/settings#sandbox-settings)에서 `"allowUnsandboxedCommands": false`를 설정하여 이 탈출 해치를 비활성화할 수 있습니다. 비활성화되면 `/sandbox` Overrides 탭에 **Strict sandbox mode**로 표시되며, `dangerouslyDisableSandbox` 매개변수는 완전히 무시되고 모든 명령은 샌드박싱되거나 `excludedCommands`에 명시적으로 나열되어야 합니다.
146
116<Info>147<Info>
117 자동 허용 모드는 권한 모드 설정과 독립적으로 작동합니다. "편집 수락" 모드에 있지 않더라도 자동 허용이 활성화되면 샌드박싱된 bash 명령이 자동으로 실행됩니다. 이는 샌드박스 경계 내에서 파일을 수정하는 bash 명령이 파일 편집 도구가 일반적으로 승인을 요구할 때도 프롬프트 없이 실행됨을 의미합니다.148 자동 허용 모드는 권한 모드 설정과 독립적으로 작동합니다. "편집 수락" 모드에 있지 않더라도 자동 허용이 활성화되면 샌드박싱된 Bash 명령이 자동으로 실행됩니다. 이는 샌드박스 경계 내에서 파일을 수정하는 Bash 명령이 파일 편집 도구가 일반적으로 승인을 요구할 때도 프롬프트 없이 실행됨을 의미합니다.
118</Info>149</Info>
119 150
120### 샌드박싱 구성151<h2 id="configure-sandboxing">
152 샌드박싱 구성
153</h2>
121 154
122`settings.json` 파일을 통해 샌드박스 동작을 사용자 정의합니다. 전체 구성 참조는 [설정](/ko/settings#sandbox-settings)을 참조하세요.155`settings.json` 파일을 통해 샌드박스 동작을 사용자 정의합니다. 전체 구성 참조는 [설정](/ko/settings#sandbox-settings)을 참조하세요.
123 156
124#### 특정 경로에 대한 하위 프로세스 쓰기 액세스 부여157기본적으로 샌드박싱된 명령은 현재 작업 디렉토리에만 쓸 수 있습니다. `kubectl`, `terraform` 또는 `npm`과 같은 하위 프로세스 명령이 프로젝트 디렉토리 외부에 쓰기해야 하면 `sandbox.filesystem.allowWrite`를 사용하여 특정 경로에 대한 액세스를 부여합니다:
125
126기본적으로 샌드박싱된 명령은 현재 작업 디렉토리에만 쓸 수 있습니다. `kubectl`, `terraform` 또는 `npm`과 같은 하위 프로세스 명령이 프로젝트 디렉토리 외부에 쓰기해야 하는 경우 `sandbox.filesystem.allowWrite`를 사용하여 특정 경로에 대한 액세스를 부여합니다:
127 158
128```json theme={null}159```json theme={null}
129{160{
138 169
139이러한 경로는 OS 수준에서 적용되므로 샌드박스 내에서 실행되는 모든 명령(자식 프로세스 포함)이 이를 존중합니다. 이는 도구를 `excludedCommands`로 샌드박스에서 완전히 제외하는 것보다 도구가 특정 위치에 쓰기 액세스가 필요할 때 권장되는 방법입니다.170이러한 경로는 OS 수준에서 적용되므로 샌드박스 내에서 실행되는 모든 명령(자식 프로세스 포함)이 이를 존중합니다. 이는 도구를 `excludedCommands`로 샌드박스에서 완전히 제외하는 것보다 도구가 특정 위치에 쓰기 액세스가 필요할 때 권장되는 방법입니다.
140 171
141`allowWrite`(또는 `denyWrite`/`denyRead`/`allowRead`)가 여러 [설정 범위](/ko/settings#settings-precedence)에서 정의된 경우 배열이 **병합**됩니다. 즉, 모든 범위의 경로가 결합되며 대체되지 않습니다. 예를 들어 관리 설정이 `/opt/company-tools`에 대한 쓰기를 허용하고 사용자가 개인 설정에서 `~/.kube`를 추가하면 두 경로 모두 최종 샌드박스 구성에 포함됩니다. 이는 사용자와 프로젝트가 더 높은 우선순위 범위에서 설정한 경로를 복제하거나 재정의하지 않고 목록을 확장할 수 있음을 의미합니다.172동일한 파일시스템 배열이 여러 [설정 범위](/ko/settings#settings-precedence)에서 정의되면 배열이 병합됩니다: 모든 범위의 경로가 결합되며 대체되지 않습니다.
142 173
143경로 접두사는 경로가 해석되는 방식을 제어합니다:174경로 접두사는 경로가 해석되는 방식을 제어합니다:
144 175
148| `~/` | 홈 디렉토리에 상대적 | `~/.kube`는 `$HOME/.kube`가 됩니다 |179| `~/` | 홈 디렉토리에 상대적 | `~/.kube`는 `$HOME/.kube`가 됩니다 |
149| `./` 또는 접두사 없음 | 프로젝트 설정의 경우 프로젝트 루트에 상대적이거나, 사용자 설정의 경우 `~/.claude`에 상대적 | `.claude/settings.json`의 `./output`은 `<project-root>/output`으로 해석됩니다 |180| `./` 또는 접두사 없음 | 프로젝트 설정의 경우 프로젝트 루트에 상대적이거나, 사용자 설정의 경우 `~/.claude`에 상대적 | `.claude/settings.json`의 `./output`은 `<project-root>/output`으로 해석됩니다 |
150 181
151더 오래된 `//path` 접두사는 절대 경로용으로 여전히 작동합니다. 이전에 프로젝트 상대 해석을 기대하면서 단일 슬래시 `/path`를 사용했다면 `./path`로 전환하세요. 이 구문은 절대 경로에 `//path`를 사용하고 프로젝트 상대에 `/path`를 사용하는 [Read 및 Edit 권한 규칙](/ko/permissions#read-and-edit)과 다릅니다. 샌드박스 파일시스템 경로는 표준 규칙을 사용합니다: `/tmp/build`는 절대 경로입니다.182이 구문은 절대 경로에 `//path`를 사용하고 프로젝트 상대에 `/path`를 사용하는 [Read 및 Edit 권한 규칙](/ko/permissions#read-and-edit)과 다릅니다. 샌드박스 파일시스템 경로는 표준 규칙을 사용합니다: `/tmp/build`는 절대 경로입니다.
152 183
153`sandbox.filesystem.denyWrite` 및 `sandbox.filesystem.denyRead`를 사용하여 쓰기 또는 읽기 액세스를 거부할 수도 있습니다. 이들은 `Edit(...)` 및 `Read(...)` 권한 규칙의 모든 경로와 병합됩니다. 거부된 영역 내에서 특정 경로 읽기를 다시 허용하려면 `denyRead`보다 우선하는 `sandbox.filesystem.allowRead`를 사용합니다. `allowManagedReadPathsOnly`가 관리 설정에서 활성화되면 관리 `allowRead` 항목만 존중되고 사용자, 프로젝트 및 로컬 `allowRead` 항목은 무시됩니다. `denyRead`는 여전히 모든 소스에서 병합됩니다.184`sandbox.filesystem.denyWrite` 및 `sandbox.filesystem.denyRead`를 사용하여 쓰기 또는 읽기 액세스를 거부할 수도 있으며, `sandbox.filesystem.allowRead`를 사용하여 거부된 영역 내에서 특정 경로 읽기를 다시 허용할 수 있습니다.
154 185
155예를 들어 홈 디렉토리 전체에서의 읽기를 차단하면서도 현재 프로젝트에서의 읽기를 허용하려면 프로젝트의 `.claude/settings.json`에 다음을 추가합니다:186아래 예제는 홈 디렉토리 전체에서의 읽기를 차단하면서도 현재 프로젝트에서의 읽기를 허용합니다. 상대 경로 `.`이 프로젝트 설정에 있을 때만 프로젝트 루트로 해석되므로 프로젝트의 `.claude/settings.json`에 배치합니다:
156 187
157```json theme={null}188```json theme={null}
158{189{
166}197}
167```198```
168 199
169이 구성이 프로젝트 설정에 있으므로 `allowRead`의 `.`은 프로젝트 루트로 해석됩니다. 동일한 구성을 `~/.claude/settings.json`에 배치했다면 `.`은 `~/.claude`로 해석되고 프로젝트 파일은 `denyRead` 규칙에 의해 차단된 상태로 유지됩니다.200`.`의 `allowRead`는 이 구성이 프로젝트 설정에 있으므로 프로젝트 루트로 해석됩니다. 동일한 구성을 `~/.claude/settings.json`에 배치했다면 `.`은 `~/.claude`로 해석되고 프로젝트 파일은 `denyRead` 규칙에 의해 차단된 상태로 유지됩니다.
170 201
171<Tip>202<h2 id="how-sandboxing-works">
172 모든 명령이 기본적으로 샌드박싱과 호환되는 것은 아닙니다. 샌드박스를 최대한 활용하는 데 도움이 될 수 있는 몇 가지 참고 사항:203 샌드박싱 작동 방식
204</h2>
173 205
174 * 많은 CLI 도구는 특정 호스트에 액세스해야 합니다. 이러한 도구를 사용하면서 특정 호스트에 액세스할 권한을 요청합니다. 권한을 부여하면 지금과 앞으로 이러한 호스트에 액세스할 수 있으므로 샌드박스 내에서 안전하게 실행할 수 있습니다.206<h3 id="filesystem-isolation">
175 * `watchman`은 샌드박스에서 실행하는 것과 호환되지 않습니다. `jest`를 실행 중인 경우 `jest --no-watchman` 사용을 고려하세요207 파일시스템 격리
176 * `docker`는 샌드박스에서 실행하는 것과 호환되지 않습니다. `excludedCommands`에서 `docker *`를 지정하여 샌드박스 외부에서 실행하도록 강제하는 것을 고려하세요.208</h3>
177</Tip>
178 209
179<Note>210샌드박싱된 Bash 도구는 파일 시스템 액세스를 특정 디렉토리로 제한합니다:
180 Claude Code는 필요할 때 명령이 샌드박스 외부에서 실행될 수 있도록 하는 의도적인 탈출 해치 메커니즘을 포함합니다. 명령이 샌드박스 제한으로 인해 실패할 때(예: 네트워크 연결 문제 또는 호환되지 않는 도구), Claude는 실패를 분석하도록 프롬프트되며 `dangerouslyDisableSandbox` 매개변수로 명령을 다시 시도할 수 있습니다. 이 매개변수를 사용하는 명령은 실행을 위해 사용자 권한이 필요한 일반 Claude Code 권한 흐름을 거칩니다. 이를 통해 Claude Code는 특정 도구 또는 네트워크 작업이 샌드박스 제약 내에서 작동할 수 없는 경우를 처리할 수 있습니다.211
212* **기본 쓰기 동작**: 현재 작업 디렉토리 및 그 하위 디렉토리에 대한 읽기 및 쓰기 액세스
213* **기본 읽기 동작**: 특정 거부된 디렉토리를 제외한 전체 컴퓨터에 대한 읽기 액세스. 이 기본값은 여전히 `~/.aws/credentials` 및 `~/.ssh/`와 같은 자격 증명 파일 읽기를 허용합니다. 이를 차단하려면 `denyRead`에 추가합니다.
214* **차단된 액세스**: 명시적 권한 없이 현재 작업 디렉토리 외부의 파일을 수정할 수 없습니다. `~/.bashrc`와 같은 셸 구성 파일 및 `/bin/`의 시스템 바이너리 포함
215* **Git worktrees**: 작업 디렉토리가 [연결된 git worktree](/ko/worktrees)일 때, 샌드박스는 또한 메인 저장소의 공유 `.git` 디렉토리에 대한 쓰기를 허용하므로 `git commit`과 같은 명령이 refs 및 인덱스를 업데이트할 수 있습니다. 해당 디렉토리 내의 `hooks/` 및 `config`에 대한 쓰기는 계속 거부됩니다.
216* **구성 가능**: 설정을 통해 사용자 정의 허용 및 거부 경로를 정의합니다
217
218`sandbox.filesystem.allowWrite`를 사용하여 추가 경로에 대한 쓰기 액세스를 부여할 수 있습니다. 이러한 제한은 OS 수준에서 적용되므로 Claude의 파일 도구뿐만 아니라 `kubectl`, `terraform`, `npm`과 같은 도구를 포함한 모든 하위 프로세스 명령에 적용됩니다.
181 219
182 [샌드박스 설정](/ko/settings#sandbox-settings)에서 `"allowUnsandboxedCommands": false`를 설정하여 이 탈출 해치를 비활성화할 수 있습니다. 비활성화되면 `dangerouslyDisableSandbox` 매개변수가 완전히 무시되고 모든 명령은 샌드박싱되거나 `excludedCommands`에 명시적으로 나열되어야 합니다.220<h3 id="network-isolation">
221 네트워크 격리
222</h3>
223
224네트워크 액세스는 샌드박스 외부에서 실행되는 프록시 서버를 통해 제어됩니다:
225
226* **도메인 제한**: 사전 허용된 도메인이 없습니다. 명령이 새 도메인에 처음 액세스해야 할 때 Claude Code가 승인을 요청합니다. [`allowedDomains`](/ko/settings#sandbox-settings)로 도메인을 사전 허용하여 프롬프트를 피합니다.
227* **관리 잠금**: [`allowManagedDomainsOnly`](/ko/settings#sandbox-settings)가 관리 설정에서 설정되면 허용되지 않은 도메인이 프롬프트 대신 자동으로 차단되며 관리 설정의 `allowedDomains`만 존중됩니다.
228* **사용자 정의 프록시 지원**: 고급 사용자는 나가는 트래픽에 대한 사용자 정의 규칙을 구현할 수 있습니다
229* **포괄적 범위**: 제한은 명령으로 생성된 모든 스크립트, 프로그램 및 하위 프로세스에 적용됩니다
230
231<Note>
232 기본 제공 프록시는 요청된 호스트 이름을 기반으로 허용 목록을 적용하며 TLS 트래픽을 종료하거나 검사하지 않습니다. 이 설계의 의미는 [보안 제한 사항](#security-limitations)을 참조하고, 위협 모델이 TLS 검사를 요구하면 [사용자 정의 프록시 구성](#custom-proxy-configuration)을 참조하세요.
183</Note>233</Note>
184 234
185## 보안 이점235<h3 id="os-level-enforcement">
236 OS 수준 적용
237</h3>
186 238
187### 프롬프트 주입으로부터의 보호239샌드박싱된 Bash 도구는 운영 체제 보안 기본 요소를 활용합니다:
188 240
189공격자가 프롬프트 주입을 통해 Claude Code의 동작을 성공적으로 조작하더라도 샌드박스는 시스템이 안전하게 유지되도록 보장합니다:241* **macOS**: 샌드박스 적용을 위해 Seatbelt를 사용합니다
242* **Linux**: 격리를 위해 [bubblewrap](https://github.com/containers/bubblewrap)을 사용합니다
243* **WSL2**: Linux와 동일하게 bubblewrap을 사용합니다
190 244
191**파일시스템 보호:**245WSL1은 bubblewrap이 WSL2에서만 사용 가능한 커널 기능을 필요로 하기 때문에 지원되지 않습니다. 이러한 OS 수준의 제한은 Claude Code의 명령으로 생성된 모든 자식 프로세스가 동일한 보안 경계를 상속하도록 보장합니다.
192 246
193* `~/.bashrc`와 같은 중요한 구성 파일을 수정할 수 없습니다247이러한 동일한 기본 요소는 독립 실행형 [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) 패키지로 사용 가능하며, [샌드박스 환경](/ko/sandbox-environments#sandbox-runtime) 페이지에서 전체 Claude Code 프로세스를 래핑하기 위한 별도의 방식으로 다룹니다.
194* `/bin/`의 시스템 수준 파일을 수정할 수 없습니다
195* [Claude 권한 설정](/ko/permissions#manage-permissions)에서 거부된 파일을 읽을 수 없습니다
196 248
197**네트워크 보호:**249<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">
250 샌드박싱이 권한 및 권한 모드와 어떻게 관련되는지
251</h2>
198 252
199* 공격자가 제어하는 서버로 데이터를 유출할 수 없습니다253샌드박싱, [권한 규칙](/ko/permissions) 및 [권한 모드](/ko/permission-modes)는 상호 보완적인 계층입니다. 아래 섹션에서는 샌드박스가 각각과 어떻게 상호 작용하는지 다룹니다.
200* 승인되지 않은 도메인에서 악성 스크립트를 다운로드할 수 없습니다
201* 승인되지 않은 서비스에 예상치 못한 API 호출을 할 수 없습니다
202* 명시적으로 허용된 도메인이 아닌 다른 도메인에 연락할 수 없습니다
203 254
204**모니터링 및 제어:**255<h3 id="permission-rules">
256 권한 규칙
257</h3>
205 258
206* 샌드박스 외부의 모든 액세스 시도는 OS 수준에서 차단됩니다259권한 규칙과 샌드박싱은 다른 것을 제어합니다:
207* 경계가 테스트될 때 즉시 알림을 받습니다
208* 요청을 거부하거나, 한 번만 허용하거나, 구성을 영구적으로 업데이트하도록 선택할 수 있습니다
209 260
210### 공격 표면 감소261* **권한 규칙**은 Claude Code가 사용할 수 있는 도구를 제어하며 도구가 실행되기 전에 평가됩니다. 모든 도구에 적용됩니다: Bash, Read, Edit, WebFetch, MCP 등.
262* **샌드박싱**은 Bash 명령이 파일시스템 및 네트워크 수준에서 액세스할 수 있는 것을 제한하는 OS 수준의 적용을 제공합니다. Bash 명령 및 그 자식 프로세스에만 적용됩니다.
211 263
212샌드박싱은 다음으로 인한 잠재적 피해를 제한합니다:264두 계층은 또한 적용 방식이 다릅니다. Claude Code는 명령 문자열을 기반으로 명령이 실행되기 전에 권한 결정을 평가하고, 자동 모드에서는 명령이 안전한지 여부에 대한 별도 분류기의 판단을 평가합니다. 운영 체제는 실행 중인 프로세스에 샌드박스 경계를 적용하므로 모델이 실행하도록 선택한 것과 관계없이 그리고 허용된 명령이 이름이 나타내는 것보다 더 많이 하더라도 유지됩니다.
213 265
214* **악성 종속성**: 해로운 코드가 있는 NPM 패키지 또는 기타 종속성266파일시스템 및 네트워크 제한은 샌드박스 설정 및 권한 규칙을 통해 모두 구성됩니다:
215* **손상된 스크립트**: 보안 취약점이 있는 빌드 스크립트 또는 도구
216* **사회 공학**: 사용자를 속여 위험한 명령을 실행하도록 하는 공격
217* **프롬프트 주입**: Claude를 속여 위험한 명령을 실행하도록 하는 공격
218 267
219### 투명한 작동268| 설정 또는 규칙 | 수행 작업 |
269| :------------------------------------------------------------- | :--------------------------------------------------------------- |
270| `sandbox.filesystem.allowWrite` | 작업 디렉토리 외부의 경로에 대한 하위 프로세스 쓰기 액세스를 부여합니다 |
271| `sandbox.filesystem.denyWrite` 및 `sandbox.filesystem.denyRead` | 특정 경로에 대한 하위 프로세스 액세스를 차단합니다 |
272| `sandbox.filesystem.allowRead` | `denyRead` 영역 내의 특정 경로 읽기를 다시 허용합니다 |
273| `Edit` 허용 규칙 | 특정 경로에 대한 쓰기 액세스를 부여합니다. `sandbox.filesystem.allowWrite`와 동일한 방식 |
274| `Read` 및 `Edit` 거부 규칙 | 특정 파일 또는 디렉토리에 대한 액세스를 차단합니다 |
275| `WebFetch` 허용 및 거부 규칙 | 도메인 액세스를 제어합니다 |
276| 샌드박스 `allowedDomains` | Bash 명령이 도달할 수 있는 도메인을 제어합니다 |
277| 샌드박스 `deniedDomains` | 더 광범위한 `allowedDomains` 와일드카드가 허용할 수 있는 경우에도 특정 도메인을 차단합니다 |
220 278
221Claude Code가 샌드박스 외부의 네트워크 리소스에 액세스하려고 시도할 때:279`sandbox.filesystem` 설정 및 권한 규칙의 경로는 최종 샌드박스 구성으로 병합됩니다.
222 280
2231. 작업이 OS 수준에서 차단됩니다281[claude-code 저장소의 예제 디렉토리](https://github.com/anthropics/claude-code/tree/main/examples/settings)에는 샌드박스 관련 예제를 포함한 일반적인 배포 시나리오에 대한 시작 설정 구성이 포함되어 있습니다. 이를 시작점으로 사용하고 필요에 맞게 조정합니다.
2242. 즉시 알림을 받습니다
2253. 다음을 선택할 수 있습니다:
226 * 요청 거부
227 * 한 번만 허용
228 * 샌드박스 구성을 업데이트하여 영구적으로 허용
229 282
230## 보안 제한 사항283<h3 id="permission-modes">
284 권한 모드
285</h3>
231 286
232* 네트워크 샌드박싱 제한: 네트워크 필터링 시스템은 프로세스가 연결할 수 있는 도메인을 제한하여 작동합니다. 프록시를 통과하는 트래픽을 검사하지 않으며 사용자는 정책에서 신뢰할 수 있는 도메인만 허용하도록 해야 합니다.287`/sandbox`는 [권한 모드](/ko/permission-modes)가 아닙니다. 권한 모드는 도구 호출이 실행되는지 여부와 먼저 프롬프트되는지 여부를 결정하는 반면, 샌드박스는 Bash 명령이 실행되면 액세스할 수 있는 것을 제한합니다. 제어하는 것과 작업별 프롬프트를 대체하는 것이 다릅니다:
233 288
234<Warning>289| | 제어하는 것 | 프롬프트를 대체하는 것 |
235 사용자는 데이터 유출을 허용할 수 있는 `github.com`과 같은 광범위한 도메인을 허용하는 것과 관련된 잠재적 위험을 인식해야 합니다. 또한 경우에 따라 [도메인 프론팅](https://en.wikipedia.org/wiki/Domain_fronting)을 통해 네트워크 필터링을 우회할 수 있습니다.290| :------------------------------------------------------------- | :------------------------ | :------------------------------------------------------------------------------------------ |
236</Warning>291| `/sandbox` | Bash 명령이 실행되면 액세스할 수 있는 것 | [자동 허용 모드](#sandbox-modes)의 샌드박스 경계 자체 |
292| [자동 모드](/ko/permission-modes#eliminate-prompts-with-auto-mode) | 각 도구 호출이 실행되는지 여부 | 작업을 검토하는 분류기 |
293| `--dangerously-skip-permissions` | 각 도구 호출이 실행되는지 여부 | 없음. [보호된 경로](/ko/permission-modes#protected-paths) 확인도 건너뜁니다. `/` 또는 홈 디렉토리 제거만 여전히 프롬프트합니다 |
237 294
238* Unix 소켓을 통한 권한 상승: `allowUnixSockets` 구성은 실수로 샌드박스 우회로 이어질 수 있는 강력한 시스템 서비스에 대한 액세스를 부여할 수 있습니다. 예를 들어 `/var/run/docker.sock`에 대한 액세스를 허용하는 데 사용되면 docker 소켓을 악용하여 호스트 시스템에 대한 액세스를 효과적으로 부여합니다. 사용자는 샌드박스를 통해 허용하는 모든 unix 소켓을 신중하게 고려하도록 권장됩니다.295샌드박스의 [자동 허용 모드](#sandbox-modes)는 [자동 모드](/ko/permission-modes#eliminate-prompts-with-auto-mode)와 별개입니다: 자동 허용은 샌드박스 경계가 이를 포함하기 때문에 Bash 명령을 승인하는 반면, 자동 모드는 분류기를 사용하여 작업을 검토합니다. 두 가지는 독립적으로 작동하며 결합할 수 있습니다. 무인 실행을 위한 격리 경계를 선택하려면 [샌드박스 환경](/ko/sandbox-environments#how-isolation-relates-to-permission-modes)을 참조하세요.
239* 파일시스템 권한 상승: 과도하게 광범위한 파일시스템 쓰기 권한은 권한 상승 공격을 가능하게 할 수 있습니다. `$PATH`의 실행 파일을 포함하는 디렉토리, 시스템 구성 디렉토리 또는 사용자 셸 구성 파일(`.bashrc`, `.zshrc`)에 대한 쓰기를 허용하면 다른 사용자 또는 시스템 프로세스가 이러한 파일에 액세스할 때 다른 보안 컨텍스트에서 코드 실행으로 이어질 수 있습니다.
240* Linux 샌드박스 강도: Linux 구현은 강력한 파일시스템 및 네트워크 격리를 제공하지만 권한 있는 네임스페이스 없이 Docker 환경 내에서 작동할 수 있도록 하는 `enableWeakerNestedSandbox` 모드를 포함합니다. 이 옵션은 보안을 상당히 약화시키며 추가 격리가 다른 방식으로 적용되는 경우에만 사용해야 합니다.
241 296
242## 샌드박싱이 권한과 어떻게 관련되는지297<h2 id="configure-the-sandbox-for-your-organization">
298 조직을 위해 샌드박스 구성
299</h2>
243 300
244샌드박싱과 [권한](/ko/permissions)은 함께 작동하는 상호 보완적인 보안 계층입니다:301관리자는 모든 사용자에게 샌드박싱을 요구하고, 개발자가 정책을 확대하는 것을 방지하고, 샌드박스 트래픽을 회사 프록시를 통해 라우팅할 수 있습니다.
245 302
246* **권한**은 Claude Code가 사용할 수 있는 도구를 제어하며 도구가 실행되기 전에 평가됩니다. 이들은 모든 도구에 적용됩니다: Bash, Read, Edit, WebFetch, MCP 등.303<h3 id="enforce-sandboxing-with-managed-settings">
247* **샌드박싱**은 Bash 명령이 파일시스템 및 네트워크 수준에서 액세스할 수 있는 것을 제한하는 OS 수준의 적용을 제공합니다. Bash 명령 및 그 자식 프로세스에만 적용됩니다.304 관리 설정으로 샌드박싱 적용
305</h3>
248 306
249파일시스템 및 네트워크 제한은 샌드박스 설정 및 권한 규칙을 통해 모두 구성됩니다:307모든 개발자에게 샌드박스를 요구하려면 [관리 설정](/ko/settings#settings-files)을 통해 `sandbox` 키를 제공합니다. MDM으로 관리되는 파일 또는 Claude.ai의 [서버 관리 설정](/ko/server-managed-settings)을 통해 제공합니다.
250 308
251* `sandbox.filesystem.allowWrite`를 사용하여 작업 디렉토리 외부의 경로에 대한 하위 프로세스 쓰기 액세스를 부여합니다309다음 관리 설정 구성은 샌드박스를 활성화하고, 샌드박스를 초기화할 수 없으면 Claude Code 시작을 거부하고, 모델이 샌드박스 외부에서 명령을 다시 시도하는 것을 방지합니다:
252* `sandbox.filesystem.denyWrite` 및 `sandbox.filesystem.denyRead`를 사용하여 특정 경로에 대한 하위 프로세스 액세스를 차단합니다
253* `sandbox.filesystem.allowRead`를 사용하여 `denyRead` 영역 내의 특정 경로 읽기를 다시 허용합니다
254* `Read` 및 `Edit` 거부 규칙을 사용하여 특정 파일 또는 디렉토리에 대한 액세스를 차단합니다
255* `WebFetch` 허용/거부 규칙을 사용하여 도메인 액세스를 제어합니다
256* 샌드박스 `allowedDomains`를 사용하여 Bash 명령이 도달할 수 있는 도메인을 제어합니다
257* 샌드박스 `deniedDomains`를 사용하여 더 광범위한 `allowedDomains` 와일드카드가 허용할 수 있는 경우에도 특정 도메인을 차단합니다
258 310
259`sandbox.filesystem` 설정 및 권한 규칙의 경로는 최종 샌드박스 구성으로 병합됩니다.311```json theme={null}
312{
313 "sandbox": {
314 "enabled": true,
315 "failIfUnavailable": true,
316 "allowUnsandboxedCommands": false
317 }
318}
319```
320
321`enabled` 이상의 두 키는 샌드박스가 명령을 실행할 수 없을 때 발생하는 일을 제어합니다:
322
323* **`failIfUnavailable`**: Linux의 bubblewrap과 같은 누락된 종속성이 경고를 표시하고 샌드박싱 없는 실행으로 폴백하는 대신 Claude Code가 시작되는 것을 차단합니다
324* **`allowUnsandboxedCommands: false`**: `dangerouslyDisableSandbox` 탈출 해치가 무시되므로 샌드박스에서 실패한 명령을 샌드박스 외부에서 다시 시도할 수 없습니다
325
326함께 고려할 가치가 있는 두 가지 추가 사항이 있습니다. 격리 없이 실행해야 하는 조직 승인 도구에 대해 `excludedCommands`를 추가합니다. `~/.aws` 및 `~/.ssh`와 같은 자격 증명 디렉토리에 대해 [`denyRead`](#filesystem-isolation) 항목을 추가합니다. 기본 읽기 정책은 여전히 이를 허용합니다.
327
328샌드박스는 기본 Windows에서 실행되지 않으므로 플릿에 Windows 호스트가 포함되면 이 구성을 macOS 및 Linux로 범위를 지정하거나 해당 사용자가 WSL2 또는 컨테이너 내에서 Claude Code를 실행하도록 합니다.
260 329
261이 [저장소](https://github.com/anthropics/claude-code/tree/main/examples/settings)에는 샌드박스 관련 예제를 포함한 일반적인 배포 시나리오에 대한 시작 설정 구성이 포함되어 있습니다. 이를 시작점으로 사용하고 필요에 맞게 조정합니다.330<h3 id="keep-developers-from-widening-the-policy">
331 개발자가 정책을 확대하는 것을 방지
332</h3>
262 333
263## 고급 사용334`enabled` 및 `failIfUnavailable`과 같은 부울 키의 경우 Claude Code는 관리 값을 사용하고 개발자가 로컬로 설정한 모든 것을 무시합니다. `excludedCommands` 및 `allowRead`와 같은 배열 키의 경우 Claude Code는 모든 범위의 항목을 병합하므로 개발자는 정책을 확대하는 항목을 추가할 수 있습니다.
264 335
265### 사용자 정의 프록시 구성336관리 설정에서 `allowManagedReadPathsOnly`를 `true`로 설정하여 관리 설정의 `allowRead` 항목만 존중되도록 합니다. 사용자, 프로젝트 및 로컬 `allowRead` 항목은 무시됩니다. 이는 개발자가 조직 승인 경로 이상으로 읽기 액세스를 확대하는 것을 방지합니다. 네트워크 도메인을 동일한 방식으로 관리 값으로 잠그려면 [`allowManagedDomainsOnly`](/ko/settings#sandbox-settings)를 설정합니다.
337
338`excludedCommands`는 동등한 관리 전용 잠금이 없으므로 개발자는 항상 샌드박스 외부에서 실행되는 추가 명령을 추가하는 항목을 추가할 수 있습니다. 관리 목록을 좁게 유지합니다.
339
340<h3 id="custom-proxy-configuration">
341 사용자 정의 프록시 구성
342</h3>
266 343
267고급 네트워크 보안이 필요한 조직의 경우 사용자 정의 프록시를 구현하여 다음을 수행할 수 있습니다:344고급 네트워크 보안이 필요한 조직의 경우 사용자 정의 프록시를 구현하여 다음을 수행할 수 있습니다:
268 345
271* 모든 네트워크 요청 로깅348* 모든 네트워크 요청 로깅
272* 기존 보안 인프라와 통합349* 기존 보안 인프라와 통합
273 350
351Claude Code를 프록시로 지정하려면 [샌드박스 설정](/ko/settings#sandbox-settings)에서 프록시 포트를 설정합니다:
352
274```json theme={null}353```json theme={null}
275{354{
276 "sandbox": {355 "sandbox": {
282}361}
283```362```
284 363
285### 기존 보안 도구와의 통합364<h2 id="troubleshooting">
365 문제 해결
366</h2>
286 367
287샌드박싱된 bash 도구는 다음과 함께 작동합니다:368일부 명령은 샌드박스 내에서 실패하지만 외부에서는 작동합니다. 아래 수정 사항은 가장 일반적인 경우를 다룹니다.
288 369
289* **권한 규칙**: [권한 설정](/ko/permissions)과 결합하여 심층 방어를 수행합니다370* **명령이 host-not-allowed 오류로 실패**: 많은 CLI 도구는 특정 호스트에 도달해야 합니다. 프롬프트될 때 권한을 부여하면 호스트가 허용 목록에 추가되므로 도구가 향후 샌드박스 내에서 실행됩니다.
290* **개발 컨테이너**: [dev containers](/ko/devcontainer)와 함께 사용하여 추가 격리를 수행합니다371* **`jest`가 중단되거나 실패**: `watchman`은 샌드박스와 호환되지 않습니다. 대신 `jest --no-watchman`을 실행합니다.
291* **엔터프라이즈 정책**: [관리 설정](/ko/settings#settings-precedence)을 통해 샌드박스 구성을 적용합니다372* **Go 기반 CLI가 macOS에서 TLS 검증 실패**: `gh`, `gcloud`, `terraform`과 같은 도구는 Seatbelt에서 TLS 검증에 실패할 수 있습니다. 이러한 도구를 `excludedCommands`에 나열하여 샌드박스 외부에서 실행합니다. MITM 프록시 및 사용자 정의 CA와 함께 `httpProxyPort`를 사용하는 경우 대신 [`enableWeakerNetworkIsolation`](/ko/settings#sandbox-settings)을 `true`로 설정합니다.
373* **`docker` 명령 실패**: `docker`는 샌드박스와 호환되지 않습니다. `docker *`를 `excludedCommands`에 추가하여 샌드박스 외부에서 실행합니다.
374* **컨테이너 내에서 Bubblewrap 시작 실패**: 권한 없는 컨테이너에서 bubblewrap은 새로운 `/proc` 파일시스템을 마운트할 수 없습니다. [`enableWeakerNestedSandbox`](/ko/settings#sandbox-settings)를 `true`로 설정하여 내부 샌드박스가 컨테이너의 기존 `/proc`을 바인드 마운트하도록 합니다. 외부 컨테이너가 이미 필요한 격리 경계를 제공할 때만 이 설정을 사용합니다. 새로운 `/proc` 마운트가 숨길 프로세스 정보를 샌드박싱된 명령에 노출하기 때문입니다.
375* **Linux의 Seccomp 필터**: seccomp 필터는 Unix 도메인 소켓을 차단하는 데 필요합니다. `/sandbox`의 Dependencies 탭은 사용 가능한지 보여줍니다. 누락된 경우 `npm install -g @anthropic-ai/sandbox-runtime`을 실행하여 도우미를 설치합니다.
376* **`--dangerously-skip-permissions`이 root로 실패**: 이 플래그는 Linux 및 macOS에서 root로 또는 sudo를 통해 실행할 때 차단됩니다. root 액세스와 권한 프롬프트 없음이 결합되면 시스템의 모든 파일 또는 서비스를 수정할 수 있기 때문입니다. 확인은 인식된 샌드박스 내에서 자동으로 건너뜁니다. 컨테이너에서 자율적으로 실행하려면 [dev 컨테이너](/ko/devcontainer) 구성을 사용합니다. 이는 Claude Code를 비 root 사용자로 실행합니다.
292 377
293## 모범 사례378<h2 id="limitations">
379 제한 사항
380</h2>
294 381
2951. **제한적으로 시작**: 최소 권한으로 시작하여 필요에 따라 확장합니다382샌드박싱은 위험을 줄이지만 완전한 격리 경계는 아닙니다. 이를 하드 보안 제어로 사용하기 전에 아래 제한 사항을 검토합니다.
2962. **로그 모니터링**: 샌드박스 위반 시도를 검토하여 Claude Code의 필요 사항을 이해합니다
2973. **환경별 구성 사용**: 개발 및 프로덕션 컨텍스트에 대해 다른 샌드박스 규칙을 사용합니다
2984. **권한과 결합**: 포괄적인 보안을 위해 샌드박싱을 IAM 정책과 함께 사용합니다
2995. **구성 테스트**: 샌드박스 설정이 합법적인 워크플로우를 차단하지 않는지 확인합니다
300 383
301## 오픈 소스384<h3 id="security-limitations">
385 보안 제한 사항
386</h3>
302 387
303샌드박스 런타임은 자신의 에이전트 프로젝트에서 사용할 수 있는 오픈 소스 npm 패키지로 제공됩니다. 이를 통해 더 넓은 AI 에이전트 커뮤니티가 더 안전하고 보안이 강화된 자율 시스템을 구축할 수 있습니다. 이를 사용하여 실행하려는 다른 프로그램을 샌드박싱할 수도 있습니다. 예를 들어 MCP 서버를 샌드박싱하려면 다음을 실행할 수 있습니다:388* **네트워크 필터링**: 네트워크 필터링 시스템은 프로세스가 연결할 수 있는 도메인을 제한하여 작동합니다. 기본 제공 프록시는 아웃바운드 트래픽을 종료하거나 TLS 검사를 수행하지 않으므로 암호화된 연결의 내용은 검사되지 않습니다. 정책에서 신뢰할 수 있는 도메인만 허용하도록 보장하는 것은 사용자의 책임입니다.
304 389
305```bash theme={null}390<Warning>
306npx @anthropic-ai/sandbox-runtime <command-to-sandbox>391 `github.com`과 같은 광범위한 도메인을 허용하면 데이터 유출 경로가 생성될 수 있습니다. 프록시가 TLS를 검사하지 않고 클라이언트 제공 호스트 이름에서 허용 결정을 내리기 때문에 샌드박스 내에서 실행되는 코드는 잠재적으로 [도메인 프론팅](https://en.wikipedia.org/wiki/Domain_fronting) 또는 유사한 기술을 사용하여 허용 목록 외부의 호스트에 도달할 수 있습니다. 위협 모델이 더 강력한 보장을 요구하면 TLS를 종료하고 트래픽을 검사하는 [사용자 정의 프록시](#custom-proxy-configuration)를 구성하고 그 CA 인증서를 샌드박스 내에 설치합니다. 더 강력한 TLS 인식 네트워크 격리는 활발한 개발 영역입니다.
307```392</Warning>
308 393
309구현 세부 사항 및 소스 코드는 [GitHub 저장소](https://github.com/anthropic-experimental/sandbox-runtime)를 방문하세요.394* **Unix 소켓을 통한 권한 상승**: `allowUnixSockets` 구성은 실수로 샌드박스 우회로 이어질 수 있는 강력한 시스템 서비스에 대한 액세스를 부여할 수 있습니다. 예를 들어 `/var/run/docker.sock`에 대한 액세스를 허용하면 Docker 소켓을 통해 호스트 시스템에 대한 액세스를 효과적으로 부여합니다. 샌드박스를 통해 허용하는 모든 Unix 소켓을 신중하게 고려합니다.
395* **파일시스템 권한 상승**: 과도하게 광범위한 파일시스템 쓰기 권한은 권한 상승 공격을 가능하게 할 수 있습니다. `$PATH`의 실행 파일을 포함하는 디렉토리, 시스템 구성 디렉토리 또는 `.bashrc` 또는 `.zshrc`와 같은 사용자 셸 구성 파일에 대한 쓰기를 허용하면 다른 사용자 또는 시스템 프로세스가 이러한 파일에 액세스할 때 다른 보안 컨텍스트에서 코드 실행으로 이어질 수 있습니다.
396* **Linux 샌드박스 강도**: Linux 구현은 강력한 파일시스템 및 네트워크 격리를 제공하지만 권한 있는 네임스페이스 없이 Docker 환경 내에서 작동할 수 있도록 하는 `enableWeakerNestedSandbox` 모드를 포함합니다. 또는 권한 없는 사용자 네임스페이스가 sysctl에 의해 비활성화된 Linux 호스트에서. 이 옵션은 보안을 상당히 약화시키며 추가 격리가 다른 방식으로 적용되는 경우에만 사용해야 합니다.
397* **설정 파일 보호**: 샌드박스는 모든 범위의 Claude Code `settings.json` 파일 및 관리 설정 디렉토리에 대한 쓰기 액세스를 자동으로 거부하므로 샌드박싱된 명령은 자신의 정책을 수정할 수 없습니다.
310 398
311## 제한 사항399<h3 id="platform-and-tool-compatibility">
400 플랫폼 및 도구 호환성
401</h3>
312 402
313* **성능 오버헤드**: 최소이지만 일부 파일시스템 작업이 약간 더 느릴 수 있습니다403* **플랫폼 지원**: macOS, Linux 및 WSL2를 지원합니다. WSL1 및 기본 Windows는 지원되지 않습니다.
314* **호환성**: 특정 시스템 액세스 패턴이 필요한 일부 도구는 구성 조정이 필요할 수 있으며 샌드박스 외부에서 실행해야 할 수도 있습니다404* **성능 오버헤드**: 최소이지만 일부 파일시스템 작업이 약간 더 느릴 수 있습니다.
315* **플랫폼 지원**: macOS, Linux 및 WSL2를 지원합니다. WSL1은 지원되지 않습니다. 기본 Windows 지원이 계획되어 있습니다.405* **도구 호환성**: 특정 시스템 액세스 패턴이 필요한 일부 도구는 구성 조정이 필요할 수 있으며 샌드박스 외부에서 실행해야 할 수도 있습니다.
316 406
317## 샌드박싱이 다루지 않는 것407<h3 id="scope">
408 범위
409</h3>
318 410
319샌드박스는 Bash 하위 프로세스를 격리합니다. 다른 도구는 다른 경계에서 작동합니다:411샌드박스는 Bash 하위 프로세스를 격리합니다. 다른 도구는 다른 경계에서 작동합니다:
320 412
321* **기본 제공 파일 도구**: Read, Edit 및 Write는 샌드박스를 통해 실행되지 않고 권한 시스템을 직접 사용합니다. [권한](/ko/permissions)을 참조하세요.413* **기본 제공 파일 도구**: Read, Edit 및 Write는 샌드박스를 통해 실행되지 않고 권한 시스템을 직접 사용합니다. [권한](/ko/permissions)을 참조하세요.
322* **Desktop의 컴퓨터 사용**: Claude가 앱을 열고 화면을 제어할 때 격리된 환경이 아닌 실제 데스크톱에서 실행됩니다. 앱별 권한 프롬프트가 각 애플리케이션을 제어합니다. [Desktop의 컴퓨터 사용](/ko/desktop#let-claude-use-your-computer)을 참조하세요.414* **컴퓨터 사용**: Claude가 앱을 열고 화면을 제어할 때 격리된 환경이 아닌 실제 데스크톱에서 실행됩니다. 앱별 권한 프롬프트가 각 애플리케이션을 제어합니다. [CLI의 컴퓨터 사용](/ko/computer-use) 또는 [Desktop의 컴퓨터 사용](/ko/desktop#let-claude-use-your-computer)을 참조하세요.
415* **환경 변수**: 샌드박싱된 Bash 명령은 기본적으로 부모 프로세스 환경을 상속합니다. 여기에는 설정된 모든 자격 증명이 포함됩니다. 하위 프로세스에서 Anthropic 및 클라우드 공급자 자격 증명을 제거하려면 [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/ko/env-vars)를 설정합니다.
416* **하위 에이전트**: [하위 에이전트](/ko/sub-agents)는 부모 세션과 동일한 프로세스에서 실행되며 동일한 샌드박스 구성을 사용합니다. 부모 세션에서 샌드박싱이 활성화되면 하위 에이전트 내의 Bash 명령이 샌드박싱됩니다.
417
418<Warning>
419 효과적인 샌드박싱은 파일시스템 및 네트워크 격리 모두를 필요로 합니다. 네트워크 격리가 없으면 손상된 에이전트가 SSH 키와 같은 민감한 파일을 유출할 수 있습니다. 파일시스템 격리가 없으면 손상된 에이전트가 시스템 리소스를 백도어하여 네트워크 액세스를 얻을 수 있습니다. 기본값을 확대할 때 `allowWrite` 경로, 광범위한 `allowedDomains` 항목 또는 `excludedCommands` 예외가 다른 쪽의 제한을 취소하지 않는지 확인합니다.
420</Warning>
323 421
324## 참고 항목422<h2 id="see-also">
423 참고 항목
424</h2>
325 425
326* [보안](/ko/security) - 포괄적인 보안 기능 및 모범 사례426* [샌드박스 환경](/ko/sandbox-environments): 기본 제공 샌드박스를 dev 컨테이너, 컨테이너 및 VM과 비교
327* [권한](/ko/permissions) - 권한 구성 및 액세스 제어427* [보안](/ko/security): 포괄적인 보안 기능 및 모범 사례
328* [설정](/ko/settings) - 전체 구성 참조428* [권한](/ko/permissions): 권한 구성 및 액세스 제어
329* [CLI 참조](/ko/cli-reference) - 명령줄 옵션429* [설정](/ko/settings): 전체 구성 참조
430* [CLI 참조](/ko/cli-reference): 명령줄 옵션