튜토리얼 2026-05-17 · 약 18분

xAI Grok Build 초기 체험에서 CLI·문서·의존성이 줄줄 타임아웃될 때, 2026년 Clash 분류로 개발자 터미널 출구 맞추기

2026년 초반 xAI가 밀어올린 Grok Build(초대·공개 프로그램 등 얼리 액세스 형태 포함)처럼 클라우드 세션 코딩과 CLI, 자동화가 같은 작업 흐름에 놓일 때가 많습니다. SuperGrok 등 구독 한도 안에서 시험해도 장애는 모델 품질 이전에 npm, GitHub API와 CDN, 문서 헬프, MCP 카탈로그가 묶였을 때 간헐적 타임아웃으로 표면화됩니다. 브라우저만 살폈다 규칙 업데이트를 멈춰 두면 개발자 터미널만 끊기는 패턴과 겹칩니다. 글에서는 Clash 분류 순서와 DNS, 장시간 스트림과 fat tarball을 나눈 노드 전략, 터미널에서 TUN·HTTPS_PROXY 검증 순서만 OpenCode CLI 글 같은 프레임으로 정리했습니다. 웹만 우선이라면 Grok 대화 접속 안정글을 짝으로 읽어도 됩니다.

Grok Build·터미널 AI가 네트워크를 까다롭게 만드는 이유

xAI의 Grok 패밀리는 단일 REST 한 줄 호출이라기보다, 세션 상태·워크플로 스텝·도구 허용 목록 문서 줄이 동시에 움직입니다. Grok Build 형태에서는 클라우드 쪽 긴 시간 컨테이너 검증 과정과 로컬 Node·패키지·Git 과정까지 이어져 “웹 패널은 선명한데 npx부터 멈춘다”는 보고 줄이 많아집니다. 브라우저는 시스템 줄을 따라가더라도 터미널 셸 줄은 많은 경우 DIRECT 상태를 유지해 전체 트레이스의 절반만 규칙과 만납니다.

  • xAI 계정·플랜·제한 상태 축: 토큰 리프레시·플랜 전환 줄이 교체되면 과거 헬프 문서 캐시와 섞여 인증 단계만 반복된다고 오해하게 됩니다.
  • 모델·SSE 게이트웨이 줄: 리전·엔드포인트 문자열이 교체될 때 과거 호스트 줄과 새 호스트 줄이 동시에 열려 규칙 행 순서만으로 결과가 바뀌기도 합니다.
  • 패키지·소스: registry.npmjs.org와 스코프 tarball, GitHub 릴리스·raw·API.
  • MCP 주변: 로컬 stdio 서버는 루프백이지만, 카탈로그·OAuth·원격 레지스트리가 있으면 호스트가 추가됩니다.

한 줄 요약

한 줄 MATCH로 전부 프록시하기보다, 스트림·APIfat download를 같은 정책 그룹에 몰아넣지 마세요. Grok 빌드 CLI에서는 두 줄이 같은 작업 뒤편에서 겹치는 경우가 많습니다.

xAI 게이트웨이·문서 CDN·npm·GitHub·MCP 줄을 나누기

규칙을 작성하기 전 먼저 줄을 네 덩어리로 나눕니다. 첫째는 Grok Build 세션이 두드리는 모델·인증·상태 줄입니다. 둘째는 헬프·온보딩·예제 패키지를 실어 나르는 공개 문서 줄과 정적 에셋 CDN입니다. 셋째는 npm과 GitHub 패밀리입니다. 넷째는 MCP 카탈로그·외부 허용 목록·OAuth 토큰 서버 줄입니다.

xAI 제공 호스트 문자열은 공식 문서나 릴리스 노트가 바뀔 때 추가될 수 있습니다. 따라서 블로그 예시 줄을 신뢰하기보다 항상 로그 줄에서만 확인 후 반영하는 습관이 안전합니다. 각 축의 네트워크 성질 차이 역시 크기 때문에 SSE 줄은 장시간 지터에 민감하고 npm 줄은 많은 숏 요청 후 드물게 큰 tarball 줄이 따라붙으며 GitHub 줄은 출구 IP 변동 때문에 403·429 논란으로 이어질 수 있습니다. MCP 카탈로그 줄은 에디터·터미널 조합에 따라 순간적으로 줄 수가 줄었다 늘었다 합니다.

1단계: Connections 로그로 프로세스별 목적지 적기

