165 `*`를 부분 명령 뒤에 놓습니다. `git log --oneline main`에서 `git`는 프로그램이고 `log`는 부분 명령이며, 프로그램이 수행하는 작업을 결정하는 단어입니다. Claude Code는 첫 번째 `*` 앞의 모든 것을 작성된 대로 일치시키므로, 이러한 단어들이 규칙을 제한하는 것입니다: `Bash(git log *)`는 `git log` 명령만 허용하고, `Bash(git *)`는 모든 git 명령을 허용합니다. Claude Code는 `Bash(git * main)`과 같이 부분 명령 앞에 `*`가 있는 허용 규칙에 대해 [시작 시 경고](/docs/ko/errors#has-a-wildcard-before-the-rest-of-the-command)합니다.165 `*`를 부분 명령 뒤에 놓습니다. `git log --oneline main`에서 `git`는 프로그램이고 `log`는 부분 명령이며, 프로그램이 수행하는 작업을 결정하는 단어입니다. Claude Code는 첫 번째 `*` 앞의 모든 것을 작성된 대로 일치시키므로, 이러한 단어들이 규칙을 제한하는 것입니다: `Bash(git log *)`는 `git log` 명령만 허용하고, `Bash(git *)`는 모든 git 명령을 허용합니다. Claude Code는 `Bash(git * main)`과 같이 부분 명령 앞에 `*`가 있는 허용 규칙에 대해 [시작 시 경고](/docs/ko/errors#has-a-wildcard-before-the-rest-of-the-command)합니다.
166</Warning>166</Warning>
167 167
168Claude가 묻지 않고 실행하기를 원하는 명령을 작성하고, 변하는 부분을 `*`로 바꿉니다. 이 구성을 사용하면 Claude Code는 npm 스크립트와 git 커밋을 묻지 않고 실행하고 git push를 거부합니다:168Claude가 묻지 않고 실행하기를 원하는 명령을 작성하고, 변하는 부분을 `*`로 바꿉니다. 이 구성을 사용하면 Claude Code는 npm 스크립트와 git 커밋을 묻지 않고 실행하고 `git push`로 시작하는 명령을 거부합니다. `git -C . push`처럼 다른 방식으로 작성된 push는 일치하지 않습니다. [Bash 규칙이 일치하지 않는 것](#bash-rule-limits)을 참조하세요.
169 169
170```json theme={null}170```json theme={null}
171{171{
224 224
225도구 이름이 알려진 도구와 일치하지 않는 거부 또는 요청 규칙은 오타를 포착하기 위해 시작 경고를 생성합니다. `_` 또는 `*`를 포함하는 도구 이름은 확인에서 제외됩니다.225도구 이름이 알려진 도구와 일치하지 않는 거부 또는 요청 규칙은 오타를 포착하기 위해 시작 경고를 생성합니다. `_` 또는 `*`를 포함하는 도구 이름은 확인에서 제외됩니다.
226 226
227트랜스크립트 및 권한 대화 상자에서 도구에 대해 표시되는 레이블은 정규 이름과 다를 수 있습니다. 예를 들어, 트랜스크립트에서 `Stop Task`로 표시되는 도구의 정규 이름은 `TaskStop`입니다. 권한 규칙 및 [hook 매처](/docs/ko/hooks)는 정규 이름만 일치시키므로, `Stop Task`로 작성된 규칙은 일치하지 않습니다. 거부 및 요청 규칙의 경우, 위의 시작 경고가 불일치를 포착합니다. [도구 참조](/docs/ko/tools-reference)에 나열된 정규 이름을 사용합니다.227트랜스크립트 및 권한 대화 상자에서 도구에 대해 표시되는 레이블은 정규 이름과 다를 수 있습니다. 예를 들어, 트랜스크립트에서 `Stop Task`로 표시되는 도구의 정규 이름은 `TaskStop`입니다. 권한 규칙 및 [hook 매처](/docs/ko/hooks)는 레이블을 기준으로 일치시키지 않으므로, `Stop Task`로 작성된 규칙은 일치하지 않습니다. 거부 및 요청 규칙의 경우, 위의 시작 경고가 불일치를 포착합니다. [도구 참조](/docs/ko/tools-reference)에 나열된 정규 이름을 사용합니다.
228 228
229<h2 id="tool-specific-permission-rules">229<h2 id="tool-specific-permission-rules">
230 도구별 권한 규칙230 도구별 권한 규칙
234 Bash234 Bash
235</h3>235</h3>
236 236
237Bash 규칙은 전체 명령 텍스트와 일치하며, `*`는 모든 텍스트를 나타냅니다. [와일드카드 패턴](#wildcard-patterns)은 각 규칙 형태가 일치하는 명령과 `*`를 어디에 배치할지 보여줍니다. 이 섹션의 나머지 부분은 Claude Code가 복합 명령, 래퍼, 읽기 전용 명령 및 리다이렉션을 어떻게 일치시키는지 다룹니다.237Bash 규칙은 전체 명령 텍스트와 일치하며, `*`는 모든 텍스트를 나타냅니다. [와일드카드 패턴](#wildcard-patterns)은 각 규칙 형태가 일치하는 명령과 `*`를 어디에 배치할지 보여줍니다. 이 섹션의 나머지 부분은 Claude Code가 복합 명령과 래퍼를 어떻게 일치시키는지, 규칙이 일치하지 않는 것, 읽기 전용 명령 및 리다이렉션을 다룹니다.
238 238
239<h4 id="compound-commands">239<h4 id="compound-commands">
240 복합 명령240 복합 명령
264 264
265`watch`, `setsid`, `ionice` 및 `flock`과 같은 Exec 래퍼는 접두사 규칙 `Bash(watch *)`로 자동 승인될 수 없으므로 Manual 모드에서 항상 프롬프트합니다. 동일한 사항이 `-exec` 또는 `-delete`를 사용하는 `find`에 적용됩니다: `Bash(find *)` 규칙은 이러한 형식을 포함하지 않습니다. 특정 호출을 승인하려면 전체 명령 문자열에 대한 정확한 일치 규칙을 작성합니다.265`watch`, `setsid`, `ionice` 및 `flock`과 같은 Exec 래퍼는 접두사 규칙 `Bash(watch *)`로 자동 승인될 수 없으므로 Manual 모드에서 항상 프롬프트합니다. 동일한 사항이 `-exec` 또는 `-delete`를 사용하는 `find`에 적용됩니다: `Bash(find *)` 규칙은 이러한 형식을 포함하지 않습니다. 특정 호출을 승인하려면 전체 명령 문자열에 대한 정확한 일치 규칙을 작성합니다.
266 266
267<h4 id="bash-rule-limits">
268 Bash 규칙이 일치하지 않는 것
269</h4>
270
271Bash 규칙은 Claude Code가 [복합 명령](#compound-commands)을 분할하고 [래퍼](#process-wrappers)를 제거한 후 Claude가 작성한 명령 텍스트와 일치합니다. 다른 형식으로 호출된 동일한 프로그램과는 일치하지 않으므로 deny 또는 ask 규칙은 Claude가 일반적으로 생성하는 호출을 중지하며 프로그램 주변의 보안 경계가 아닙니다. 이러한 규칙은 `deny` 또는 `ask`에서 첫 번째 형식을 중지하고 다른 형식은 중지하지 않습니다:
272
273| 규칙 | 중지 | 중지하지 않음 |
274| :----------------- | :------------------------- | :---------------------------------------------------------------------------------------------------- |
275| `Bash(curl *)` | `curl https://example.com` | `/usr/bin/curl https://example.com`, `sh -c 'curl https://example.com'` |
276| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |
277| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |
278
279마지막 열의 명령이 어떻게 처리될지는 다른 규칙과 권한 모드가 결정합니다.
280
281명령 텍스트에 의존하지 않는 파일 시스템 및 네트워크 적용을 위해 [샌드박싱](/docs/ko/sandboxing)을 사용합니다. 실행되기 전에 자신의 논리로 전체 명령 텍스트를 검사하려면 [PreToolUse 훅](#extend-permissions-with-hooks)을 사용합니다.
282
267<h4 id="read-only-commands">283<h4 id="read-only-commands">
268 읽기 전용 명령284 읽기 전용 명령
269</h4>285</h4>
294 * 다른 프로토콜: `curl https://github.com/...`310 * 다른 프로토콜: `curl https://github.com/...`
295 * 리다이렉트: `curl -L http://short.example.com/xyz` (GitHub로 리다이렉트)311 * 리다이렉트: `curl -L http://short.example.com/xyz` (GitHub로 리다이렉트)
296 * 변수: `URL=http://github.com && curl $URL`312 * 변수: `URL=http://github.com && curl $URL`
297 * 추가 공백: `curl http://github.com`
298 313
299 더 안정적인 URL 필터링을 위해 다음을 고려합니다:314 더 안정적인 URL 필터링을 위해 다음을 고려합니다:
300 315
301 * **Bash 네트워크 도구 제한**: deny 규칙을 사용하여 `curl`, `wget` 및 유사한 명령을 차단한 다음 허용된 도메인에 대해 `WebFetch(domain:github.com)` 권한으로 WebFetch 도구를 사용합니다316 * **Bash 네트워크 도구 제한**: deny 규칙을 사용하여 `curl`, `wget` 및 유사한 명령을 차단한 다음 허용된 도메인에 대해 `WebFetch(domain:github.com)` 권한으로 WebFetch 도구를 사용합니다. deny 규칙은 경로로 호출하거나 `sh -c` 내부에서 호출한 동일한 프로그램과는 일치하지 않으므로 제한이 반드시 유지되어야 할 때는 [샌드박스 네트워크 allowlist](/docs/ko/sandboxing#network-isolation)와 함께 사용합니다. [Bash 규칙이 일치하지 않는 것](#bash-rule-limits)을 참조합니다.
302 * **PreToolUse 훅 사용**: Bash 명령의 URL을 검증하고 허용되지 않은 도메인을 차단하는 훅을 구현합니다317 * **PreToolUse 훅 사용**: Bash 명령의 URL을 검증하고 허용되지 않은 도메인을 차단하는 훅을 구현합니다.
303 * **CLAUDE.md 지침 추가**: `CLAUDE.md`에서 허용된 curl 패턴을 설명합니다. 이는 Claude가 시도하는 것을 형성하지만 경계를 적용하지 않으므로 위의 옵션 중 하나와 함께 사용합니다318 * **CLAUDE.md 지침 추가**: `CLAUDE.md`에서 허용된 curl 패턴을 설명합니다. 이는 Claude가 시도하는 것을 형성하지만 경계를 적용하지 않으므로 위의 옵션 중 하나와 함께 사용합니다.
304 319
305 WebFetch만 사용하는 것은 네트워크 액세스를 방지하지 않습니다. Bash가 허용되면 Claude는 여전히 `curl`, `wget` 또는 다른 도구를 사용하여 모든 URL에 도달할 수 있습니다.320 WebFetch만 사용하는 것은 네트워크 액세스를 방지하지 않습니다. Bash가 허용되면 Claude는 여전히 `curl`, `wget` 또는 다른 도구를 사용하여 모든 URL에 도달할 수 있습니다.
306</Warning>321</Warning>
344 Read 및 Edit359 Read 및 Edit
345</h3>360</h3>
346 361
347Claude의 파일 도구가 파일 또는 디렉토리를 읽는 것을 차단하려면 `Read(./secrets/**)`와 같은 경로에 대해 `Read` deny 규칙을 추가합니다. [민감한 파일 제외](/docs/ko/settings-reference#exclude-sensitive-files)에는 붙여넣기 준비가 된 예제가 있습니다.362Claude의 파일 도구가 파일 또는 디렉토리를 읽는 것을 차단하려면 `Read(./.env)` 또는 `Read(./secrets/**)`와 같은 경로에 대해 `Read` deny 규칙을 추가합니다. [민감한 파일 제외](/docs/ko/settings-reference#exclude-sensitive-files)에는 붙여넣기 준비가 된 예제가 있습니다.
348 363
349`Edit` 규칙은 파일을 편집하는 모든 기본 제공 도구에 적용됩니다. Claude는 Grep 및 Glob과 같이 파일을 읽는 모든 기본 제공 도구에 `Read` 규칙을 적용하기 위해 최선을 다합니다. 또한 프롬프트의 `@file` 언급 및 연결된 [IDE](/docs/ko/vs-code#the-built-in-ide-mcp-server)가 Claude와 공유하는 선택 및 열린 파일 컨텍스트에도 적용합니다.364`Edit` 규칙은 파일을 편집하는 모든 기본 제공 도구에 적용됩니다. Claude는 Grep 및 Glob과 같이 파일을 읽는 모든 기본 제공 도구에 `Read` 규칙을 적용하기 위해 최선을 다합니다. 또한 프롬프트의 `@file` 언급 및 연결된 [IDE](/docs/ko/vs-code#the-built-in-ide-mcp-server)가 Claude와 공유하는 선택 및 열린 파일 컨텍스트에도 적용합니다.
350 365
353Claude Code는 `Edit(path)` 및 `Read(path)` 규칙에 대해서만 파일 권한을 확인합니다. `Write`, `NotebookEdit`, `Glob` 또는 레거시 `MultiEdit` 도구에 대해 경로 규칙을 작성하면 Claude Code는 규칙을 수락하지만 절대 참조하지 않으며, `--allowedTools`에 전달된 `Glob` 규칙을 제외하고 [시작 시 경고](/docs/ko/errors#is-not-matched-by-file-permission-checks)합니다. `Write(docs/**)`, `NotebookEdit(docs/**)` 또는 `MultiEdit(docs/**)` 대신 `Edit(docs/**)`를 사용하고, `Glob(docs/**)` 대신 `Read(docs/**)`를 사용합니다. Claude Code는 `Write`, `NotebookEdit` 또는 `Glob`과 같은 경로가 없는 도구 이름 규칙에 대해 경고하지 않습니다. 이는 도구 수준에서 모든 곳에서 해당 규칙과 일치합니다. v2.1.210 이상이 필요합니다.368Claude Code는 `Edit(path)` 및 `Read(path)` 규칙에 대해서만 파일 권한을 확인합니다. `Write`, `NotebookEdit`, `Glob` 또는 레거시 `MultiEdit` 도구에 대해 경로 규칙을 작성하면 Claude Code는 규칙을 수락하지만 절대 참조하지 않으며, `--allowedTools`에 전달된 `Glob` 규칙을 제외하고 [시작 시 경고](/docs/ko/errors#is-not-matched-by-file-permission-checks)합니다. `Write(docs/**)`, `NotebookEdit(docs/**)` 또는 `MultiEdit(docs/**)` 대신 `Edit(docs/**)`를 사용하고, `Glob(docs/**)` 대신 `Read(docs/**)`를 사용합니다. Claude Code는 `Write`, `NotebookEdit` 또는 `Glob`과 같은 경로가 없는 도구 이름 규칙에 대해 경고하지 않습니다. 이는 도구 수준에서 모든 곳에서 해당 규칙과 일치합니다. v2.1.210 이상이 필요합니다.
354 369
355<Warning>370<Warning>
356 Read 및 Edit deny 규칙은 Claude의 기본 제공 파일 도구, Bash에서 Claude Code가 인식하는 `cat`, `head`, `tail` 및 `sed`와 같은 파일 명령, 그리고 `> file` 및 `< file`과 같은 Bash [리다이렉션](#redirections)의 대상에 적용됩니다. 이들은 파일을 간접적으로 읽거나 쓰는 Python 또는 Node 스크립트와 같은 임의의 서브프로세스에는 적용되지 않습니다. 경로에 대한 모든 프로세스의 액세스를 차단하는 OS 수준 적용을 위해 [샌드박싱을 활성화합니다](/docs/ko/sandboxing).371 Read 및 Edit deny 규칙은 Claude의 기본 제공 파일 도구, Bash에서 Claude Code가 인식하는 `cat`, `head`, `tail` 및 `sed`와 같은 파일 명령, 그리고 `> file` 및 `< file`과 같은 Bash [리다이렉션](#redirections)의 대상에 적용됩니다. 이들은 파일이 있는 디렉토리에서 실행한 `grep -r pattern .`처럼 파일 이름을 지정하지 않고 파일을 읽는 명령이나, 파일을 직접 여는 Python 또는 Node 스크립트처럼 파일을 간접적으로 읽거나 쓰는 임의의 서브프로세스에는 적용되지 않습니다. 경로에 대한 모든 프로세스의 액세스를 차단하는 OS 수준 적용을 위해 [샌드박싱을 활성화합니다](/docs/ko/sandboxing).
357</Warning>372</Warning>
358 373
359Read 및 Edit 규칙은 모두 [gitignore](https://git-scm.com/docs/gitignore) 패턴 구문을 사용하며 4가지 고유한 패턴 유형이 있습니다. 단일 세그먼트 디렉토리 패턴의 경우 일치 깊이는 이 섹션의 뒷부분에서 설명하는 규칙 유형에도 따릅니다:374Read 및 Edit 규칙은 모두 [gitignore](https://git-scm.com/docs/gitignore) 패턴 구문을 사용하며 4가지 고유한 패턴 유형이 있습니다. 단일 세그먼트 디렉토리 패턴의 경우 일치 깊이는 이 섹션의 뒷부분에서 설명하는 규칙 유형에도 따릅니다:
383 398
384로컬 설정 규칙은 v2.1.211 이상에서 Claude Code가 [파일을 저장하는](#permission-system) 저장소 루트가 아닌 세션의 [primary working directory](#working-directories)에 앵커됩니다. 저장소 루트에서 시작된 세션에서 두 디렉토리는 동일합니다. [worktree](/docs/ko/worktrees) 세션에서 `Edit(/src/**)`와 같은 공유 규칙은 해당 worktree의 자체 `src/` 디렉토리와 일치합니다.399로컬 설정 규칙은 v2.1.211 이상에서 Claude Code가 [파일을 저장하는](#permission-system) 저장소 루트가 아닌 세션의 [primary working directory](#working-directories)에 앵커됩니다. 저장소 루트에서 시작된 세션에서 두 디렉토리는 동일합니다. [worktree](/docs/ko/worktrees) 세션에서 `Edit(/src/**)`와 같은 공유 규칙은 해당 worktree의 자체 `src/` 디렉토리와 일치합니다.
385 400
401사용자 설정의 `Read(/secrets/**)`와 같은 deny 규칙은 프로젝트의 `secrets` 디렉토리가 아니라 `~/.claude/secrets/**`를 차단합니다. 모든 프로젝트 내에서 적용되는 사용자 설정의 규칙을 작성하려면 `//` 절대 경로 또는 `~/` 홈 상대 경로를 대신 사용합니다.
402
386Windows에서 경로는 일치하기 전에 POSIX 형식으로 정규화됩니다. `C:\Users\alice`는 `/c/Users/alice`가 되므로 `//c/**/.env`를 사용하여 해당 드라이브의 어디든 `.env` 파일과 일치시킵니다. 모든 드라이브에서 일치시키려면 `//**/.env`를 사용합니다.403Windows에서 경로는 일치하기 전에 POSIX 형식으로 정규화됩니다. `C:\Users\alice`는 `/c/Users/alice`가 되므로 `//c/**/.env`를 사용하여 해당 드라이브의 어디든 `.env` 파일과 일치시킵니다. 모든 드라이브에서 일치시키려면 `//**/.env`를 사용합니다.
387 404
388예시:405예시:
532경로 패턴은 [Read 및 Edit 규칙](#read-and-edit)의 `//`, `~/` 및 `/` 앵커를 공유하지만 일치는 gitignore 스타일이 아닌 전체 디렉토리 경로에 앵커됩니다. `*`는 정확히 하나의 경로 세그먼트와 일치하고 `**`는 세그먼트 전체에서 일치합니다. 후행 `/**`는 또한 명명된 루트와 일치합니다.549경로 패턴은 [Read 및 Edit 규칙](#read-and-edit)의 `//`, `~/` 및 `/` 앵커를 공유하지만 일치는 gitignore 스타일이 아닌 전체 디렉토리 경로에 앵커됩니다. `*`는 정확히 하나의 경로 세그먼트와 일치하고 `**`는 세그먼트 전체에서 일치합니다. 후행 `/**`는 또한 명명된 루트와 일치합니다.
533 550
534| 규칙 | 일치 | 일치하지 않음 |551| 규칙 | 일치 | 일치하지 않음 |
535| --------------------- | ------------------------------- | -------------------------- |552| --------------------- | ------------------------------------------ | -------------------------- |
536| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |553| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |
537| `Cd(~/code/**)` | `~/code` 및 그 아래의 모든 디렉토리 | `~/code` 외부의 디렉토리 |554| `Cd(~/code/**)` | `~/code` 및 그 아래의 모든 디렉토리 | `~/code` 외부의 디렉토리 |
538| `Cd(**/node_modules)` | 어느 깊이에서나 모든 `node_modules` 디렉토리 | `node_modules/pkg` |555| `Cd(**/node_modules)` | 현재 디렉토리 아래 어느 깊이에서나 모든 `node_modules` 디렉토리 | `node_modules/pkg` |
539 556
540<h2 id="extend-permissions-with-hooks">557<h2 id="extend-permissions-with-hooks">
541 훅으로 권한 확장558 훅으로 권한 확장
565 582
566[`permissions.blockReadsOutsideWorkingDirectories`](/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 설정하여 파일 도구가 모든 권한 모드에서 경계를 지은 경로를 거부하도록 합니다. 자동 모드에서 Claude Code는 Claude가 [작업 디렉토리 외부에서 읽을](/docs/ko/permission-modes#first-read-outside-the-working-directories) 때 처음으로 이를 켜도록 제안합니다.583[`permissions.blockReadsOutsideWorkingDirectories`](/docs/ko/settings-reference#permissions-blockreadsoutsideworkingdirectories)를 설정하여 파일 도구가 모든 권한 모드에서 경계를 지은 경로를 거부하도록 합니다. 자동 모드에서 Claude Code는 Claude가 [작업 디렉토리 외부에서 읽을](/docs/ko/permission-modes#first-read-outside-the-working-directories) 때 처음으로 이를 켜도록 제안합니다.
567 584
568macOS의 백그라운드 세션에서 세션 호스트는 Claude가 파일을 읽거나 쓸 필요가 있을 때 터미널과 별도로 `~/Desktop`, `~/Documents`, `~/Downloads`와 같은 보호된 폴더에 대한 액세스를 요청합니다. 읽기가 `Operation not permitted`로 실패하면 [백그라운드 세션에 폴더 액세스를 부여하는 방법](/docs/ko/agent-view#background-sessions-cant-read-desktop-documents-or-downloads-on-macos)을 참조하세요.585macOS의 백그라운드 세션에서 세션 호스트는 Claude가 파일을 읽거나 쓸 필요가 있을 때 터미널과 별도로 `~/Desktop`, `~/Documents`, `~/Downloads`와 같은 보호된 폴더에 대한 액세스를 요청합니다. 읽기가 `Operation not permitted`로 실패하면 [백그라운드 세션에 폴더 액세스를 부여하는 방법](/docs/ko/agent-view#background-sessions-can%E2%80%99t-read-desktop-documents-or-downloads-on-macos)을 참조하세요.
569 586
570<h3 id="move-the-session-to-another-directory">587<h3 id="move-the-session-to-another-directory">
571 세션을 다른 디렉토리로 이동588 세션을 다른 디렉토리로 이동
625* **권한**은 Claude Code가 사용할 수 있는 도구와 액세스할 수 있는 파일 또는 도메인을 제어합니다. Bash, Read, Edit, WebFetch, MCP 및 다른 모든 도구에 적용되지만, deny 또는 ask 규칙은 다른 도구가 남아 있는 동안 [`EndConversation`](/docs/ko/tools-reference#endconversation-tool-behavior)을 차단할 수 없습니다.642* **권한**은 Claude Code가 사용할 수 있는 도구와 액세스할 수 있는 파일 또는 도메인을 제어합니다. Bash, Read, Edit, WebFetch, MCP 및 다른 모든 도구에 적용되지만, deny 또는 ask 규칙은 다른 도구가 남아 있는 동안 [`EndConversation`](/docs/ko/tools-reference#endconversation-tool-behavior)을 차단할 수 없습니다.
626* **샌드박싱**은 Bash 도구의 파일 시스템 및 네트워크 액세스를 제한하는 OS 수준 적용을 제공합니다. Bash 명령 및 해당 자식 프로세스에만 적용됩니다.643* **샌드박싱**은 Bash 도구의 파일 시스템 및 네트워크 액세스를 제한하는 OS 수준 적용을 제공합니다. Bash 명령 및 해당 자식 프로세스에만 적용됩니다.
627 644
628심층 방어를 위해 둘 다 사용합니다:645심층 방어를 위해 둘 다 사용합니다. 샌드박스 제한은 프롬프트 주입이 Claude의 의사 결정을 우회하더라도 여전히 적용됩니다. 샌드박스 설정과 권한 규칙의 경로 및 도메인은 [최종 샌드박스 구성으로 병합됩니다](/docs/ko/sandboxing#permission-rules).
629
630* 권한 deny 규칙은 Claude가 제한된 리소스에 액세스하려고 시도하는 것을 차단합니다
631* 샌드박스 제한은 프롬프트 주입이 Claude의 의사 결정을 우회하더라도 Bash 명령이 정의된 경계 외부의 리소스에 도달하는 것을 방지합니다
632* 샌드박스의 파일 시스템 제한은 [`sandbox.filesystem`](/docs/ko/sandboxing) 설정을 Read 및 Edit deny 규칙과 결합합니다. 둘 다 최종 샌드박스 경계로 병합됩니다
633* 네트워크 제한은 `WebFetch(domain:...)` 권한 규칙을 샌드박스의 `allowedDomains` 및 `deniedDomains` 목록과 결합합니다
634 646
635샌드박싱을 활성화하고 `autoAllowBashIfSandboxed`를 기본값인 `true`로 유지하면, 권한에 bare `Bash` ask 규칙이 포함되어 있거나 [동등한 `Bash(*)` 형식](#match-all-uses-of-a-tool)이 포함되어 있어도 샌드박스된 Bash 명령은 프롬프트 없이 실행됩니다. 샌드박스 경계는 전체 도구 프롬프트를 대체합니다.647샌드박싱을 활성화하고 `autoAllowBashIfSandboxed`를 기본값인 `true`로 유지하면, 권한에 bare `Bash` ask 규칙이 포함되어 있거나 [동등한 `Bash(*)` 형식](#match-all-uses-of-a-tool)이 포함되어 있어도 샌드박스된 Bash 명령은 프롬프트 없이 실행됩니다. 샌드박스 경계는 전체 도구 프롬프트를 대체합니다.
636 648
686 로컬 설정 파일이 신뢰가 필요한 경우698 로컬 설정 파일이 신뢰가 필요한 경우
687</h3>699</h3>
688 700
689`.claude/settings.local.json`은 일반적으로 사용자 자신의 파일이므로 Claude Code는 신뢰 단계 없이 허용 규칙과 추가 디렉터리를 적용합니다. 파일이 git에서 추적되거나 `.claude`가 심볼릭 링크인 경우, Claude Code는 이를 저장소 제공 파일로 취급하고 폴더를 신뢰할 때까지 규칙을 유지합니다.701`.claude/settings.local.json`은 일반적으로 사용자 자신의 파일이므로 Claude Code는 신뢰 단계 없이 허용 규칙과 추가 디렉터리를 적용합니다. 파일이 git에서 추적되거나 `.claude`가 심볼릭 링크인 경우, Claude Code는 이를 저장소 제공 파일로 취급하고 폴더를 신뢰할 때까지 규칙 적용을 보류합니다.
690 702
691Claude Code는 git을 실행하여 둘을 구분하며, 폴더를 신뢰한 후에만 git을 실행합니다: 폴더에 대한 신뢰 대화상자를 수락했거나 신뢰가 확장되는 상위 디렉터리에 대해 수락했거나, 수락된 것으로 간주되는 `-p` 또는 SDK 세션에 있습니다. 그 전까지는 Claude Code를 시작한 위치가 파일의 규칙에 어떤 일이 발생하는지 결정합니다:703Claude Code는 git을 실행하여 둘을 구분하며, 폴더를 신뢰한 후에만 git을 실행합니다: 폴더에 대한 신뢰 대화상자를 수락했거나 신뢰가 확장되는 상위 디렉터리에 대해 수락했거나, 수락된 것으로 간주되는 `-p` 또는 SDK 세션에 있습니다. 그 전까지는 Claude Code를 시작한 위치가 파일의 규칙에 어떤 일이 발생하는지 결정합니다:
692 704
693* **구성 홈에서:** Claude Code는 git을 실행하지 않고 즉시 해당 폴더의 `.claude/settings.local.json`을 적용합니다. 구성 홈은 홈 디렉터리이거나 `.claude` 하위 디렉터리를 [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars#variables)으로 설정한 디렉터리입니다. 해당 `CLAUDE_CONFIG_DIR` 디렉터리가 git 저장소 내부에 있고 Claude Code가 [저장소 루트에서 로컬 설정을 유지](/docs/ko/settings#where-claude-code-looks-for-each-file)하는 경우, 다른 곳처럼 규칙을 유지합니다.705* **구성 홈에서:** Claude Code는 git을 실행하지 않고 즉시 해당 폴더의 `.claude/settings.local.json`을 적용합니다. 구성 홈은 홈 디렉터리이거나 `.claude` 하위 디렉터리를 [`CLAUDE_CONFIG_DIR`](/docs/ko/env-vars#variables)으로 설정한 디렉터리입니다. 해당 `CLAUDE_CONFIG_DIR` 디렉터리가 git 저장소 내부에 있고 Claude Code가 [저장소 루트에서 로컬 설정을 유지](/docs/ko/settings#where-claude-code-looks-for-each-file)하는 경우, 다른 곳처럼 규칙 적용을 보류합니다.
694* **다른 곳:** Claude Code는 프로젝트 설정처럼 파일의 규칙을 유지합니다. 확인이 실행된 후 Claude Code는 추적되지 않은 파일의 규칙이나 git 저장소 외부 디렉터리의 파일 규칙을 적용합니다. 비록 해당 정확한 폴더를 신뢰하지 않았더라도 말입니다.706* **다른 곳:** Claude Code는 프로젝트 설정처럼 파일의 규칙 적용을 보류합니다. 확인이 실행된 후 Claude Code는 추적되지 않은 파일의 규칙이나 git 저장소 외부 디렉터리의 파일 규칙을 적용합니다. 비록 해당 정확한 폴더를 신뢰하지 않았더라도 말입니다.
695 707
696<Note>708<Note>
697 구성 홈 예외는 신뢰 단계만 건너뜁니다. `~/.claude/settings.local.json`은 여전히 [로컬 범위](/docs/ko/settings#compare-the-scope-of-each-settings-file)이므로, Claude Code는 홈 디렉터리 자체에서 시작한 세션에서만 읽으며, 모든 프로젝트에서는 읽지 않습니다. 모든 프로젝트에 걸쳐 권한 규칙을 적용하려면 대신 사용자 설정에 추가하세요: `~/.claude/settings.json` 또는 `CLAUDE_CONFIG_DIR`이 설정된 경우 `$CLAUDE_CONFIG_DIR/settings.json`.709 구성 홈 예외는 신뢰 단계만 건너뜁니다. `~/.claude/settings.local.json`은 여전히 [로컬 범위](/docs/ko/settings#compare-the-scope-of-each-settings-file)이므로, Claude Code는 홈 디렉터리 자체에서 시작한 세션에서만 읽으며, 모든 프로젝트에서는 읽지 않습니다. 모든 프로젝트에 걸쳐 권한 규칙을 적용하려면 대신 사용자 설정에 추가하세요: `~/.claude/settings.json` 또는 `CLAUDE_CONFIG_DIR`이 설정된 경우 `$CLAUDE_CONFIG_DIR/settings.json`.
698</Note>710</Note>
699 711
700버전 2.1.196부터 2.1.199까지는 Claude Code가 구성 홈과 git 저장소 외부에서 파일의 규칙을 유지했으며 [`this workspace has not been trusted`](/docs/ko/errors#workspace-has-not-been-trusted) 경고를 출력했습니다. v2.1.207 이전에는 Claude Code가 대화상자를 수락하기 전에 추적되지 않은 파일의 규칙을 적용했습니다.712버전 2.1.196부터 2.1.199까지는 Claude Code가 구성 홈에서도, git 저장소 외부에서도 파일의 규칙 적용을 보류했으며 그곳에서 [`this workspace has not been trusted`](/docs/ko/errors#workspace-has-not-been-trusted) 경고를 출력했습니다. v2.1.207 이전에는 Claude Code가 대화상자를 수락하기 전에 추적되지 않은 파일의 규칙을 적용했습니다.
701 713
702<h3 id="what-runs-before-you-trust-a-folder">714<h3 id="what-runs-before-you-trust-a-folder">
703 폴더를 신뢰하기 전에 실행되는 것715 폴더를 신뢰하기 전에 실행되는 것