2026년 Claude Code 터미널 타임아웃 줄이기: Clash·Mihomo로 Anthropic API와 의존 도메인 분할 규칙

왜 “브라우저는 되는데 터미널만” 깨질까

2026년 현재 Claude Code 같은 터미널 기반 코딩 에이전트는 편집기 안의 채팅과 겉보기 비슷해 보여도, 네트워크 스택은 훨씬 CLI 친화적 직접 연결 쪽에 가깝습니다. macOS나 Linux 터미널에서 돌아가는 프로세스는 시스템 프록시를 자동으로 물려 받지 않는 경우가 많고, HTTP(S)_PROXY가 비어 있으면 Clash에 아무리 화려한 분할 규칙이 있어도 패킷이 그냥 나갑니다. 반대로 환경 변수는 맞는데 DNS가 Clash 바깥에서 먼저 해석되면 DOMAIN-SUFFIX 단계가 건너뛰어져, 로그에는 엉뚱한 IP-CIDR 매칭만 남기도 합니다.

또 한 축은 Anthropic API 자체보다 의존 도메인입니다. CLI 도구는 첫 실행과 업데이트에서 registry.npmjs.orggithub.com 계열을 두드리고, 텔레메트리·기능 플래그·CDN은 제품 버전에 따라 anthropic.com 밖의 호스트가 섞일 수 있습니다. 한 호스트만 느린 노드로 새거나 DIRECT에 묶여 있으면 증상은 “모델 호출만 타임아웃”처럼 보입니다. 그래서 이 글은 벤더 문서에 나온 API 패턴을 기준점으로 삼되, 최종 확정은 항상 연결 로그에 두는 실측 관점으로 씁니다.

웹 클라이언트 중심 정리는 ChatGPT·Claude 분할 가이드에 모아 두었고, 편집기 일체형 트래픽은 Cursor IDE 분할 가이드가 담당합니다. Claude Code는 그 사이에서 터미널·서브프로세스·CI 스크립트에 가깝기 때문에, MCP나 패키지 설치까지 묶어 보려면 MCP 분할 가이드와도 접점이 있습니다. 상용 서비스 약관·회사 보안 정책을 위반하는 우회는 다루지 않습니다.

호스트 묶음: API·웹·도구 체인

실무 착수점으로 많이 쓰는 축은 다음과 같습니다. 첫째, 공개 문서와 일반적인 클라이언트 동작에서 핵심은 api.anthropic.comanthropic.com 접미사 계열입니다. 둘째, 브라우저 로그인·결제·콘솔 워크플로에는 claude.ai가 함께 나올 수 있어, “터미널만”이 아니라 전체 계정 흐름을 점검할 때는 한 세트로 보는 편이 안전합니다. 셋째, 패키지·바이너리는 registry.npmjs.org·npmjs.org·github.com·objects.githubusercontent.com 같은 레지스트리·릴리스 CDN이 자주 등장합니다. 넷째, 제품이 붙이는 측정·설정 동기화 호스트는 시기별로 달라질 수 있으니, 한 번 성공한 세션 직후 로그를 캡처해 화이트리스트를 갱신하는 습관이 중요합니다.

측정·CDN은 가정보다 넓습니다: DOMAIN-KEYWORD,anthropic 같은 과한 키워드는 나중에 디버깅 지옥을 부릅니다. 가능하면 DOMAIN-SUFFIX,anthropic.com처럼 접미사를 쓰고, 로그에 뜬 예외 호스트만 DOMAIN 한 줄씩 추가하세요.

프록시 그룹 설계: API 레인과 도구 체인 레인

