Grok CLI가 홈 디렉터리 전체를 GCS에 올렸다는 폭로
Grok CLI uploaded the whole home directory to GCS
TL;DR Highlight
홈 디렉터리에서 Grok을 돌렸더니 SSH 키까지 xAI 서버로 올라갔다는 주장
Who Should Read
로컬 PC에서 코딩 에이전트 CLI를 권한 제한 없이 돌리고 있는 개발자
Core Mechanics
- 홈 디렉터리 통째로 업로드됐다는 주장
- 한 사용자가 Grok이 자기 user 디렉터리 전체를 xAI 서버에 올렸다고 X에 올렸다.
- 여기에 SSH 키, 비밀번호 관리자 DB, 문서, 사진, 영상이 들어 있었다고 한다.
- Grok Build 로그에 업로드 흔적이 있다는 주장
- 다른 사용자는 Grok Build가 12GB 분량의 repo 데이터와 전체 git 커밋 이력을 GCP로 올린다고 주장했다.
- 확인법으로 ~/.grok/logs/unified.json에서 repo_state.upload를 grep하라고 안내했다.
- kill switch 값이 켜져 있는데도 업로드됐다는 주장
- 설정을 가져올 때 disable_codebase_upload: true라는 전역 kill switch 값이 반환됐다는 글이 있다.
- 그런데도 Codex와 Anthropic 쪽 분석에서 private repo 8개가 통째로 올라간 간접 증거를 찾았다고 한다.
- 사용자 쪽 실수도 지적됐다
- 다른 사용자는 홈 디렉터리에서 Grok을 실행한 것 자체가 더 문제라고 반응했다.
- 원문은 X 게시물 모음이고 xAI의 공식 답변은 없다
- 원문에는 xAI의 해명이나 수정 내용이 나오지 않는다.
Community Reactions
- 업로드는 LLM의 판단이 아니라는 의견
- 댓글에서는 에이전트가 파일을 읽기로 결정한 게 아니라 도구가 세션 시작 때 현재 repo 업로드를 결정적으로 실행하는 것 같다는 의견이 나왔다.
- 서버에서 임베딩(벡터 변환)하려는 목적일 수 있지만, grep/ripgrep을 로컬에서 쓰는 다른 코딩 에이전트도 잘 돌아가므로 감수할 이유가 없다는 의견이다.
- 샌드박스로 격리해 쓴다는 경험담
- 댓글에서 podman 컨테이너에서 에이전트를 돌리고 git patch만 가져오는 방식으로 쓴다는 경험이 나왔다.
- 개발 전용 유저를 만들어 홈 폴더에 repo만 두고 IDE와 에이전트를 그 유저로 실행한다는 사례도 있었다.
- WSL2에서 Windows 마운트를 끄고 Opencode를 돌린다는 댓글도 있었다.
- 지시 파일로는 막을 수 없다는 반론
- 댓글에서 .md 지시 파일로 접근을 제한하라는 조언은 에이전트가 따른다는 보장이 없다는 의견이 나왔다.
- 어떤 에이전트든 일단 뭐든 읽는다고 가정하라는 의견도 있었다.
- 사용자 탓만 할 일이 아니라는 의견
- 댓글에서는 에이전트가 이런 동작을 하는 게 정상이라는 분위기를 비판하며 xAI의 엔지니어링 관행이 문제라고 지적했다.
- 기본값이 켜져 있을 가능성을 의심하며 옵트아웃이 아니라 옵트인이어야 한다는 의견도 있었다.
How to Apply
- 로그에서 업로드 흔적 확인하기
- Grok Build를 써 봤다면 오늘 ~/.grok/logs/unified.json에서 repo_state.upload를 grep해 본다.
- 기록이 있으면 해당 경로에 비밀 키나 토큰이 있었는지 점검하고 필요하면 교체한다.
- 에이전트 실행 디렉터리를 repo로 한정하기
- 홈 디렉터리가 아니라 작업할 repo 안에서만 CLI를 실행한다.
- 개발 전용 OS 유저를 만들어 repo만 그 홈에 두고 에이전트를 그 유저로 띄운다.
- 컨테이너·VM에서 에이전트 돌리기
- podman이나 Docker 컨테이너에 필요한 repo만 마운트해 에이전트를 실행한다.
- 환경 변수와 네트워크는 필요한 것만 열고 결과는 git patch로 가져온다.
- 새 에이전트 CLI는 먼저 샌드박스에서 시험하기
- 처음 쓰는 도구는 클라우드 샌드박스나 빈 VM에서 먼저 돌려 본다.
- 네트워크 송신 로그를 보며 어디로 무엇이 나가는지 확인한 뒤 로컬에 들인다.
Try It
# 터미널에서 실행: 에이전트 CLI 업로드 흔적 확인 및 컨테이너 격리 간이 예시
# 1) Grok Build 로그에서 업로드 기록 찾기 (원문에서 안내한 명령)
cat ~/.grok/logs/unified.json | grep repo_state.upload
# 2) 현재 repo만 마운트한 컨테이너에서 쉘 열기 (네트워크 차단, 홈 디렉터리 접근 없음)
podman run --rm -it --network=none -v "$PWD":/work -w /work docker.io/library/debian:stable bash
# 이어서 해 볼 것: --network=none을 빼고 필요한 도메인만 허용하는 프록시를 붙여 송신 내용을 확인해 보기Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