Eazler AI Lab AI Engineering Journal
본문으로 건너뛰기
보안◷ 16분 읽기

ZCode가 깃 기록을 통째로 올렸다 — AI 코딩 도구는 내 코드를 어디까지 보내는가

ZCode가 345MB 작업 공간을 313MB로 묶어 올렸고 그중 86.6%가 .git이었습니다.

목차

2026년 9월 18일, 한 개발자가 ZCode(Z.ai의 AI 코딩 데스크톱 앱)를 뜯어본 조사 글을 올렸습니다. 디스크 정리를 하다 발견한 313MB짜리 암호화 파일에서 시작한 조사는, 앱이 로그인만 돼 있으면 작업 공간 전체를 .git 기록까지 묶어 알리바바 클라우드에 올린다는 결론에 닿았습니다. 설정의 스위치 두 개는 업로드를 막지 못했고, 복호화 키는 서버에만 있었습니다. Z.ai는 같은 날 사과하며 "저장소 위키 기능이 원인이고 이미 고쳤다"고 했습니다. 이 글은 조사 원문과 독립 감사 2건, 개발사 성명을 나란히 놓고 무엇이 확인됐고 무엇이 아직 주장인지 가른 뒤, 다른 AI 코딩 도구 다섯 종이 공식 문서에서 "무엇을 보낸다"고 밝히는지 같은 기준으로 정리합니다.

범위: ZCode 작업 공간 업로드 조사·개발사 성명·독립 감사, 코딩 도구 6종의 공식 데이터 문서원문 확인: 2026-09-19 · 자체 실측 없음

1. 핵심 요약

313MB
345MB 작업 공간(42,411개 파일)을 묶은 암호화 스냅샷 하나의 크기
조사자의 설치 환경 1건 기준 [1]
86.6%
스냅샷에서 .git 디렉터리가 차지한 비율
LFS 캐시 56.8% + 객체 29.6% + 로그 0.2% [1]
0개
업로드를 실제로 멈추는 설정 스위치의 수
스위치 두 개는 학습 동의와 서버 색인만 제어 [1][4][5]
가장 중요한 결론: 문제는 "AI 도구가 코드를 서버에 보낸다"가 아닙니다. 모델을 쓰려면 문맥은 어차피 보내야 합니다. 문제는 범위와 통제입니다. ZCode는 지금 작업과 무관한 저장소의 전체 이력을 묶었습니다. 삭제된 시크릿, 푸시하지 않은 브랜치, 내부 호스트 이름이 들어 있는 .git입니다. 그것을 사용자가 풀 수 없는 키로 잠갔고, 끄는 설정을 두지 않았으며, 개인정보 정책에 적지 않았습니다. 개발사 성명은 이 넷 중 첫째만 "저장소 위키 기능 때문"이라고 설명했고 나머지 셋에는 답하지 않았습니다. 다른 도구의 문서를 같은 기준으로 읽으면, 차이는 "보내느냐"가 아니라 "무엇을, 언제, 끌 수 있느냐를 문서에 적었느냐"에 있습니다.

용어를 먼저 정합니다. Z.ai는 중국 베이징의 AI 개발사 지푸(智谱, Zhipu)의 해외 브랜드이고, GLM 모델 시리즈를 만듭니다. ZCode는 이 회사가 2026년 6월에 발표한 무료 데스크톱 코딩 에이전트 앱으로 macOS·Windows·Linux에서 돌아갑니다 [8]. 스냅샷은 이 글에서 앱이 작업 공간(프로젝트 폴더) 전체를 하나의 압축 파일로 묶은 것을 뜻합니다. 봉투 암호화는 파일은 일회용 대칭 키로 잠그고, 그 대칭 키를 다시 공개 키로 잠가 함께 보내는 방식입니다. 공개 키의 짝인 개인 키를 가진 쪽만 풀 수 있습니다.

이 글의 수치는 조사 글 [1]과 GitHub 감사 저장소 [4][5]에 적힌 값 그대로이며, 개발사 성명은 중국 매체가 옮긴 전문 [2][3]을 근거로 합니다. 자체 실측은 없습니다.

2. 무슨 일이 있었나 — 6월 출시에서 9월 18일까지