가장 단순한 모델은 ANTHROPIC_API 하나에 API 트래픽을 몰아넣는 것입니다. 그러나 다운로드가 잦은 환경에서는 TOOLCHAIN(npm·GitHub)을 분리해 대역이 넉넉한 노드에 붙이고, 스트리밍에 민감한 ANTHROPIC_API에는 지연 좋은 노드만 넣는 편이 낫습니다. url-test의 프로브 URL을 API 호스트에 맞추면 그룹별 건강 상태가 체감과 더 잘 맞습니다. 그룹 이름은 구독 YAML에 실제 존재해야 하며, 남의 프로필에서 복사한 이모지 라벨을 그대로 쓰다 참조 오류가 나는 경우가 흔합니다.

규칙 튜닝의 기본기는 규칙 분할 가이드와 같습니다. 첫 일치 원칙을 머리에 두고, GEOIP,KR,DIRECT나 거대 RULE-SETDOMAIN-SUFFIX,anthropic.com보다 위에 있으면 의도가 무너집니다. 원격 규칙 세트가 벤더 도메인을 다른 정책으로 덮어쓰는 경우에는, 로컬 커스텀 줄을 더 위로 올리거나 신뢰할 수 있는 세트만 쓰는 선택이 필요합니다.

YAML 스케치: 규칙만 발췌

아래는 개념 예시입니다. proxies 항목은 생략했으니 자기 구독에 맞게 채우고, 실제 로그에 보인 호스트를 덧붙이세요.

YAMLproxy-groups:
  - name: "ANTHROPIC_API"
    type: url-test
    url: "https://api.anthropic.com"
    interval: 120
    tolerance: 40
    proxies:
      - DIRECT
      # ... 저지연 노드 ...

  - name: "TOOLCHAIN"
    type: select
    proxies:
      - DIRECT
      # ... 안정적인 해외 회선 ...

rules:
  - DOMAIN,api.anthropic.com,ANTHROPIC_API
  - DOMAIN-SUFFIX,anthropic.com,ANTHROPIC_API
  - DOMAIN-SUFFIX,claude.ai,ANTHROPIC_API
  - DOMAIN-SUFFIX,npmjs.org,TOOLCHAIN
  - DOMAIN-SUFFIX,github.com,TOOLCHAIN
  - DOMAIN-SUFFIX,githubusercontent.com,TOOLCHAIN
  # ... GEOIP·MATCH 등 기존 프로필 순서 ...

ANTHROPIC_API를 과하게 좁히고 싶다면 DOMAIN,api.anthropic.com만 먼저 두고 나머지 anthropic.com 트래픽은 별도 그룹으로 빼는 것도 방법입니다. 인증·웹 자산이 API와 다른 노드를 원하면 라우팅 실험이 쉬워집니다. 반대로 운영 단순화가 우선이면 접미사 한 줄로 묶되, 로그로 부작용을 감시하세요.

터미널 프록시 맞추기: 환경 변수 vs TUN

많은 개발자가 시스템 프록시만 켜 두고 터미널에서 실패하는 이유는, 앞서 말한 대로 CLI가 그 설정을 읽지 않기 때문입니다. Clash Verge 등 클라이언트가 제공하는 터미널용 환경 변수 주입을 쓰거나, 혼합 포트(예: 7890)에 맞춰 셸 프로필에 export HTTPS_PROXY=http://127.0.0.1:7890 같은 줄을 넣습니다. NO_PROXY에 사내망 대역을 빼 두는 것도 잊지 마세요.

환경 변수만으로 빈틈이 남으면 TUN 모드가 다음 단계입니다. TUN은 애플리케이션이 프록시를 몰라도 커널 경로에서 잡아 오므로, 도메인 규칙 + DNS가 함께 맞을 때 재현성이 좋아집니다. 브라우저만 골라 프록시를 쓰고 싶다면 브라우저 한정 시스템 프록시 가이드도 참고하되, 터미널 에이전트까지 안정시키려면 결국 TUN이나 명시적 프록시 둘 중 하나는 필요합니다.