Grok 빌드를 터미널 또는 IDE 통합 줄에서 시작할 때는 추측 대신 Connections에서 xai·실제 CLI 이름·추출된 래퍼별로 시간 순 줄을 적습니다. node, npm, npx, git, MCP 보조 프로세스 줄도 함께 잡히는지 검사합니다 Windows라면 호스트 줄과 리눅스 자식 줄이 갈람하는지를 WSL2 안내와 같이 읽어두면 좋습니다. Linux 서버에서 systemd 줄로 돈다면 해당 유닛 환경에 프록시가 비었는지 별도로 확인해야 합니다.

목록에 자주 나오는 유형(본인 환경에서 검증할 것)

  • xAI Grok 줄: Connections에서 검증된 호스트 문자열만 규칙 상단에 올립니다(공식 문서 열람 목록은 참고로 두되 실 접속 문자열과 대조해야 합니다).
  • npm: 레지스트리와 실제 tarball을 서빙하는 CDN 도메인(스코프마다 다를 수 있음).
  • GitHub: 웹·API·오브젝트 스토리지·raw가 서로 다른 접두사.
  • MCP: 원격 카탈로그·OAuth 토큰 서버 도메인(조직 정책에 따라 추가).

이 단계에서 “브라우저는 빠른데 CLI만 느리다”는 패턴이 보이면, 동일 호스트라도 프로세스가 다른 NIC·DNS 캐시를 쓰는지 의심합니다. 로그 한 페이지만으로 충분하지 않을 때가 많으니, 실패 직전 몇 초를 연속 캡처하는 편이 좋습니다.

2단계: 분류 규칙 스켈레톤을 로그에 맞춰 채우기

XAI-GW·DOC-CDN·PKG-CDN·GITHUB·MCP-META 문자열 자리표시자에는 실제 프로필에 있는 proxy-group 이름을 넣습니다. 접속 문자열 확정 확인 후에 규칙에 반영하세요.

# Illustrative rules — swap proxy-group names & domains from YOUR logs only
rules:
  - DOMAIN-SUFFIX,example-ai-gateway.invalid,XAI-GW
  - DOMAIN-SUFFIX,example-docs-cdn.invalid,DOC-CDN
  - DOMAIN-SUFFIX,registry.npmjs.org,PKG-CDN
  - DOMAIN-SUFFIX,npmjs.org,PKG-CDN
  - DOMAIN-SUFFIX,github.com,GITHUB
  - DOMAIN-SUFFIX,githubusercontent.com,GITHUB
  - DOMAIN-SUFFIX,githubassets.com,GITHUB
  - DOMAIN-SUFFIX,example-mcp-catalog.invalid,MCP-META
  - MATCH,DIRECT

규칙 순서는 위에서 아래로 첫 매칭이 이긴다고 생각하면 됩니다. 원격 RULE-SET 블록을 합치고 있다면 내부에 GitHub·npm 줄이 이미 포함돼 있는지 먼저 확인하고 로컬 오버라이드가 몇 번째 줄에 합류하는지까지 맞춥니다. DOMAIN-KEYWORD,grok처럼 지나치게 넓게 잡아두면 MCP 카드 줄만 다른 SaaS 줄과 섞여 실패한 것처럼 보일 때가 많으니 접두 줄은 최후의 수단으로만 둡니다.

회사 SSO나 허용 목록 때문에 일부 문서·모델 호스트만 직통이라면 해당 DIRECT 행을 일반 프록시 행보다 앞에 둡니다. 얼리 액세스 빌드가 새 호스트를 추가하면 과거 검증 결과가 더 이상 통과하지 않습니다. 새 호스트가 뜰 때마다 목록과 규칙을 갱신하지 않으면 같은 타임아웃 패턴만 반복 재현되기도 합니다.

3단계: 장시간 스트림과 fat download를 한 노드에 두지 않기

Grok 빌드 세션에서 MCP 도구가 짧은 HTTP를 연속 호출하고, 동시에 npm install 같은 fat tarball 줄이 깔린 경우는 접근 초창기 구간에 특히 흔합니다. 이때 url-test 간격과 후보가 공격적으로 잡히면 장시간 세션 중 출구 변경으로 핸드셰이크 재시도와 토큰 재발급이 겹칠 수 있습니다.

트래픽 노드에 바라는 성질 흔한 실수
모델 API·SSE 플랩이 적고 RTT 안정 속도 테스트 상위 노드에 API만 몰기
npm·Git LFS·대용량 릴리스 처리량·재시도 내성 스트림과 같은 큐 점유
GitHub API 출구 IP 변동 최소 짧은 주기 자동 페일오버
모델·문서 헬프·정적 에셋 CDN 지역 엣지 선택이 일관 DNS만 바꾸고 노드는 그대로