시점일어난 일근거
2026-06-12Z.ai가 ZCode를 "에이전트 개발 환경"으로 발표. 앱은 무료, 구독은 월 16.20달러부터. 자체 호스팅한 모델과 직접 키(BYOK)도 지원VentureBeat [8]
2026-06-15ZCode 개인정보 정책 발효. "대화를 통해 제출한 텍스트·파일·명령·코드"를 수집하고, 학습용 "최적화 프로그램"은 기본 꺼짐. 스냅샷·체크포인트·위키·작업 공간 업로드라는 말은 없음. 데이터는 주로 싱가포르에서 처리정책 원문 [7]
2026-07-05 ~ 09-18Windows 감사자의 기기에서 스냅샷 캡처가 기록된 기간. 작업 공간 26개, 파일 50,617개, 약 1.77GB감사 저장소 [5]
2026-09-18조사 글 "Inside ZCode: Silently Uploading Your Entire Git History to the Cloud" 공개. Hacker News에서 294점·97개 댓글(2026-09-19 확인)조사 글 [1], HN [9]
2026-09-18Z.ai가 공식 사용자 그룹에 사과문 게시. "저장소 색인 기능의 Repo Wiki가 업로드를 유발했고, 초기에 기본 켜짐이었으며, 이미 수정. 코드를 공개하고 제3자 검토를 받겠다." 전 사용자에게 주간 사용량 1회 추가 초기화신랑과기·텐센트뉴스 [2][3]
2026-09-18 이후GitHub에 독립 감사 저장소와 자가 진단 도구가 여럿 공개됨[4][5]

맥락 하나를 더 둡니다. 코딩 에이전트의 숨은 동작이 뒤늦게 드러난 것은 올해 두 번째입니다. 6월 30일에는 Claude Code 2.1.196 버전을 분석한 글이 시스템 프롬프트의 날짜 문장 안에 눈에 안 보이는 아포스트로피 변형으로 사용자의 시간대와 프록시 호스트 정보를 실어 보내는 코드를 찾아냈습니다 [10]. Anthropic 엔지니어는 "무단 재판매와 증류 방지를 위한 3월의 실험"이라고 답했고 7월 1일 배포판에서 제거됐습니다(2차 보도 기준 [11]). 두 사건의 공통점은 문서에 없는 동작이 바이너리를 역공학한 뒤에야 드러났다는 점입니다. 코딩 에이전트에서 실제로 터진 사고와 통하지 않는 방어는 코딩 에이전트 보안 2026에 모아 두었습니다.

3. 조사 글이 확인한 것 — 흐름, 내용물, 스위치, 키

조사자는 ~/.zcode 폴더가 700MB를 넘는 것을 보고 시작했습니다. v2/checkpoints/ 안에 313MB짜리 .enc 파일과 상태 파일이 있었습니다. 상태 파일에는 상업 프로젝트 경로, 작업 공간 345,549,173바이트, 암호화 후 313,070,842바이트, 종류 baseline(전체 스냅샷)이 적혀 있었고, 실패 횟수는 564였습니다 [1]. 업로드가 564번 실패해 pending/에 남아 있던 것이 발견의 계기였습니다. 로그에 업로드 주소가 없어 조사자는 앱 패키지(app.asar)를 풀어 흐름을 복원했습니다.

업로드 흐름

단계누가 → 누구에게무엇을
1클라이언트 → zcode.z.aiPOST /api/v1/snapshot/upload-credential. 스냅샷 ID, RSA 공개 키, 크기 한도, 알리바바 OSS 업로드용 서명, 콜백 주소를 받음
2클라이언트 내부작업 공간을 tar.gz로 묶고 AES-256-CTR로 암호화. 대칭 키는 서버가 제공한 공개 키로 RSA-OAEP-SHA256 방식으로 다시 암호화
3클라이언트 → 알리바바 OSSHTTP 폼 POST로 tar.gz.enc를 Z.ai 서버를 거치지 않고 저장소에 직접 업로드
4OSS → zcode.z.ai콜백으로 수신 확인. 조사자는 실행 중인 프로세스가 zcode.z.ai와 OSS 노드 두 곳에 HTTPS 연결을 유지하는 것을 소켓에서 확인

스냅샷에 무엇이 들었나

암호문은 열 수 없지만, 묶을 때 만든 파일 목록(manifest)은 평문으로 남아 있었습니다. 42,411개 파일의 구성입니다 [1].

.git — 합계 86.6%
.git/lfs/
56.8%
.git/objects/
29.6%
.git/logs/
0.2%
그 밖
소스·문서
13.4%
올라간 것의 86.6% 가 .git 이었습니다. 소스와 문서는 13.4% 뿐이고, 나머지는 LFS 캐시와 커밋 이력 전체였습니다. reflog 는 0.2% 로 작지만 아직 푸시하지 않은 작업의 흔적을 담습니다. 수치는 아래 표와 같습니다.
내용크기비율무엇이 들어 있나
.git/lfs/196.1MB56.8%LFS 캐시. 지금까지 내려받은 바이너리·미디어 전부
.git/objects/102.2MB29.6%커밋·트리·블롭(파일 내용 객체) 전체. 저장소가 생긴 뒤의 모든 Git 이력
.git/logs/0.6MB0.2%reflog(참조 로그). 로컬 브랜치 이력과 아직 푸시하지 않은 작업 흔적
소스·문서약 46.2MB13.4%src/, 설정 파일, 내부 문서

