Claude Code 샌드박스에서 특정 도메인 차단하기
Claude Code v2.1.113에 추가된 sandbox.network.deniedDomains 설정으로, allowedDomains에 와일드카드를 열어둔 상태에서도 특정 도메인만 골라서 차단할 수 있어요. 에이전트가 외부 API에 실수로 요청 보내는 걸 막고 싶을 때 설정 파일 한 줄로 해결돼요.
에이전트가 코드 실행 중에 외부 네트워크에 나가는 걸 완전히 막기는 애매할 때가 있어요. allowedDomains에 *.internal.company.com 같은 와일드카드를 열어두면 내부 서비스는 잘 쓸 수 있는데, 그러다 보면 예상 못한 도메인까지 허용되는 경우가 생기더라고요. 특히 서드파티 SDK가 몰래 텔레메트리 서버에 핑 보내는 상황이라면 진짜 곤란해요.
v2.1.113부터 sandbox.network.deniedDomains 설정이 생겼어요. 와일드카드 허용 규칙이 있어도 이 목록에 들어간 도메인은 무조건 막혀요. allowedDomains보다 deniedDomains가 우선하는 구조라서, 허용 범위를 건드리지 않고 특정 도메인만 조용히 잘라낼 수 있어요.
준비물
- Claude Code v2.1.113 이상
- 프로젝트 루트 또는 홈 디렉토리의
claude.json설정 파일 - 샌드박스 모드가 활성화된 환경 (macOS 기준 기본 활성)
스텝
1. 현재 설정 파일 위치 확인
프로젝트 단위로 적용하려면 프로젝트 루트의 .claude/claude.json을 쓰고, 전역으로 막으려면 ~/.claude/claude.json을 열면 돼요. 프로젝트 설정이 전역 설정보다 우선 적용되니까, 팀 전체에 강제하고 싶다면 전역 파일을 건드리는 게 맞아요.
# 프로젝트 설정 파일 열기
mkdir -p .claude && open .claude/claude.json
# 또는 전역 설정
open ~/.claude/claude.json
2. deniedDomains 추가
기존에 allowedDomains 와일드카드가 있는 상태에서 deniedDomains만 추가하면 돼요. 아래는 내부 도메인 전체를 열어두되 특정 텔레메트리 엔드포인트만 차단하는 예시예요.
{
"sandbox": {
"network": {
"allowedDomains": ["*.internal.example.com"],
"deniedDomains": [
"telemetry.somedependency.io",
"analytics.anotherlib.com",
"sentry.io"
]
}
}
}
deniedDomains에는 와일드카드도 쓸 수 있어요. *.tracking.io처럼 서브도메인 전체를 한 줄로 막을 수 있어요.
3. Claude Code 재시작
설정 변경은 재시작 후 적용돼요. 실행 중인 세션이 있으면 종료하고 다시 띄우면 됩니다.
# 실행 중인 Claude Code 프로세스 종료 후 재시작
claude
확인 방법
차단이 제대로 됐는지 보려면 에이전트한테 직접 요청해보면 돼요.
# Claude Code 세션 안에서 실행
curl -s https://sentry.io/api/0/
차단된 도메인이면 연결 자체가 거부되고 curl: (6) Could not resolve host 또는 네트워크 차단 관련 오류가 나와요. 허용된 도메인은 정상 응답이 오고요.
응용
개발 환경과 CI 환경을 분리해서 관리하고 싶다면, 프로젝트 루트에 .claude/claude.json을 두고 거기서만 deniedDomains를 엄격하게 잠그는 방식이 깔끔해요. 로컬에서는 전역 설정을 느슨하게 두고, CI에서는 레포 설정이 자동으로 적용되니까 별도 스크립트 없이도 환경별로 다르게 굴릴 수 있어요.
트러블슈팅
설정이 적용 안 되는 것 같을 때. JSON 파일 경로가 .claude/claude.json인지 확인해요. claude.json을 프로젝트 루트에 바로 두면 인식 못해요.
와일드카드가 안 먹힐 때. *.example.com은 서브도메인만 잡아요. example.com 자체를 막으려면 별도로 추가해야 해요.
샌드박스가 비활성화된 환경. 리눅스에서는 샌드박스가 기본 비활성일 수 있어요. sandbox.enabled: true를 명시적으로 설정해줘야 deniedDomains가 의미 있어요.
이 설정 하나로 허용 범위는 그대로 두면서 문제가 되는 도메인만 정밀하게 잘라낼 수 있게 돼요.