[Go to site: main page, start]

Skip to main content
Claude Code는 코드베이스를 이해하고 수정하는 데 도움이 되는 도구 세트에 접근할 수 있습니다. 도구 이름은 권한 규칙, subagent 도구 목록, 및 hook 매처에서 사용하는 정확한 문자열입니다. 도구를 완전히 비활성화하려면 권한 설정deny 배열에 해당 이름을 추가합니다. 사용자 정의 도구를 추가하려면 MCP 서버를 연결합니다. Claude를 재사용 가능한 프롬프트 기반 워크플로우로 확장하려면 skill을 작성합니다. 이는 새로운 도구 항목을 추가하는 대신 기존 Skill 도구를 통해 실행됩니다. Permission required 열은 작업 디렉토리 내의 경로에 대해 기본 권한 모드에서 도구가 프롬프트를 표시하는지 여부를 나타냅니다. Read, Grep, Glob을 포함한 파일 접근 도구는 아니오로 표시되지만 작업 디렉토리 및 추가 디렉토리 외부의 경로에 대해서는 여전히 프롬프트를 표시합니다. Bash는 예로 표시되지만 프롬프트 없이 읽기 전용 명령의 기본 제공 세트를 실행합니다.

권한 규칙 및 hook으로 도구 구성

대부분의 경우 Claude가 이러한 도구를 사용할 시기를 결정하며 Claude와 상호작용할 때 도구 이름을 직접 지정할 필요가 없습니다. 권한 및 기타 구성을 정의할 때 도구 이름을 직접 참조합니다: 이들 모두 동일한 규칙 형식인 ToolName(specifier)를 허용합니다. specifier는 도구에 따라 다르며, 여러 도구가 형식을 공유합니다: ExitPlanMode 또는 ShareOnboardingGuide와 같이 여기에 나열되지 않은 도구는 specifier 없이 도구 이름만 허용합니다. Edit(...) allow 규칙은 동일한 경로에 대한 읽기 접근도 부여하므로, 일치하는 Read(...) 규칙이 필요하지 않습니다. Read(...) deny 규칙은 새 파일을 만드는 것을 포함하여 동일한 경로에서 Edit 도구도 차단합니다. 편집에는 결과를 다시 읽어야 하기 때문입니다. 편집에 대한 Read deny 확인에는 Claude Code v2.1.208 이상이 필요합니다. Hook matcher 필드는 괄호로 묶인 규칙 형식이 아닌 도구 이름만 사용합니다. 매칭 규칙은 matcher 패턴을 참조합니다. 각 도구가 hook의 tool_input에 전달하는 필드 이름은 PreToolUse 입력 참조를 참조합니다.

Agent 도구 동작

Agent 도구는 별도의 context window에서 subagent를 생성합니다. Subagent는 자신의 작업을 자율적으로 처리한 다음 단일 텍스트 결과를 부모 대화에 반환합니다. 부모는 subagent의 중간 도구 호출이나 출력을 보지 못하고, 최종 결과만 봅니다. Subagent가 실행하는 턴의 수를 제한하려면 subagent 정의에서 maxTurns를 설정합니다. 동일한 Agent 도구는 fork 모드가 활성화되었을 때 forked subagent도 시작합니다. Fork는 새로 시작하는 대신 전체 부모 대화를 상속하고, 항상 백그라운드에서 실행되며, 여전히 터미널에서 권한 프롬프트를 표시합니다. 이 섹션의 나머지 부분은 명명된 subagent를 설명합니다. 명명된 subagent가 사용할 수 있는 도구는 subagent 정의toolsdisallowedTools 필드에 따라 다릅니다:
  • 필드가 설정되지 않음: subagent는 부모가 사용 가능한 모든 도구를 상속합니다.
  • tools: subagent는 나열된 도구만 가져옵니다.
  • disallowedTools: subagent는 나열된 도구를 제외한 모든 부모 도구를 가져옵니다.
  • 둘 다 설정됨: disallowedTools가 우선합니다. 둘 다에 나열된 도구는 제거됩니다.