전체 스냅샷 크기 중 .git 디렉터리가 86.6%입니다. 이것이 "코드를 보낸다"와 다른 이유는 현재 작업 트리에 없는 것이 들어가기 때문입니다. 나중 커밋에서 지운 API 키·토큰 같은 시크릿과 설정, 공개하지 않은 브랜치 이름, .git/config의 내부 GitLab 호스트 이름과 경로가 그것입니다. 여기에 settings.behavior.json 같은 전역 설정 파일의 해시를 담은 추가 목록이 모든 스냅샷에 함께 묶였습니다 [1]. .gitignore는 도움이 되지 않습니다. 무시되는 파일이 아니라 .git 자체가 대상이기 때문입니다.

스위치 두 개가 실제로 하는 일

설정 이름사용자가 기대하는 것코드에서 실제로 하는 것
Optimize Experience
optimizeAgentExperienceEnabled
텔레메트리·데이터 수집 끄기데이터를 모델 학습에 쓰도록 허락하는지만 제어. 스냅샷 캡처와 업로드는 계속
Repo Snapshot Indexing
repoSnapshotIndexingEnabled
스냅샷 기능 끄기서버가 올라온 스냅샷을 색인하는지만 제어. 로컬 묶음과 업로드는 계속

조사 글에 따르면 백그라운드 캡처·업로드 구성 요소(코드에서는 사이드카라고 부릅니다)는 앱이 시작할 때 조건 없이 생성됩니다. 사용자 설정을 확인하는 분기가 없고, 유일한 조건은 유효한 로그인 토큰(JWT)을 받을 수 있는지였습니다 [1]. 캡처는 프롬프트를 보내기 직전마다(captureBeforePrompt)와 repo-wiki-update로 표시된 작업이 끝날 때 일어났고, 한 세션에서 최대 62번 기록됐습니다.

키가 어디에 있는가. 조사자가 가장 문제 삼은 지점입니다. 암호화에 쓰인 공개 키는 서버가 매번 내려주고, 짝인 개인 키는 클라이언트에 없습니다. 조사자의 기기에 있는 어떤 개인 키로도 풀리지 않았습니다. 사용자의 복구나 기기 간 동기화를 위한 기능이라면 키는 Git이나 Time Machine처럼 사용자에게 있어야 합니다. 서버만 쓸 수 있는 키는 서버가 읽기 위한 설계라는 것이 조사자의 결론이며, 이 판단은 조사자의 해석입니다 [1].

4. 개발사의 답변과 조사 결과가 어긋나는 자리

Z.ai의 사과문은 9월 18일 공식 사용자 그룹에 올라왔고, 신랑과기·텐센트뉴스 등이 전문을 옮겼습니다 [2][3]. 요지는 다섯 가지입니다.

  • 문제는 "저장소 색인" 기능에서 비롯됐다는 것입니다. 이 기능은 세션 체크포인트 복구, 과거 버전 되돌리기, Repo Wiki(저장소 지식 페이지)를 위해 로컬에서 색인을 만듭니다.
  • Repo Wiki 페이지를 생성할 때 저장소 데이터 업로드가 일어날 수 있다는 것입니다.
  • 위키가 클라우드에서 생성된 뒤 올라간 데이터는 즉시 파기되고 저장되지 않는다는 것입니다.
  • 출시 초기에 기본 켜짐이어서 일부 사용자가 영향을 받았다는 것입니다.
  • 이미 수정했고, 코드를 공개하며 제3자 평가를 받고 진행 상황을 공개하겠다는 것입니다.

아래는 성명의 각 주장을 조사·감사 결과 옆에 둔 것입니다.