작업 단위로 API 전용 줄을 수동 선택으로 고정하면 지루해 보여도 변수를 줄이는 데 유리합니다. 반대로 패키지 줄은 처리량 때문에 다른 노드 줄 풀로 나누어도 괜찮은 경우가 많습니다.

4단계: DNS·fake-ip·IPv6를 Node·JVM 스택과 맞추기

Electron·IDE, 순수 터미널, systemd 서비스가 서로 다른 리졸버를 쓰면 같은 이름도 다른 애니캐스트로 갈라집니다. Clash의 fake-ip를 쓰는 경우 일부 TLS 스택은 증상을 “연결 직후 RST”처럼 보이게 만들기도 합니다. DNS·fake-ip 가이드 순서대로 한 번에 한 변수만 바꿔 재현해 보세요.

  • IPv6: AAAA가 우선되면 의도와 다른 회선으로 나가는 경우가 있습니다.
  • Split tunnel·제로트러스트: 회사 VPN과 병행 시 터미널만 다른 라우팅 테이블을 타는지 확인합니다.
  • TTL·캐시: 규칙을 고쳤는데도 예전 IP로 붙는 착시는 종종 로컬 캐시 때문입니다.

주의

본문의 도메인·제품명은 참고 목적입니다. xAI 및 npm·GitHub 호스트는 시기별로 문자열 줄이 더해지거나 줄이 바뀌므로 항상 실제 Connections 로그 문자열만 규칙에 반영하세요.

5단계: TUN·프록시 환경 변수로 CLI가 Clash를 “진짜로” 통과하게 하기

macOS·Linux에서 시스템 프록시가 빈틈이 있으면 Node·git·컨테이너 풀이 그대로 직행합니다. Windows는 호스트와 WSL 포트 전달이 어긋나기 쉽습니다. 실무에서는 TUN으로 스택 전체를 끌어올리거나, 셸 프로필·CI에 HTTPS_PROXY·ALL_PROXY를 주입하는 방법을 병행합니다.

  • TUN: 앱이 프록시를 무시해도 강제로 경로를 맞출 수 있어 CLI에 유리한 경우가 많습니다.
  • 환경 변수: 에디터가 자식 프로세스에 상속하는지, sudo가 환경을 지우는지 확인합니다.
  • git: http.proxy만 켜 두고 npm은 비어 있으면 증상이 섞여 보입니다.

터미널 HTTP 줄과 Git 프록시 줄까지 깊게 보려면 터미널·Git 프록시 가이드를 같은 세션에서 읽으면 Grok 빌드 CLI 흐름과 바로 연결됩니다.

6단계: MCP 레이어에서만 터지는지 분리해 보기

MCP는 로컬 stdio로 돌더라도, 서버가 마켓에서 플러그인 목록을 받거나 OAuth 교환을 하면 원격 HTTPS가 추가됩니다. “채팅은 되는데 특정 도구만 실패”할 때 Connections에서 MCP 자식 프로세스 이름을 추적하면, 잘못된 MATCH,DIRECT나 낮은 우선순위 규칙에 걸린 흔적이 드러납니다.

  • 카탈로그 JSON: 버전 고정 URL이면 브라우저 캐시와 충돌하기도 합니다.
  • OAuth 콜백: 루프백은 로컬이어도 토큰 서버는 원격입니다.
  • 중첩 Node: 플러그인 매니저가 또 다른 Node 자식을 띄우면 프로세스 규칙도 달라집니다.

다른 터미널 AI 글과 어떻게 같이 읽나요

OpenCode CLI 글과 같은 터미널·npm·GitHub·MCP 검색 의도를 묶어둡니다. Gemini CLI 글은 Google 제공자 축 중심이며, Claude Code·MCP 글에서는 Anthropic API 줄이 두드러집니다. xAI Grok 빌드는 모델·문서 헬프 CDN 줄이 많이 묶입니다. 따라서 해당 호스트 행만 더해 같은 프레임으로 이식하는 편이 자연합니다.

블록 단위 붙여넣기보다 매핑 표만 따로 갱신하세요. 릴리스 노트 한 줄에만 새 접두가 들어도 예전 테스트는 깨입니다. 따라서 변경마다 Connections 로그를 순회해야 합니다.

증상별로 의심할 순서

MCP 도구만 타임아웃하고 모델 채팅은 정상

원격 카탈로그나 OAuth 호스트만 다른 규칙에 걸려 DIRECT로 막혔을 가능성을 의심합니다. Connections에서 MCP 보조 프로세스의 목적지를 따로 필터링해 보세요.