DNSenhanced-mode: fake-ip에서 특히 중요합니다. 해석이 Clash 밖에서 끝나면 IP 기반 규칙만 남고, 사용자는 “도메인 규칙을 썼는데 안 먹는다”고 느낍니다. 캐시를 비우고 동일 재현을 여러 번 돌리며, dig나 클라이언트 내장 DNS 화면으로 경로를 교차 확인하세요.

npm·GitHub가 느릴 때: 레지스트리 CDN 분할

Claude Code 바이너리나 플러그인이 ETIMEDOUT로 멈추는데 API 호스트는 멀쩡할 수 있습니다. 이때는 npm 레지스트리·tarball CDN 분할 글에서 다룬 패턴—메타데이터는 되는데 객체 스토리지만 다른 정책으로 간다든지—이 그대로 들어맞습니다. TOOLCHAIN 그룹을 만들어 둔 이유가 바로 이 분기입니다.

현장 점검 순서

  1. Clash 로그에서 api.anthropic.com 요청이 실제로 어느 그룹으로 나갔는지 확인합니다. 기대와 다르면 규칙 순서부터 고칩니다.
  2. 같은 노드에서 터미널 curl -v https://api.anthropic.comTLS 핸드셰이크가 중간 검사로 바뀌지 않았는지 봅니다.
  3. npm viewgh 설치 경로 등으로 TOOLCHAIN 호스트가 병목인지 분리합니다. 필요 시 일시적으로 글로벌 프록시와 비교 실험합니다.
  4. 환경 변수·TUN·DNS 세 가지 중 무엇을 바꿨을 때 증상이 같이 움직이는지 표로 메모해, 원인 후보를 한 번에 줄입니다.

주의: 출처 불명 rule-set은 악성 라우팅이나 잘못된 지오IP 매핑을 실어 올 수 있습니다. 개발 기기라도 검증된 구독과 로컬 화이트리스트를 우선하세요.

자주 묻는 질문

Q. API 키는 문제없는데 응답만 끊깁니다. A. 스트리밍 구간에서 노드가 불안정하면 HTTP 오류 없이 멈춘 것처럼 보입니다. ANTHROPIC_APIurl-test 간격·tolerance를 보수적으로 잡고, 기업망에서는 HTTP/2 중간 검사 여부를 함께 봅니다.

Q. VS Code 확장으로 Claude를 쓸 때와 규칙이 충돌합니다. A. 확장 트래픽은 편집기용 호스트에 붙고, 터미널 CLI는 본문 축에 붙습니다. 동일 노드를 공유하되 규칙 섹션을 파일 단위로 나누어 관리하면 실험이 쉽습니다.

마무리

2026년 이후로도 AI 프로그래밍 에이전트는 터미널과 IDE를 오가며 같은 Anthropic API를 공유하지만, 네트워크 경로는 겹치지 않습니다. Clash·Mihomo의 힘은 패턴을 세분화할 수 있다는 점인데, 터미널 프록시분할 규칙·DNS를 동시에 맞추지 않으면 그 표현력을 쓰지 못한 채 “간헐적 타임아웃”에 머무르게 됩니다.

반면 일부 상용 VPN이나 단일 글로벌 토글형 클라이언트는 호스트 단위 튜닝이 거의 불가능하고, 레지스트리와 모델 API를 한 회선에 억지로 묶다 보면 새는 트래픽을 추적하기도 어렵습니다. ClashSource 쪽은 구독·프로필 편집·로그 확인 흐름이 개발자 워크플로에 맞게 정리되어 있어, 본문에서 설명한 ANTHROPIC_API·TOOLCHAIN 패턴을 그대로 이식하기 수월합니다. 문서와 설치 절차는 문서 허브를 참고하시고, 동일한 분할 실험을 시작하려면 ClashSource 클라이언트를 무료로 내려받아 프로필에 규칙 블록만 맞춰 보시길 권합니다. 터미널의 Claude Code가 API·패키지·CDN을 한 번에 통과할 때, 비로소 에이전트 루프가 끊기지 않고 돌아갑니다.