성명의 주장조사·감사가 확인한 것이 글의 판정
"Repo Wiki 페이지를 생성할 때 업로드가 일어날 수 있다"캡처 시점은 모든 프롬프트 직전과 repo-wiki-update 작업 완료 시. 한 세션 62회. Windows 감사에서도 프롬프트 제출과 터미널 상태 변화마다 캡처 [1][5]"위키 생성 때"보다 훨씬 잦았습니다. 성명은 업로드 조건과 빈도를 실제보다 좁게 설명했습니다
"올라간 데이터는 즉시 파기된다"서버 쪽은 로컬에서 검증할 수 없습니다. 감사 저장소도 "개발사 서버가 스냅샷으로 무엇을 하는지는 확정하지 않는다"고 명시 [4]확인할 수 없는 주장입니다. 제3자 검토가 실제로 확인해야 할 지점이 여기입니다
"초기에 기본 켜짐이어서 영향을 받았다""켜짐/꺼짐"이 있었다는 뜻이지만, 스위치는 업로드를 막지 않았습니다. 사이드카는 조건 없이 생성됐습니다 [1][4][5]기본값 문제가 아니라 끌 수 없었던 문제입니다
“이미 수정했다”수정된 버전 번호와 바뀐 내용이 성명에 없습니다. 감사가 대상으로 삼은 3.12.3 이후 판에서 무엇이 달라졌는지는 확인하지 못했습니다 [5]검증 불가. 코드 공개가 이뤄지면 그때 확인할 수 있습니다
(언급 없음) 키는 왜 서버에만 있는가서버가 내려준 공개 키로 봉투 암호화. 개인 키는 클라이언트에 없음 [1][4]성명이 답하지 않은 질문입니다
(언급 없음) 개인정보 정책과의 관계정책은 "대화로 제출한" 텍스트·파일·명령·코드만 적었고, 스냅샷·체크포인트·위키·작업 공간 업로드라는 말이 없습니다 [7]정책 개정 여부를 성명이 말하지 않았습니다

공정하게 적어 둘 것도 있습니다. 성명은 사건 당일 나왔고, 원인 기능을 특정했으며, 코드 공개와 제3자 검토라는 검증 가능한 약속을 했습니다. 이 약속이 지켜지는지가 이 사건의 다음 확인 지점입니다. 다만 사과문이 사용자 그룹에만 올라가 이 글은 중국 매체가 옮긴 전문에 의존합니다. 영문 공식 게시물은 2026-09-19 기준 확인하지 못했습니다.

5. 독립 감사 두 건 — 확인된 것과 확인할 수 없는 것

조사 글은 설치 한 건의 기록입니다. 그래서 다른 기기에서 같은 동작이 재현되는지가 중요합니다. 9월 18일 이후 GitHub에 올라온 감사 저장소 중 증거 등급을 매기고 재현 스크립트를 붙인 두 건을 봤습니다.

항목BakaronLab 감사 [4]HunLuanZhiZhu 감사 [5]
환경Windows 데스크톱 앱(Electron), 서버 프로세스는 WSLZCode 3.12.3, Windows x64. app.asar 해시 고정
캡처 규모작업 공간 상태 파일 7개목록 30개, 작업 공간 26개, 파일 50,617개, 약 1.77GB. 대기 중 암호화 파일 11개, 약 1.06GB
캡처 시점프롬프트 직전프롬프트 제출마다 + 터미널 상태 갱신
.git 포함포함. 압축 파일의 62~90%포함
암호화·목적지AES-256-CTR + 서버 제공 RSA 공개 키, 알리바바 OSS동일. zcode.z.ai/api/v1/snapshot/upload-credential에서 자격 증명 요청
스위치의 효과repoSnapshotIndexingEnabled는 서버 번들에 스키마·정규화·업로드 키 목록으로만 존재. 사이드카는 조건 없이 생성존재하지만 캡처·업로드를 막지 않음
업로드 완료 여부확인. 상태 파일 7개 모두에 업로드 성공 뒤에만 기록되는 lastAcceptedManifestHash가 있고, 대기 파일은 업로드 뒤 삭제됨로컬 증거로는 판정 불가. "로컬 로그에 업로드 트랜잭션 기록이 없어 서버가 받았는지는 알 수 없다"
서버 측 처리"개발사 서버가 올라온 스냅샷으로 무엇을 하는지는 확정하지 않는다." 보관·학습·직원 접근은 알 수 없음동일하게 알 수 없음

두 감사가 같은 것은 캡처 범위(.git 포함), 암호화 방식, 목적지, 스위치가 업로드를 막지 않는다는 점입니다. 조사 글의 핵심 주장은 세 기기에서 일치합니다. 다른 것은 업로드가 실제로 완료됐는지입니다. 한 감사는 완료 기록을 찾았고, 다른 감사는 자기 기기에서는 판정할 수 없다고 적었습니다. 조사 글의 기기에서는 564번 실패한 채 대기 중이었습니다. 즉 "묶어서 올리려 한다"는 확정이고, "얼마나 올라갔는가"는 기기마다 다릅니다.

세 기록 모두 서버 쪽은 모릅니다. 즉시 파기됐는지, 학습에 쓰였는지, 누가 열어 봤는지는 클라이언트를 아무리 뜯어도 나오지 않습니다. 이 사건에서 확정된 것은 클라이언트의 행동까지이고, 그 너머는 개발사가 약속한 제3자 검토가 답해야 할 몫입니다.

6. 다른 도구는 무엇을 보내는가 — 공식 문서 기준

