터미널에서 Claude Code를 실행했는데 로그인에 실패하거나 요청이 시간 초과된다면, 브라우저에서는 프록시가 작동하더라도 터미널 프로세스는 별도의 네트워크 설정을 사용하고 있을 수 있습니다. Clash의 시스템 프록시만 켜는 것으로는 모든 터미널 앱의 연결이 보장되지 않습니다. 이 글에서는 Clash의 로컬 포트 확인부터 Claude Code에 프록시 환경 변수를 적용하는 방법, 도메인 분기 규칙 점검, 연결 오류 진단까지 차례로 살펴봅니다.

Clash의 프록시 포트와 실행 상태 확인

먼저 Clash가 실행 중이고 사용할 프록시 노드가 선택되어 있는지 확인하세요. Clash Verge, Clash Verge Rev, Mihomo 기반 클라이언트에서는 설정에 따라 포트 번호가 달라질 수 있으므로, 설정 화면에서 혼합 포트(Mixed Port) 또는 HTTP 프록시 포트를 확인해야 합니다. 혼합 포트는 일반적으로 HTTP와 SOCKS5 연결을 모두 받습니다. 아래 예제의 7890은 흔히 쓰이는 값일 뿐, 실제 환경에서는 Clash 화면에 표시된 포트를 사용하세요.

브라우저에서 사이트가 열리는지 확인하는 것만으로는 터미널 프록시가 정상이라고 단정할 수 없습니다. 터미널에서 로컬 포트에 연결되는지 먼저 확인하고, 이어서 실제 HTTPS 요청을 보내 보세요.

프록시 포트 연결 테스트
curl -I --proxy http://127.0.0.1:7890 https://api.anthropic.com

이 테스트에서 연결 거부가 나오면 Claude Code보다 먼저 포트 설정을 점검해야 합니다. Clash가 다른 포트를 사용하거나, 프록시 수신 주소가 로컬 연결을 허용하지 않을 수 있습니다. 반대로 HTTP 응답 헤더가 반환되면 로컬 포트와 HTTPS 터널은 적어도 통신하고 있는 것입니다. 인증이 필요 없는 요청에서 401이나 다른 HTTP 상태 코드가 반환되는 것은 네트워크 연결 자체가 실패했다는 뜻과 다릅니다.

터미널 프록시를 진단할 때는 우선 127.0.0.1을 사용하세요. Clash가 같은 컴퓨터에서 실행 중이면 LAN 주소를 사용할 이유가 없으며, 로컬 바인딩은 다른 기기의 불필요한 접근도 줄여 줍니다.

터미널에 프록시 환경 변수 적용

Clash의 시스템 프록시 설정은 일부 그래픽 앱에만 적용될 수 있습니다. Claude Code를 실행하는 터미널 세션에 HTTP_PROXY와 HTTPS_PROXY를 설정하면, 해당 프로세스가 HTTP 및 HTTPS 요청을 Clash로 보내도록 지정할 수 있습니다. 소문자 변수도 함께 설정하면 라이브러리별 환경 변수 처리 차이를 줄이는 데 도움이 됩니다.

macOS·Linux 셸에서 현재 세션에 적용
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"

claude

이 명령은 현재 터미널 세션에만 적용되므로 새 창을 열면 설정이 사라집니다. 정상 동작을 확인한 뒤 매번 적용하고 싶다면 사용 중인 셸의 설정 파일에 명령을 추가할 수 있습니다. 예를 들어 Zsh는 ~/.zshrc, Bash는 ~/.bashrc 또는 배포판에서 사용하는 셸 초기화 파일을 확인하세요. 설정을 저장한 다음 새 터미널을 열거나 해당 파일을 다시 읽어야 합니다.

PowerShell에서는 환경 변수 설정 문법이 다릅니다. 아래 명령은 현재 PowerShell 창에서 시작하는 프로세스에 적용됩니다.

Windows PowerShell에서 현재 세션에 적용
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

claude

로그인이나 연결 테스트에서 문제가 계속되면 Claude Code를 실행한 같은 터미널에서 변수가 실제로 설정되었는지 확인하세요. 셸 설정 파일에 값을 넣었더라도 다른 터미널 앱, 다른 사용자 계정, IDE 내장 터미널에는 전달되지 않을 수 있습니다. 또한 프록시 변수를 지정한 뒤에는 기존에 실행 중인 Claude Code 프로세스를 종료하고 새로 시작해야 변경 사항이 반영됩니다.

환경 변수 확인
printenv | grep -i proxy

Windows PowerShell에서는 Get-ChildItem Env:*proxy*로 변수를 확인할 수 있습니다. 프록시가 필요 없는 로컬 주소가 있다면 NO_PROXY 또는 no_proxy에 예외를 지정할 수 있지만, 처음 진단하는 동안에는 예외를 최소화하세요. 너무 넓은 예외 항목은 의도한 요청까지 프록시를 우회하게 만들 수 있습니다.

Clash 규칙에서 Claude 트래픽 분기

환경 변수가 올바르더라도 Clash 규칙이 대상 요청을 DIRECT로 보내면 원하는 경로로 연결되지 않을 수 있습니다. Claude Code가 사용하는 서비스 도메인을 확인한 뒤, 필요한 도메인을 실제 프록시 그룹으로 보내는 규칙을 검토하세요. 흔히 확인하는 도메인에는 api.anthropic.com과 anthropic.com 하위 도메인이 포함되지만, 로그인 방식과 기능에 따라 추가 호스트가 필요할 수 있습니다. 정확한 요청 대상은 클라이언트 로그와 Clash 연결 화면을 함께 확인하는 것이 좋습니다.