Subagent의 tools 목록이 전혀 도구로 해석되지 않는 경우, 예를 들어 모든 항목이 철자가 잘못되었거나 subagent에서 사용할 수 없는 도구의 이름을 지정하는 경우, Agent 도구는 subagent를 시작하는 대신 해당 항목을 나열하는 오류를 반환합니다. v2.1.208 이전에는 subagent가 도구 없이 시작되었고 빈 결과나 혼란스러운 결과를 반환할 수 있었습니다. Subagent를 시작하는 것 자체는 권한을 요청하지 않습니다. Claude Code는 subagent의 자체 도구 호출을 실행될 때 권한 규칙에 대해 확인합니다. v2.1.198부터 subagent는 기본적으로 백그라운드에서 실행됩니다. Claude는 계속하기 전에 결과가 필요할 때 포그라운드에서 하나를 실행합니다.
  • 포그라운드 subagent는 각 도구 호출이 발생하는 순간 주 대화에서 보게 될 동일한 권한 프롬프트를 표시합니다.
  • 백그라운드 subagent 는 v2.1.186부터 주 세션에서 권한 프롬프트를 표시합니다. 프롬프트는 어느 subagent가 요청하는지 표시하며, Esc를 누르면 subagent를 중지하지 않고 해당 도구 호출만 거부합니다. v2.1.186 이전에는 백그라운드 subagent가 그렇지 않으면 프롬프트를 표시할 모든 도구 호출을 자동으로 거부하고 해당 도구 없이 계속 진행했습니다.
Subagent가 먼저 도달할 수 있는 것을 제한하려면 tools 필드를 좁히고, Bash를 목록에서 제외하거나, Subagent 기능 제어에서 설명한 대로 설정에서 거부 규칙을 설정합니다. 포그라운드와 백그라운드 중 선택에 대한 자세한 내용은 Subagent를 포그라운드 또는 백그라운드에서 실행을 참조합니다.

Bash 도구 동작

Bash 도구는 다음의 지속성 동작으로 각 명령을 별도의 프로세스에서 실행합니다:
  • Claude가 주 세션에서 cd를 실행할 때, 새로운 작업 디렉토리는 프로젝트 디렉토리 내에 머물러 있거나 --add-dir, /add-dir, 또는 설정의 additionalDirectories로 추가한 추가 작업 디렉토리 내에 머물러 있는 한 이후 Bash 명령으로 이월됩니다. Subagent 세션은 절대 작업 디렉토리 변경을 이월하지 않습니다.
    • cd가 해당 디렉토리 외부로 이동하면, Claude Code는 프로젝트 디렉토리로 재설정하고 도구 결과에 Shell cwd was reset to <dir>을 추가합니다.
    • 모든 Bash 명령이 프로젝트 디렉토리에서 시작하도록 이 이월을 비활성화하려면 CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1을 설정합니다.
  • 환경 변수는 지속되지 않습니다. 한 명령의 export는 다음 명령에서 사용할 수 없습니다.
  • 셸 시작 파일에 정의된 별칭 및 셸 함수를 사용할 수 있습니다. 세션 시작 시, Claude Code는 셸에 따라 ~/.zshrc, ~/.bashrc, 또는 ~/.profile을 소싱하고, 결과 별칭, 함수 및 셸 옵션을 캡처하여 모든 Bash 명령에 적용합니다.
Claude Code를 시작하기 전에 virtualenv 또는 conda 환경을 활성화합니다. Bash 명령 전체에서 환경 변수를 지속하려면 Claude Code를 시작하기 전에 CLAUDE_ENV_FILE을 셸 스크립트로 설정하거나, SessionStart hook을 사용하여 동적으로 채웁니다. 두 가지 제한이 각 명령을 제한합니다:
  • Timeout: 기본값은 2분입니다. Claude는 timeout 매개변수로 명령당 최대 10분을 요청할 수 있습니다. BASH_DEFAULT_TIMEOUT_MSBASH_MAX_TIMEOUT_MS로 기본값 및 상한을 재정의합니다.
  • 출력 길이: 기본값은 30,000자입니다. 명령이 그 이상을 생성하면, Claude Code는 전체 출력을 세션 디렉토리의 파일에 저장하고 Claude에 파일 경로와 시작 부분의 짧은 미리보기를 제공합니다. Claude는 나머지가 필요할 때 해당 파일을 읽거나 검색합니다. BASH_MAX_OUTPUT_LENGTH로 제한을 높입니다. 최대 150,000자까지 가능합니다.