Hacker News 토론에서는 "다른 도구도 마찬가지 아니냐"는 반응이 많았습니다 [9]. 그 질문에는 추측이 아니라 문서로 답해야 합니다. 아래는 각 도구의 공식 데이터 문서를 2026-09-19에 읽고 같은 네 가지를 적은 것입니다. 문서에서 확인하지 못한 항목은 "문서에 없음"으로 적었습니다. 문서에 적힌 것과 실제 동작이 같다는 보장은 없습니다. ZCode도 문서에는 스냅샷이 없었고, Claude Code의 6월 사건도 문서에 없던 동작이었습니다.

도구코드가 나가는 경로학습 사용 기본값끄는 방법문서에 없는 것
ZCode
Z.ai
대화로 제출한 텍스트·파일·명령·코드(정책). 여기에 문서에 없는 작업 공간 스냅샷이 알리바바 OSS로(조사)"최적화 프로그램" 기본 꺼짐. 켜기 전에는 학습에 쓰지 않음스냅샷은 끄는 설정 없음. 조사자의 우회는 ~/.zcode/v2/checkpoints를 불변 플래그로 잠그는 것스냅샷·체크포인트·위키 업로드, 보관 기간(“필요한 동안”), 서버 측 처리 [7]
Claude Code
Anthropic
프롬프트와 모델 출력 전부가 API로. 지표(지연·사용 패턴)는 "코드·프롬프트·파일 경로를 포함하지 않음". 세션 기록은 로컬 ~/.claude/projects/에 평문 30일소비자 플랜(Free·Pro·Max)은 사용자가 켜고 끄는 설정에 따름. 상업 플랜(API·Team·Enterprise)은 학습 안 함DISABLE_TELEMETRY=1, DISABLE_ERROR_REPORTING=1, 전부 한 번에 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1. 학습 동의는 계정 설정문서는 상세하지만, 6월의 프롬프트 표식은 문서에 없던 동작이었음 [6][10]
Codex CLI
OpenAI
프롬프트·코드가 모델 API로. 클라이언트 분석 지표는 "코드베이스의 코드를 포함하지 않음"이며 개인 식별 정보 없음(2025-12 공지, 2026-01 시점에 수집 로직 미구현)API 키로 쓰면 API 정책을 따름. "2023-03-01부터 API로 보낸 데이터는 학습에 쓰지 않음", 남용 감시 로그 30일, 제로 데이터 보존 신청 가능 [17]. ChatGPT 플랜으로 로그인해 쓸 때의 소비자 설정은 도움말 페이지를 직접 열지 못해 미확인(8절)config.toml의 analytics 플래그 [12]. 학습 동의는 계정 쪽 설정CLI 문서에 데이터 흐름 절이 없고, API 문서는 Codex를 따로 언급하지 않음 [12][17]
Cursor"직접 키를 써도 요청은 Cursor 백엔드를 거침"(최종 프롬프트 조립). 파일 내용은 지연을 줄이려 서버에 임시 캐시, 클라이언트 생성 키로 암호화하고 키는 요청 동안만 서버에 있음Privacy Mode를 켜면 학습에 쓰지 않고, 모델 제공사와는 제로 데이터 보존 계약. 기본값은 문서에 명시 없음Privacy Mode. 무료 사용자를 포함해 누구나 켤 수 있고 팀 설정을 상속코드베이스 색인의 저장 형태(청크·임베딩·경로 난독화)는 읽은 문서 두 곳에 없었음 [13]
GitHub Copilot입력(모델에 보인 코드 조각), 채택·수정한 출력, 커서 주변 문맥, 파일 이름·저장소 구조·이동 패턴Free·Pro·Pro+는 2026-04-24부터 학습에 사용(사용자가 끄지 않는 한). 비공개 저장소도 활성 세션 중에는 포함. Business·Enterprise 제외, 유료 조직의 저장소는 어떤 계정으로 작업해도 제외github.com/settings/copilot/features의 Privacy 절학습에 쓰는 데이터는 Microsoft를 포함한 GitHub 계열사와 공유될 수 있고 제3자 AI 제공사에는 가지 않음 [16]. 학습 외 사용 통계의 수집 범위는 읽은 문서에 없음
Gemini CLI
Google
프롬프트·코드가 인증 방식에 따라 Code Assist·Gemini API·Vertex로. 사용 통계는 도구 이름·성공 여부·소요 시간·모델명만 보내고 "프롬프트·응답 내용, 파일 내용은 보내지 않음"인증 방식별로 다른 정책 문서를 따름. 개인 Google 계정용 정책은 8절 참고settings.json의 privacy.usageStatisticsEnabled: false(기본 켜짐)인증 방식별 학습 정책이 CLI 문서 밖 링크에 있음 [15]