도메인 기반 분기 규칙 예시
rules:
  - DOMAIN,api.anthropic.com,PROXY
  - DOMAIN-SUFFIX,anthropic.com,PROXY
  # 기존의 일반 규칙은 이 아래에 유지
  - MATCH,FINAL

PROXY는 예시 이름입니다. 실제 설정에 존재하는 프록시 그룹 이름으로 바꾸세요. 설정에 Proxy, 🚀 Proxy 또는 다른 이름의 그룹만 있다면 예제 문자열을 그대로 넣을 경우 규칙이 유효하지 않거나 기대한 그룹을 찾지 못할 수 있습니다. 또한 Clash의 규칙은 위에서 아래로 평가되므로, 해당 도메인을 먼저 처리하는 광범위한 규칙이 있다면 새 규칙을 그보다 앞에 배치해야 합니다.

구독 프로필을 직접 수정하면 다음 업데이트 때 변경 내용이 사라질 수 있습니다. 클라이언트가 규칙 오버라이드나 추가 규칙 기능을 제공하는지 확인하고, 기존 규칙을 백업한 다음 적용하세요. 알 수 없는 도메인을 무조건 프록시하거나 전체 트래픽을 강제로 변경하기보다 필요한 호스트만 테스트하는 편이 진단과 관리에 유리합니다.

규칙을 저장한 뒤에는 설정을 다시 불러오거나 클라이언트에서 규칙 업데이트를 적용해야 합니다. Clash의 연결 목록에서 Claude Code를 다시 실행하고 api.anthropic.com 요청이 나타나는지 살펴보세요. 연결 상세에 표시되는 매칭 규칙과 프록시 그룹은 규칙이 실제로 적용되었는지 판단하는 데 도움이 됩니다. 로그에 호스트 이름 대신 IP 주소만 보이거나 요청이 목록에 없다면, DNS 모드와 터널링 방식도 함께 확인해야 합니다.

증상우선 확인할 항목다음 조치
로컬 프록시 연결 거부Clash 실행 상태와 혼합 포트 번호클라이언트에 표시된 포트로 연결 테스트
요청 시간 초과선택된 노드, 규칙 매칭, 대상 도메인다른 노드와 해당 요청의 연결 기록 비교
브라우저는 되지만 CLI는 실패터미널 프로세스의 환경 변수같은 셸에서 변수를 확인하고 다시 실행
설정 직후에도 이전 동작 유지실행 중인 프로세스와 규칙 적용 상태Claude Code를 재시작하고 Clash 설정 갱신

로그인 실패와 시간 초과 진단

오류 메시지만으로 원인을 단정하기보다, 연결 단계를 나누어 테스트하면 범위를 빠르게 좁힐 수 있습니다. 첫째, Clash가 실행 중이고 선택한 노드가 정상인지 확인합니다. 둘째, curl로 동일한 로컬 포트와 HTTPS 목적지를 테스트합니다. 셋째, 같은 터미널에서 프록시 환경 변수를 출력합니다. 넷째, Claude Code를 다시 실행하면서 Clash의 연결 화면과 로그를 확인합니다. 이 순서대로 진행하면 포트, 터미널 환경, 노드, 규칙 문제를 한 번에 섞어 판단하는 일을 피할 수 있습니다.

Clash의 연결 기록에는 목적지 호스트, 매칭된 규칙, 사용된 정책 그룹이 표시될 수 있습니다. 요청이 DIRECT로 나갔다면 규칙 순서나 예외 설정을 살펴보고, 올바른 프록시 그룹을 탔는데도 시간 초과가 발생한다면 노드의 상태와 네트워크 경로를 점검하세요. 연결 자체가 기록되지 않는다면 환경 변수가 전달되지 않았거나 앱이 해당 변수 이름을 사용하지 않는 경우를 의심할 수 있습니다. 이때 프록시 주소에 오타가 없는지, HTTP 프록시 주소에 실제로 HTTP 리스너 포트를 사용했는지도 확인하세요.

인증 실패는 네트워크 문제와 구분해야 합니다. API 인증 정보, 계정 로그인 상태, 조직 정책 또는 서비스 측 응답 문제는 프록시가 정상이어도 발생할 수 있습니다. 먼저 curl 테스트 결과가 연결 실패인지 HTTP 응답인지 구별하고, 오류 메시지와 시각을 기록하세요. 토큰이나 인증 헤더가 로그에 포함될 수 있으므로 진단 내용을 공유하기 전에 자격 증명과 민감한 요청 정보를 반드시 가려야 합니다.

환경 변수 설정은 문제를 해결한 뒤에도 필요한 경우에만 유지하세요. 프록시를 사용하지 않는 네트워크에서 연결이 꼬이면 셸에서 변수를 해제하고 다시 테스트할 수 있습니다.

macOS·Linux에서 현재 세션의 프록시 해제
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
claude

Windows PowerShell에서는 현재 창에서 Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY를 실행한 뒤 앱을 다시 시작하세요. 셸 설정 파일에 변수를 영구 저장했다면 해당 항목도 함께 제거해야 새 세션에서 다시 적용되지 않습니다. 결국 안정적인 설정의 핵심은 Clash의 로컬 포트, Claude Code를 실행하는 터미널의 프록시 변수, 그리고 도메인 규칙이 같은 경로를 가리키도록 맞추는 것입니다. 이 세 지점을 순서대로 확인하면 로그인 실패와 요청 시간 초과의 원인을 훨씬 쉽게 구분할 수 있습니다.