npm만 느리거나 특정 스코프에서만 ECONNRESET

레지스트리 응답과 tarball CDN이 서로 다른 출구로 갈리면 일부 패키지에서만 실패합니다. 실패한 패키지 한 건에 대해 verbose 로그로 실제 URL을 확인하세요.

헬프·문서·정적 에셋 접속만 끊김

회사 허용 목록 밖으로 남아 있다면 MCP나 모델은 따라가지만 온보딩·헬프·정적 자산만 차단되는 패턴이 생깁니다. 실패 직후 Connections에 찍힌 목적 호스트를 추려 회사 라우팅 정책과 대조하세요.

자주 묻는 질문

브라우저에서는 Grok는 되는데 터미널 Grok 빌드 CLI만 자주 타임아웃이 납니다. 왜 그런가요?

프로세스 트리와 상속되는 프록시 설정이 브라우저와 다릅니다. 터미널 셸의 Node 계열 클라이언트는 종종 시스템 프록시를 무시하고 DIRECT로 나가곤 합니다. Connections에서 Grok 빌드 관련 명령과 node 자식 프로세스의 목적지·outbound 체인을 확인한 뒤 TUN 또는 HTTPS_PROXY를 적용하여 같은 조작으로 다시 재현해 보세요.

MCP 서버를 로컬에서만 쓰는데도 외부 호스트가 필요한가요?

stdio MCP 자체는 루프백이지만, 서버가 플러그인 목록·버전 메타데이터·OAuth 토큰 교환을 원격에서 가져오면 별도 HTTPS 호스트가 추가됩니다. 설정과 공식 문서의 엔드포인트를 열어 실제로 어떤 URL을 두드리는지 확인한 뒤 규칙에 반영하세요.

npm install은 되는데 GitHub에서만 간헐적으로 실패합니다.

api.github.com과 objects.githubusercontent.com, raw.githubusercontent.com 등 서브도메인이 서로 다른 규칙에 걸리면 일부 작업만 실패합니다. 실패 시점의 URL을 verbose 로그로 확인하고 같은 fat-download 또는 API 안정 그룹으로 묶으세요.

실무 체크리스트

  1. Grok 빌드·Node·npm·git·MCP 보조 프로세스별로 Connections 로그를 모은다.
  2. xAI 게이트웨이, 문서·헬프 CDN, npm·tarball, GitHub 서브도메인, MCP 원격 카탈로그 줄을 각 정책 그룹과 연결한다.
  3. DNS 모드·fake-ip·IPv6를 고정한 채 한 번에 한 변수만 바꿔 재현한다.
  4. 장시간 스트림용 그룹과 대용량 패키지용 그룹을 분리한다.
  5. TUN 또는 환경 변수로 터미널이 실제로 Clash 출구를 통과하는지 검증한다.

정리와 선택

브라우저 전용 통합 VPN이나 “한 줄짜리” 프리셋은 웹 패널을 빠르게 띄우는 데에는 편할 수 있습니다. 그러나 xAI Grok 빌드처럼 모델·헬프·문서 CDN·npm tarball·GitHub 객체·원격 카탈로그 MCP 호스트가 한 작업 안에 겹치는 개발 흐름에서는 호스트별로 출구 순서와 DNS까지 짚어보지 않으면 증상은 간헐적으로만 남고 같은 디버깅만 길어집니다.

Clash 계열에서는 분류 규칙·DNS 모드·TUN·정책 그룹을 같은 프로필 트리 안에서 묶어두기 쉽습니다. 그래서 “MCP 카드만 새까맣게 멈춘다”거나 “패키지만 턴다”처럼 겉으로만 패턴처럼 남던 증상도 프로세스별 목적 호스트부터 출구를 나누면 디버깅 시간이 줄어듭니다.

순서를 다른 터미널 코딩 제품에 재사용하려면 OpenCode CLI 글·Claude Code·MCP 글과 함께 읽되, xAI·문서·CDN 호스트 줄만 로그 기준으로 덧대면 충분한 경우가 많습니다. 제공사가 새 호스트를 자주 더하므로 Connections 로그로 주기 재확인이 가장 안전합니다. 흐름을 직접 맞춰 보고 싶다면 무료로 Clash를 받아 같은 단계 순서와 비교해 보셔도 됩니다.

Grok 빌드·터미널 출구 다듬기

xAI·헬프·npm·GitHub·MCP 호스트를 나누고 개발용 정책 그룹에 묶어보세요.

Clash 다운로드