표를 읽는 법입니다. 모델에 코드 문맥을 주는 요청에서는 어느 도구든 코드가 나갑니다. 그것은 피할 수 없습니다. 차이는 세 가지입니다. 첫째, 범위. 다섯 도구는 "대화에 보낸 것"과 "커서 주변"을 말하고, ZCode의 스냅샷은 저장소 전체 역사였습니다. 둘째, 기본값. Copilot 개인 플랜은 4월부터 학습 사용이 기본 켜짐이고, Claude Code 소비자 플랜은 사용자 선택, 상업·기업 플랜은 다섯 도구 모두 학습 제외입니다. 셋째, 끄는 손잡이가 문서에 있는가. 이 글이 읽은 문서 중 끄는 방법이 없는 항목은 ZCode의 스냅샷과 Copilot의 참여 데이터뿐이며, 둘의 성격은 다릅니다. 후자는 사용량 지표이고 전자는 코드입니다.

7. 오늘 적용할 체크리스트

ZCode 사용자에게 먼저, 그다음 모든 코딩 에이전트 사용자에게 해당하는 항목입니다.

ZCode를 쓰고 있다면

  • 무엇이 묶였는지 먼저 봅니다. ~/.zcode/v2/checkpoints/ 아래 상태 파일과 파일 목록(manifest)은 평문입니다. 어느 프로젝트가, 언제, 몇 번 캡처됐는지 여기서 읽을 수 있습니다. 자가 진단 스크립트를 공개한 저장소도 있습니다 [4][5].
  • 업로드를 막으려면 폴더를 잠급니다. 조사자는 지우면 30분 안에 다시 묶이는 것을 확인했습니다. 조사자의 절차는 폴더를 지우고 다시 만든 뒤 잠그는 것입니다. macOS는 rm -rf ~/.zcode/v2/checkpoints && mkdir -p ~/.zcode/v2/checkpoints && chflags uchg ~/.zcode/v2/checkpoints, Linux는 마지막 명령만 sudo chattr +i ~/.zcode/v2/checkpoints입니다. 지우지 않고 잠그면 이미 대기 중인 암호화 파일이 남습니다. 체크포인트 되돌리기 기능은 동작하지 않게 되고, 채팅·자동완성·도구 실행은 그대로입니다 [1]. 이것은 조사자가 자기 기기에서 확인한 우회이며, 개발사가 수정했다는 판에서도 필요한지는 확인하지 못했습니다.
  • 저장소 이력에 들어간 시크릿은 모두 재발급합니다. 스냅샷에는 지운 커밋의 내용이 들어갑니다. .git 이력에 한 번이라도 들어간 API 키·토큰·비밀번호는 이미 노출된 것으로 보고 재발급합니다. git log -p나 시크릿 스캐너로 이력을 훑습니다.
  • 로그아웃하면 멈춥니다. 조사 글 기준으로 사이드카의 유일한 조건은 유효한 로그인 토큰입니다. 직접 키나 자체 호스팅 모델로 쓰는 구성이 문서에 있으니 [8], 그 구성에서도 로그인 없이 동작하는지 확인한 뒤 씁니다.

어떤 코딩 에이전트든

  • 데이터 문서를 설치 전에 읽고, 없으면 그 자체를 신호로 봅니다. 6절의 네 칸(경로·학습 기본값·끄는 법·보관 기간)을 채울 수 없는 도구는 팀 코드에 붙이지 않습니다.
  • 나가는 연결을 한 번은 직접 봅니다. 문서와 동작이 같다는 보장은 없습니다. lsof -i -P | grep <프로세스>나 방화벽 로그로 앱이 어디에 붙어 있는지 확인합니다. 모델 API 외의 저장소 도메인이 보이면 이유를 찾습니다.
  • 불필요한 트래픽은 설정으로 끕니다. Claude Code는 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1입니다. Gemini CLI는 privacy.usageStatisticsEnabled: false입니다. Codex는 analytics 플래그입니다. Copilot 개인 플랜은 설정의 Privacy 절, Cursor는 Privacy Mode입니다. 팀이면 설정 파일에 넣어 배포합니다.
  • 회사 코드는 상업·기업 플랜으로만 씁니다. 여섯 도구 모두 상업·기업 계약에서는 학습 사용을 제외합니다. Copilot은 유료 조직의 저장소라면 개인 플랜으로 열어도 학습에서 제외하지만, 개인 계정 소유의 비공개 저장소는 개인 플랜의 활성 세션 중 학습에 쓰일 수 있습니다 [14]. 회사 코드가 어느 계정 아래에 있는지가 보호 범위를 가릅니다.
  • .gitignore가 막지 못하는 것을 압니다. 이번 사건의 86.6%는 .git이었습니다. 역사 속 비밀 값은 무시 목록이 아니라 재발급으로만 지워집니다.

