Rubric Labs
Claude Code v2.1.113에 추가된 sandbox.network.deniedDomains 설정으로, allowedDomains에 와일드카드를 열어둔 상태에서도 특정 도메인만 골라서 차단할 수 있어요. 에이전트가 외부 API에 실수로 요청 보내는 걸 막고 싶을 때 설정 파일 한 줄로 해결돼요. 핵심 동작: deniedDomains에 도메인 추가.
← Tips
보안/안정성· easy

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가 의미 있어요.

이 설정 하나로 허용 범위는 그대로 두면서 문제가 되는 도메인만 정밀하게 잘라낼 수 있게 돼요.

참고 출처