2026년 7월 13일 · 4² AI 뉴스레터
xAI의 Grok 빌드 CLI, 와이어 수준 분석 공개
gist.github.com
파이랩 정리
xAI Grok Build CLI의 와이어 수준 분석
개요
xAI의 공식 Grok Build CLI는 일반적인 소비자 로그인 시 다음과 같은 세 가지 주요 작업을 수행합니다:
- 파일의 내용을 xAI로 전송합니다. 여기에는
.env비밀 파일도 포함되며, 이 파일의 내용은 그대로 전송됩니다. - 전체 저장소를 업로드합니다. 이는 에이전트가 읽는 파일과 상관없이 모든 추적된 파일의 내용과 git 히스토리를 포함합니다.
- 저장소 업로드는 Google Cloud Storage 버킷인
grok-code-session-traces에 이루어집니다.
이 분석은 CLI의 설치 및 빠른 시작 자료에서 이 메커니즘이 드러나지 않았음을 보여주며, 기본적으로 활성화되어 있습니다. "모델 개선"을 비활성화해도 이 기능은 꺼지지 않습니다.
테스트 대상
- 설치:
curl -fsSL https://x.ai/cli/install.sh | bash - 인증: 첫 실행 시 브라우저가 열리고 X / SuperGrok에 로그인합니다.
- 바이너리 식별:
~/.grok/bin/grok은 64비트 실행 파일이며, 버전은0.2.93입니다.
방법
- 환경: macOS, Apple Silicon, Grok 0.2.93
- mitmproxy를 설치하고 CA를 생성하여 로그인 키체인에 신뢰를 추가합니다.
- Grok을 프록시를 통해 실행하여 요청을 기록합니다.
- 테스트 저장소: 각 파일에 고유 마커가 있어 캡처된 트래픽에서 파일을 추적할 수 있습니다.
발견 1 — 파일 내용 전송
Grok이 파일을 읽을 때, 그 내용은 xAI로 전송됩니다. 이는 POST /v1/responses 모델 턴 본문에 직렬화되고, 세션 상태 아카이브로 패키징되어 업로드됩니다. .env 파일도 다른 파일과 마찬가지로 전송됩니다.
- 와이어 아티팩트: 48,070바이트의 POST 요청 본문에는 비밀 파일이 그대로 포함되어 있습니다.
- 두 번째 채널: 동일한 내용이 세션 상태 아카이브로 패키징되어 Google Cloud Storage에 업로드됩니다.
발견 2 — 전체 저장소 업로드
Grok은 전체 저장소 스냅샷을 업로드하며, 테스트된 범위 내에서 저장 크기 제한이 없습니다. 저장소가 커지면 업로드 전략을 변경하며, 12GB 저장소에서 73개의 ~75.0MB 청크가 업로드되었습니다.
- 와이어 캡처 크기 스윕: 12GB 세션에서 두 채널은 매우 다른 볼륨을 이동했습니다.
- 바이너리의 경로/문자열은 메커니즘을 뒷받침합니다.
- 스테이지된 코드베이스 매니페스트는 읽지 않은 파일을 나열하고 GCS 버킷에 콘텐츠 주소를 지정합니다.
- 읽지 않은 파일의 내용이 업로드된 git 번들에서 그대로 복구되었습니다.
이 분석은 Grok이 전체 저장소를 업로드하며, 읽지 않은 파일도 포함된다는 것을 입증합니다. 이 메커니즘은 git 번들을 사용하여 모든 추적된 파일과 히스토리를 포함합니다.