8. 아직 결론이 아닌 것

  • 자체 실측이 없습니다. 이 글은 조사 글 한 편, 감사 저장소 두 곳, 개발사 성명을 옮긴 보도, 각 도구의 공식 문서를 대조한 정리입니다. ZCode를 직접 설치해 재현하지 않았습니다.
  • 서버 쪽은 아무도 확인하지 못했습니다. "즉시 파기"는 검증할 수 없고, 학습 사용·보관·접근도 마찬가지입니다. 개발사가 약속한 코드 공개와 제3자 검토가 이뤄지면 이 글을 개정합니다.
  • 업로드 완료 여부는 기기마다 다릅니다. 한 감사는 완료 기록을 찾았고, 다른 감사는 판정 불가였으며, 조사 글의 기기는 564회 실패 상태였습니다. "얼마나 많은 사용자의 코드가 실제로 올라갔는가"는 알 수 없습니다.
  • 수정 버전을 확인하지 못했습니다. 성명에 버전 번호가 없고, 감사 대상은 3.12.3입니다. 이후 판에서 사이드카가 어떻게 바뀌었는지는 코드 공개 전에는 알기 어렵습니다.
  • 개발사 성명은 2차 전달입니다. 사용자 그룹에 올라온 글을 중국 매체가 옮겼습니다. 영문 공식 게시물은 확인하지 못했고, 매체 간 표현 차이가 있을 수 있습니다.
  • ZCode 출시일이 자료마다 다릅니다. VentureBeat는 6월 12일 발표로 적었고, 다른 2차 자료는 7월 초 출시로 적었습니다. 이 글은 VentureBeat를 따랐습니다.
  • Codex를 ChatGPT 플랜으로 쓸 때의 학습 정책은 확인하지 못했습니다. OpenAI 도움말 페이지가 자동 요청을 거부했습니다. API 키로 쓸 때의 정책(학습 미사용, 30일 남용 감시 로그)은 API 문서로 확인했지만, 그 문서는 Codex를 따로 언급하지 않습니다 [17].
  • Gemini CLI의 개인 계정 정책도 같은 한계입니다. 개인용 Code Assist 정책 페이지가 2026-06-18자 서비스 종료 안내로 바뀌어 있어 현재 문구를 확인하지 못했습니다. 표에는 사용 통계 부분만 적었습니다.
  • Copilot의 플랜 목록은 2026-03-25 블로그와 FAQ 기준(Free·Pro·Pro+)입니다. 그 뒤 추가된 개인 플랜이 있는지는 공식 문서에서 확인하지 못했습니다.
  • Cursor의 코드베이스 색인 방식은 읽은 문서에 없었습니다. 청크·임베딩·경로 난독화 같은 세부는 이전 문서에 있었던 것으로 기억하지만 확인하지 못해 싣지 않았습니다.
  • Hacker News에서 나온 다른 도구의 의혹은 싣지 않았습니다. 원문이나 문서로 확인되지 않은 댓글 단계의 주장입니다.
  • 국내 보도는 확인하지 못했습니다. 2026-09-19 기준 한국어 매체·커뮤니티에서 이 사건을 다룬 글을 찾지 못했습니다.

9. 참고자료

모두 2026-09-19 확인했습니다. [1]·[4]·[5]·[10]은 독립 개발자의 조사 기록이고, [6]·[7]·[12]~[17]은 각 개발사의 공식 문서입니다. [2]·[3]·[8]·[9]·[11]은 2차 출처입니다.