dev 서버 또는 watch 빌드와 같은 장기 실행 프로세스의 경우, Claude는 run_in_background: true를 설정하여 명령을 백그라운드 작업으로 시작하고 실행되는 동안 계속 작업할 수 있습니다. /tasks로 백그라운드 작업을 나열하고 중지합니다. 비대화형 모드에서 -p 플래그를 사용하면, 백그라운드 작업은 실행의 최종 결과 직후에 종료됩니다.

Edit 도구 동작

Edit 도구는 정확한 문자열 교체를 수행합니다. old_stringnew_string을 가져와 첫 번째를 두 번째로 교체합니다. 정규식이나 fuzzy 매칭을 사용하지 않습니다. 편집이 적용되려면 세 가지 확인이 통과해야 합니다. 이들 중 어느 것이든 먼저, Read 거부 규칙과 일치하는 경로는 거부되며, 여기에 새 파일을 만드는 것도 포함됩니다. 거부는 Claude Code v2.1.208 이상이 필요합니다.
  • 편집 전 읽기: Claude는 현재 대화에서 파일을 읽었어야 하며, PARTIAL view 공지로 단축된 읽기는 계산되지 않습니다. Claude Opus 4.6, Claude Haiku 4.5 및 이전 모델은 항상 읽기를 요구합니다. 최신 모델은 읽기가 권한 프롬프트를 필요로 하지 않을 때 읽지 않은 파일을 편집할 수 있으며 Read 도구를 사용할 수 있습니다.
  • 매칭: old_string은 파일에 정확히 작성된 대로 나타나야 합니다. 공백이나 들여쓰기의 단일 문자 차이도 미스하기에 충분합니다.
  • 고유성: old_string은 정확히 한 번 나타나야 합니다. 한 번 이상 나타나면, Claude는 한 발생을 고정하기에 충분한 주변 컨텍스트가 있는 더 긴 문자열을 제공하거나, replace_all: true를 설정하여 모두 교체합니다.
Claude가 마지막으로 읽은 후 디스크에서 변경된 파일도 old_string이 현재 콘텐츠와 정확히 일치하고 명확하게 일치할 때 편집할 수 있으며 Claude Code가 프롬프트 없이 파일을 읽을 수 있습니다. 파일의 현재 콘텐츠와 일치하면 이것이 안전하게 유지되며, 결과는 파일이 다른 변경 사항을 포함하고 있음을 기록하므로 Claude는 주변 콘텐츠에 따라 다른 편집 전에 다시 읽습니다. 다른 경우, 예를 들어 오래된 old_string 또는 replace_all 없이 한 번 이상 일치하는 경우, Claude는 편집 전에 파일을 다시 읽습니다. 읽지 않은 파일과 변경된 파일의 완화된 처리는 Claude Code v2.1.208 이상이 필요합니다. 그 이전에는 Claude Code가 대화에서 읽지 않았거나 읽은 후 디스크에서 변경된 파일에 대한 모든 편집을 거부했습니다. Bash로 파일을 보는 것도 명령이 단일 파일에 대한 cat, head, tail, sed -n 'X,Yp', grep, egrep, 또는 fgrep일 때 파이프나 리다이렉트가 없으면 편집 전 읽기 요구사항을 만족합니다. 파이프된 출력과 다른 Bash 명령은 편집 전 읽기 확인에 계산되지 않습니다. 이는 편집 적격성에만 영향을 미치며, 권한에는 영향을 미치지 않습니다. Read 및 Edit 거부 규칙은 Claude Code가 cat, head, tail, sed, 및 grep과 같이 Bash에서 인식하는 파일 명령에도 적용되지만, 파일을 간접적으로 읽거나 쓰는 Python 또는 Node 스크립트와 같은 임의의 하위 프로세스에는 적용되지 않습니다. 거부 규칙에 대해 인식되는 명령 집합은 위의 편집 전 읽기 목록과 동일하지 않습니다. 예를 들어, egrepfgrep은 편집 전 읽기에 계산되지만 Read 거부 규칙에 대해 확인되지 않습니다. 모든 프로세스를 포함하는 OS 수준 적용을 위해 sandbox를 활성화합니다.

Glob 도구 동작