출처확인한 내용근거의 범위
[1] ferstar · Inside ZCode: Silently Uploading Your Entire Git History to the Cloud (2026-09-18)313MB/345MB, 42,411개 파일, 실패 564회, 업로드 흐름, 봉투 암호화와 키 위치, .git 86.6% 구성, 스위치 두 개의 실제 동작, 캡처 시점과 62회, 폴더 잠금 우회개인 설치 한 건의 역공학 기록. 저자가 AI 번역본임을 밝힘
[2] 신랑과기 · 智谱 ZCode 被质疑“偷传代码”:官方回应 (2026-09-18)공식 그룹 사과문 전문: 저장소 색인·Repo Wiki 원인, 즉시 파기, 초기 기본 켜짐, 수정 완료, 코드 공개·제3자 검토, 주간 사용량 초기화2차 출처. 성명 전문을 옮긴 보도
[3] 텐센트뉴스 · 같은 성명 보도 (2026-09-18)[2]와 동일 내용 교차 확인2차 출처
[4] BakaronLab · zcode-snapshot-auditWindows/WSL 감사. 증거 등급, .git 62~90%, 스위치가 사이드카를 막지 않음, lastAcceptedManifestHash로 업로드 완료 확인, 서버 측은 확정하지 않음독립 감사. 재현 스크립트 포함
[5] HunLuanZhiZhu · zcode-workspace-snapshot-auditZCode 3.12.3 Windows x64. 목록 30개·작업 공간 26개·50,617개 파일·1.77GB, 대기 파일 11개·1.06GB, 캡처 기간 2026-07-05~09-18, 업로드 완료는 로컬 증거로 판정 불가독립 감사. app.asar 해시에 결론을 묶음
[6] Anthropic · Claude Code Data usage소비자·상업 플랜 학습 정책, 보관 기간(30일·5년), 지표에 코드·프롬프트·경로 없음, DISABLE_TELEMETRY·CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, 로컬 세션 기록 30일개발사 공식 문서
[7] Z.ai · ZCode Privacy Policy (발효 2026-06-15)수집 항목(대화로 제출한 텍스트·파일·명령·코드), 최적화 프로그램 기본 꺼짐, 싱가포르 처리, 보관 "필요한 동안", 스냅샷·위키 언급 없음개발사 공식 문서
[8] VentureBeat · Z.ai launches ZCode (2026-06-12)발표일, 플랫폼, 무료 앱과 구독 가격, GLM-5.2, BYOK·자체 호스팅 지원2차 출처. 기술 매체 보도
[9] Hacker News · Inside ZCode 토론294점·97개 댓글(2026-09-19), "다른 도구도 마찬가지" 논쟁, 성명 번역 공유2차 출처. 커뮤니티 토론
[10] Thereallo · Claude Code Is Steganographically Marking Requests (2026-06-30)2.1.196 분석. ANTHROPIC_BASE_URL 호스트 대조와 시간대에 따른 아포스트로피·날짜 형식 변경독립 개발자의 역공학 기록
[11] Malwarebytes · Claude Code's hidden tracker was an "experiment" (2026-07-07)Anthropic 엔지니어의 X 답변("3월의 실험", 재판매·증류 방지), 7월 1일 제거2차 출처. 보안 매체 보도
[12] OpenAI · Codex Client Analytics (GitHub 공지, 2025-12-18)분석 지표 항목, 코드·개인 정보 미포함, 기본 켜짐, config.toml 플래그, 2026-01-08 시점 수집 로직 미구현개발사 공식 공지
[13] Cursor · Data Use & Privacy Overview (갱신 2026-09-03) · Security (갱신 2026-08-25)직접 키도 백엔드 경유, 파일 임시 캐시와 클라이언트 키 암호화, Privacy Mode의 학습 제외·제로 데이터 보존개발사 공식 문서
[14] GitHub · FAQ: Privacy Statement update on Copilot data use for model training2026-04-24부터 Free·Pro·Pro+ 학습 사용, 수집 항목, 비공개 저장소 활성 세션 포함, Business·Enterprise 제외, 유료 조직 저장소 제외, 끄는 경로개발사 공식 FAQ
[15] Google · Gemini CLI Configuration, Usage Statistics 절 · Terms and Privacy사용 통계 수집 항목과 제외 항목, 기본 켜짐, privacy.usageStatisticsEnabled, 인증 방식별 정책 문서개발사 공식 문서
[16] GitHub · Updates to GitHub Copilot interaction data usage policy (2026-03-25)2026-04-24 발효, Free·Pro·Pro+ 대상, 수집 항목, 계열사(Microsoft 포함) 공유와 제3자 AI 제공사 비공유, Business·Enterprise·기업 소유 저장소 제외개발사 공식 블로그
[17] OpenAI · Your data (API 문서)"2023-03-01부터 API로 보낸 데이터는 학습에 쓰지 않음", 남용 감시 로그 30일, 제로 데이터 보존 대상 엔드포인트. Codex 언급 없음개발사 공식 문서

편집 기준: 클라이언트에서 확인된 것과 서버 쪽 주장을 표마다 나눠 적었고, 개발사 성명은 2차 전달임을 밝혔습니다. 다른 도구의 항목은 공식 문서에 적힌 것만 옮기고 문서에 없는 것은 없다고 적었습니다.

뉴스레터

매주 일요일, 그 주의 새 리포트를 보내 드립니다

한 주에 나온 리포트를 한 통에 모아 보내고, 새 글이 없는 주는 건너뜁니다. 리포트 소식 외에는 보내지 않습니다.

받은 주소는 새 리포트 알림에만 사용하며, 언제든 해지할 수 있습니다. 개인정보처리방침
발행처

Eazler AI Lab은 주식회사 이즐러가 발행하는 AI 엔지니어링 연구 노트입니다. 1차 자료를 원문으로 읽고, 확인하지 못한 것은 확인하지 못했다고 씁니다.

편집 기준 · 검증 방법론 →

새 리포트 요약은 Threads @eazler.inc에도 올립니다.

AI 에이전트 도입·자동화 구축 문의는 hello@eazler.com