Glob 도구는 이름 패턴으로 파일을 찾습니다. 재귀 디렉토리 매칭을 위한 **를 포함한 표준 glob 구문을 지원합니다:
  • **/*.js는 모든 깊이의 모든 .js 파일과 일치합니다
  • src/**/*.tssrc/ 아래의 모든 .ts 파일과 일치합니다
  • *.{json,yaml}은 현재 디렉토리의 .json.yaml 파일과 일치합니다
결과는 수정 시간으로 정렬되고 100개 파일로 제한됩니다. 상한에 도달하면, Claude는 결과에서 잘림 플래그를 보고 패턴을 좁힐 수 있습니다. Glob은 기본적으로 .gitignore를 존중하지 않으므로, gitignored 파일을 추적된 파일과 함께 찾습니다. 이는 gitignored 파일을 건너뛰는 Grep과 다릅니다. Glob이 .gitignore를 존중하도록 하려면 Claude Code를 시작하기 전에 CLAUDE_CODE_GLOB_NO_IGNORE=false를 설정합니다. pattern 또는 path 값이 null 바이트를 포함하면 Claude에게 이를 제거하도록 요청하는 오류를 반환합니다.

Grep 도구 동작

Grep 도구는 파일 내용에서 패턴을 검색합니다. Glob이 이름으로 파일을 찾는 경우, Grep은 파일 내부의 라인을 찾습니다. Grep은 ripgrep을 기반으로 하며 POSIX grep이 아닌 ripgrep의 정규식 구문을 사용합니다. 정규식 메타문자를 포함하는 패턴은 이스케이프가 필요합니다. 예를 들어, Go 코드에서 interface{}를 찾으려면 interface\{\} 패턴이 필요합니다. ripgrep이 거부하는 패턴, glob 또는 파일 유형은 Claude가 입력을 수정하고 다시 검색할 수 있도록 ripgrep의 진단을 포함하는 오류를 반환합니다. v2.1.208 이전에는 Claude Code가 검색된 텍스트가 대상 파일에 존재하더라도 거부된 입력을 오류 대신 No files found로 보고했습니다. 세 가지 출력 모드는 반환되는 내용을 제어합니다:
  • files_with_matches: 파일 경로만, 라인 내용 없음. 이것이 기본값입니다.
  • content: 파일 및 라인 번호가 있는 일치하는 라인.
  • count: 파일당 일치 수, 그 다음 모든 일치하는 파일 전체의 합계. 합계는 도구의 head_limit 또는 offset 매개변수가 나열된 파일별 항목을 자르더라도 모든 일치를 포함합니다. v2.1.208 이전에는 합계가 나열된 항목만 합산했습니다.
Claude는 **/*.tsx와 같은 glob 매개변수로 파일별로 결과를 범위 지정하거나, py 또는 rust와 같은 type 매개변수로 언어별로 범위 지정할 수 있습니다. 기본적으로 패턴은 단일 라인 내에서 일치합니다. Claude는 multiline: true를 설정하여 라인 경계를 넘어 일치시킬 수 있습니다. Grep은 .gitignore를 존중하므로 gitignored 파일은 건너뜁니다. gitignored 파일을 검색하려면 Claude는 경로를 직접 전달합니다.

LSP 도구 동작

LSP 도구는 실행 중인 언어 서버에서 Claude에 코드 인텔리전스를 제공합니다. 각 파일 편집 후 자동으로 타입 오류 및 경고를 보고하므로 Claude는 별도의 빌드 단계 없이 문제를 수정할 수 있습니다. Claude는 또한 코드를 탐색하기 위해 직접 호출할 수 있습니다:
  • 기호의 정의로 이동
  • 기호에 대한 모든 참조 찾기
  • 위치의 타입 정보 가져오기
  • 파일의 기호 나열
  • 워크스페이스 전체에서 기호 이름으로 검색
  • 인터페이스의 구현 찾기
  • 호출 계층 추적
이 도구는 언어에 대한 코드 인텔리전스 플러그인을 설치할 때까지 비활성 상태입니다. 플러그인은 언어 서버 구성을 번들로 제공하며, 서버 바이너리는 별도로 설치합니다.

Monitor 도구

Monitor 도구를 사용하면 Claude는 백그라운드에서 무언가를 감시하고 대화를 일시 중지하지 않고 변경될 때 반응할 수 있습니다. Claude에 다음을 요청합니다:
  • 로그 파일을 추적하고 오류가 나타나면 플래그 지정
  • PR 또는 CI 작업을 폴링하고 상태가 변경되면 보고
  • 파일 변경을 위해 디렉토리 감시
  • 지정한 장기 실행 스크립트의 출력 추적
  • WebSocket 피드에 연결하고 각 메시지가 도착할 때 보고
대부분의 감시의 경우, Claude는 작은 스크립트를 작성하고, 백그라운드에서 실행하며, 각 출력 라인이 도착할 때 수신합니다. 이미 이벤트를 푸시하는 서버의 경우, Claude는 스크립트를 실행하는 대신 WebSocket을 열 수 있습니다. 동일한 세션에서 계속 작업하고 Claude는 이벤트가 발생할 때 개입합니다. Claude에 취소하도록 요청하거나 세션을 종료하여 모니터를 중지합니다. Monitor가 명령을 실행할 때, Bash와 동일한 권한 규칙을 사용하므로, Bash에 대해 설정한 allowdeny 패턴이 여기에도 적용됩니다. WebSocket 소스는 자체 승인 프롬프트를 가집니다. 이 도구는 Amazon Bedrock, Google Cloud의 Agent Platform 또는 Microsoft Foundry에서 사용할 수 없습니다. DISABLE_TELEMETRY 또는 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC이 설정되었을 때도 사용할 수 없습니다. 플러그인은 Claude에 시작하도록 요청하는 대신 플러그인이 활성화될 때 자동으로 시작되는 모니터를 선언할 수 있습니다. 플러그인 모니터를 참조합니다.

WebSocket 소스

WebSocket 소스는 Claude Code v2.1.195 이상이 필요합니다.
서버가 이미 WebSocket을 통해 이벤트를 푸시하는 경우, Claude는 폴링 스크립트를 작성하는 대신 직접 연결할 수 있습니다. 각 종류의 소켓 활동은 이벤트가 되거나 감시를 종료합니다:
  • 텍스트 메시지: 각각이 하나의 이벤트가 되며, 메시지가 여러 줄에 걸쳐 있어도 마찬가지입니다.
  • 바이너리 메시지: 통과하지 않습니다. Claude는 [binary frame, 512 bytes]와 같은 자리 표시자 라인을 수신합니다.
  • 1 MiB보다 큰 메시지: 감시가 종료되므로, 존재하는 경우 필터링된 피드를 구독합니다.
  • 소켓 종료: 감시가 종료되고 Claude는 종료 코드를 수신합니다.
WebSocket 감시는 command 대신 ws 입력을 사용하며, 단일 Monitor 호출은 둘을 결합할 수 없습니다. ws 입력에는 두 개의 필드가 있습니다: timeout_mspersistent 입력은 명령에 대해 동일하게 작동합니다: persistent가 설정되지 않으면 감시가 마감일에 종료되고, TaskStop은 조기에 취소합니다. WebSocket을 열면 승인을 위한 프롬프트가 표시되며, 프롬프트는 동일한 호스트에 대해 향후 프롬프트를 건너뛸 수 있는 옵션을 제공하지 않습니다. Claude Code는 개인, 링크-로컬 또는 클라우드 메타데이터 주소를 가리키는 URL을 거부하며, 이는 해당 주소로 확인되는 호스트 이름을 포함합니다. 또한 sandbox.network.deniedDomains의 호스트를 거부하고, 관리 설정에서 allowManagedDomainsOnly가 설정된 경우, 관리 허용 목록 외부의 모든 호스트를 거부합니다.

NotebookEdit 도구 동작

NotebookEdit은 cell_id로 대상 셀을 지정하여 Jupyter 노트북을 한 번에 한 셀씩 수정합니다. 일반 파일에서 Edit처럼 노트북 전체에서 문자열 교체를 수행하지 않습니다. 세 가지 편집 모드는 대상 셀에 발생하는 일을 제어합니다:
  • replace: 셀의 소스를 덮어씁니다. 이것이 기본값입니다.
  • insert: 대상 후에 새 셀을 추가합니다. cell_id가 없으면, 새 셀은 노트북의 시작 부분으로 이동합니다. cell_typecode 또는 markdown으로 설정해야 합니다.
  • delete: 대상 셀을 제거합니다.
권한 규칙은 Edit(...) 경로 형식을 사용합니다. Edit(notebooks/**)와 같은 규칙은 해당 디렉토리의 파일에 대한 NotebookEdit 호출을 포함합니다.

PowerShell 도구

PowerShell 도구를 사용하면 Claude는 PowerShell 명령을 기본적으로 실행할 수 있습니다. Windows에서는 이것이 Git Bash를 통해 라우팅하는 대신 PowerShell에서 명령을 실행한다는 의미입니다. 도구가 사용 가능해지는 방식은 플랫폼에 따라 다릅니다:
  • Git Bash가 없는 Windows: 도구가 자동으로 활성화됩니다.
  • Git Bash가 설치된 Windows: 도구가 점진적으로 출시되고 있습니다.
  • Linux, macOS 및 WSL: 도구가 옵트인입니다.

PowerShell 도구 활성화

환경 또는 settings.json에서 CLAUDE_CODE_USE_POWERSHELL_TOOL=1을 설정합니다:
Windows에서는 변수를 0으로 설정하여 출시를 거부할 수 있습니다. Linux, macOS 및 WSL에서는 도구에 PowerShell 7 이상이 필요합니다: pwsh를 설치하고 PATH에 있는지 확인합니다. Windows에서 Claude Code는 PowerShell 7+의 경우 pwsh.exe를 자동 감지하며 PowerShell 5.1의 경우 powershell.exe로 폴백합니다. 도구가 활성화되면 Claude는 PowerShell을 기본 셸로 취급합니다. Bash 도구는 Git Bash가 설치되어 있을 때 POSIX 스크립트에 사용할 수 있습니다. Claude Code는 프로세스 범위에서만 -ExecutionPolicy Bypass를 사용하여 PowerShell을 생성하므로 .ps1 스크립트 및 모듈 가져오기는 머신의 정책을 변경하지 않고도 기본 Windows 설치에서 작동합니다. 프로세스 범위 바이패스는 그룹 정책 MachinePolicy 또는 UserPolicy를 재정의하지 않으므로 엔터프라이즈 정책이 여전히 적용됩니다. 머신의 유효한 실행 정책을 대신 존중하려면 CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1을 설정합니다.

설정, hooks 및 skills의 shell 선택

세 가지 추가 설정이 PowerShell이 사용되는 위치를 제어합니다:
  • settings.json"defaultShell": "powershell": 대화형 ! 명령을 PowerShell을 통해 라우팅합니다. PowerShell 도구가 활성화되어야 합니다.
  • 개별 command hooks"shell": "powershell": 해당 hook을 PowerShell에서 실행합니다. Hooks는 PowerShell을 직접 생성하므로 CLAUDE_CODE_USE_POWERSHELL_TOOL에 관계없이 작동합니다.
  • skill frontmattershell: powershell: !`command` 블록을 PowerShell에서 실행합니다. PowerShell 도구가 활성화되어야 합니다.
Bash 도구 섹션에서 설명한 동일한 주 세션 작업 디렉토리 재설정 동작이 PowerShell 명령에 적용되며, CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR 환경 변수도 포함됩니다. v2.1.196부터 PowerShell 도구는 Bash 도구의 검색 및 diff 종료 코드 처리와 일치합니다. grep, egrep, fgrepgit grep의 종료 코드 1은 일치하는 항목이 없음을 의미하고, git diff의 종료 코드 1은 차이가 존재함을 의미하므로 이러한 결과는 Claude에 명령 실패로 보고되지 않습니다.

미리보기 제한사항

PowerShell 도구는 미리보기 중에 다음과 같은 알려진 제한사항이 있습니다:
  • PowerShell 프로필이 로드되지 않습니다
  • Windows에서는 sandboxing이 지원되지 않습니다

Read 도구 동작

Read 도구는 파일 경로를 가져와 라인 번호가 있는 내용을 반환합니다. Claude는 항상 절대 경로를 전달하도록 지시됩니다. 기본적으로 Read는 시작 부분에서 파일을 반환합니다. 전체 파일 읽기가 토큰 제한을 초과하면, Read는 첫 번째 페이지를 PARTIAL view 공지와 함께 반환하며, 이는 Claude가 받은 파일의 양과 offsetlimit으로 더 많이 읽는 방법을 알려줍니다. 명시적 offset 또는 limit을 전달하고 여전히 토큰 제한을 초과하는 읽기는 오류를 반환합니다. 명시적 limit이 있는 읽기는 선택된 라인이 토큰 제한이 맞출 수 있는 것을 초과하자마자 중지되고 나머지 범위를 로드하지 않고 오류를 반환합니다. 오류는 Claude에게 더 작은 limit을 사용하거나, 단일 라인이 그렇게 클 때 Grep 대신 특정 콘텐츠를 검색하도록 지시합니다. v2.1.208 이전에는 Claude Code가 전체 범위를 메모리에 로드한 후 거부했으므로, 매우 긴 단일 라인이 있는 파일은 메모리를 소진할 수 있었습니다. 빈 파일을 읽으면 파일이 존재하지만 내용이 비어 있다는 공지가 반환되고, 마지막 라인을 지나는 offset은 파일의 라인 수를 제공하는 공지를 반환합니다. v2.1.208 이전에는 빈 파일을 읽으면 과거 끝 공지가 반환되었습니다. Read는 일반 텍스트 이상의 여러 파일 타입을 처리합니다:
  • 이미지: PNG, JPG 및 기타 이미지 형식은 원본 바이트가 아닌 Claude가 볼 수 있는 시각적 콘텐츠로 반환됩니다. Claude Code는 모델의 이미지 크기 제한에 맞도록 큰 이미지를 크기 조정하고 재압축하므로, Claude는 큰 스크린샷의 축소된 버전을 볼 수 있습니다. v2.1.196부터, 크기 조정 후에도 여전히 500KB보다 큰 이미지는 픽셀 치수는 변경하지 않고 품질을 낮춘 JPEG로 다시 인코딩됩니다. Claude가 큰 이미지에서 세밀한 픽셀 수준의 세부 정보를 놓치면, 예를 들어 ImageMagick을 통해 Bash로 관심 영역을 먼저 자르도록 요청합니다.
  • PDF: Claude는 짧은 .pdf 파일을 전체적으로 읽습니다. 10페이지보다 긴 PDF의 경우, "1-5"와 같은 pages 매개변수로 범위에서 읽으며, 한 번에 최대 20페이지까지 읽습니다.
  • Jupyter 노트북: .ipynb 파일은 코드, markdown 및 시각화를 포함한 모든 셀과 해당 출력을 반환합니다.
Read는 파일만 읽으며, 디렉토리는 읽지 않습니다. Claude는 Bash 도구를 통해 ls를 사용하여 디렉토리 내용을 나열합니다.

WebFetch 도구 동작

WebFetch는 URL과 추출할 내용을 설명하는 프롬프트를 가져옵니다. 페이지를 가져오고, 서버가 HTML을 반환할 때 응답을 Markdown으로 변환하며, 작고 빠른 모델을 사용하여 콘텐츠에 대해 프롬프트를 실행합니다. 대부분의 가져오기의 경우, Claude는 원본 페이지가 아닌 해당 모델의 답변을 받습니다. 변환 단계는 구성할 수 없습니다. 이는 WebFetch를 설계상 손실이 있게 만듭니다. 추출 프롬프트는 Claude에 도달하는 내용을 결정하므로, 페이지가 무언가를 언급하지 않는다는 결과는 프롬프트가 그것을 묻지 않았다는 의미일 수 있습니다. Claude에 더 구체적인 프롬프트로 다시 가져오도록 요청하거나, 처리되지 않은 페이지의 경우 Bash를 통해 curl을 사용합니다. 몇 가지 동작이 Claude가 받는 응답을 형성합니다:
  • HTTP URL은 자동으로 HTTPS로 업그레이드됩니다.
  • 큰 페이지는 처리 전에 고정 문자 제한으로 잘립니다.
  • 응답은 15분 동안 캐시되므로, 동일한 URL의 반복 가져오기는 빠르게 반환됩니다.
  • URL이 다른 호스트로 리다이렉트되면, WebFetch는 원본 URL과 리다이렉트 대상의 이름을 지정하는 텍스트 결과를 반환하고 따라가지 않습니다. Claude는 두 번째 WebFetch 호출로 새 URL을 가져옵니다.
기본 및 acceptEdits 권한 모드에서 WebFetch는 새 도메인에 처음 도달할 때 프롬프트합니다. 단, 프롬프트 없이 가져오는 미리 승인된 설명서 도메인의 기본 제공 집합이 있습니다. 프롬프트 없이 미리 도메인을 허용하려면 WebFetch(domain:example.com)과 같은 권한 규칙을 추가합니다. autobypassPermissions 권한 모드는 프롬프트를 완전히 건너뜁니다. deny, ask 또는 allow의 명시적 WebFetch(domain:...) 규칙은 미리 승인된 집합보다 우선하므로, 미리 승인된 도메인을 차단하거나 프롬프트를 요구할 수 있습니다. WebFetch는 Claude-User로 시작하는 User-Agent 헤더와 콘텐츠 협상을 지원하는 서버가 Markdown을 직접 반환할 수 있도록 HTML보다 Markdown을 선호하는 Accept 헤더를 설정합니다. Sandbox 네트워크 규칙은 별도로 구성되므로, sandboxed 프로세스가 도달하기를 원하는 도메인은 여전히 명시적 sandbox 권한 규칙이 필요합니다.

WebSearch 도구 동작

WebSearch는 Anthropic의 web search 백엔드에 대해 쿼리를 실행하고 결과 제목과 URL을 반환합니다. 결과 페이지를 가져오지 않습니다. Claude가 검색 결과에서 찾은 페이지를 읽으려면 WebFetch로 후속 조치합니다. 이 도구는 호출당 최대 8개의 백엔드 검색을 발행하여 반환 전에 검색을 내부적으로 개선할 수 있습니다. Claude는 allowed_domains로 특정 호스트만 포함하거나 blocked_domains로 제외하여 결과를 범위 지정할 수 있습니다. 두 목록은 단일 호출에서 결합할 수 없습니다. 검색 백엔드는 구성할 수 없습니다. 다른 제공자로 검색하려면 검색 도구를 노출하는 MCP 서버를 추가합니다. WebSearch 권한 규칙은 specifier를 사용하지 않습니다. allow 또는 deny의 단순 WebSearch 항목이 유일한 형식입니다.
WebSearch는 Claude API, AWS의 Claude Platform 및 Microsoft Foundry에서 사용 가능합니다. Google Cloud의 Agent Platform에서는 Opus, Sonnet 및 Haiku를 포함한 Claude 4 이상 모델과 함께 작동합니다. Amazon Bedrock은 서버 측 web search 도구를 노출하지 않습니다.

Write 도구 동작

Write 도구는 제공된 전체 콘텐츠로 새 파일을 생성하거나 기존 파일을 덮어씁니다. 추가하거나 병합하지 않습니다. 대상 경로가 이미 존재하면, Claude는 현재 대화에서 해당 파일을 최소한 한 번 읽었어야 합니다. 읽지 않은 기존 파일에 대한 Write는 오류로 실패합니다. 이 제약은 새 파일에는 적용되지 않습니다. Bash로 파일을 보는 것도 Edit 도구 동작에서 설명한 대로 이 요구사항을 만족합니다. 기존 파일에 대한 부분 변경의 경우, Claude는 Write 대신 Edit을 사용합니다.

사용 가능한 도구 확인

정확한 도구 세트는 제공자, 플랫폼 및 설정에 따라 다릅니다. 실행 중인 세션에서 로드된 항목을 확인하려면 Claude에 직접 문의합니다:
Claude는 대화형 요약을 제공합니다. 정확한 MCP 도구 이름의 경우 /mcp를 실행합니다.
advisor tool은 Claude Code가 구현하는 도구가 아니라 API가 실행하는 server tool입니다. 권한 규칙이나 hook 매처에서 참조할 수 있는 이름이 없습니다.

참고 항목

  • MCP 서버: 외부 서버를 연결하여 사용자 정의 도구 추가
  • 권한: 권한 시스템, 규칙 구문, 도구별 패턴
  • Subagents: subagent에 대한 도구 접근 구성
  • Hooks: 도구 실행 전후에 사용자 정의 명령 실행