삭제한 코드도 넘어갈까? ZCode 업로드 의혹과 Git의 기억
핵심 요약
- Git에 커밋한 코드는 현재 파일에서 삭제해도 과거 기록에 남을 수 있습니다.
- ‘저장소 스냅샷’이라는 표현만으로 Git 이력 전체를 전송했다고 판단할 수는 없습니다.
- 코드를 전송했는지, 서버에 보관했는지 확인해야 합니다. 모델 학습에 활용했는지도 따로 봐야 합니다.
- 수집을 끄는 기능과 전송 전에 설명하고 동의를 받는 절차는 별개의 문제입니다.
Zhipu의 ZCode를 둘러싼 Git 이력 업로드 의혹에서 먼저 따져볼 것은 “어디까지 보냈나”입니다. 실제로 업로드했는지, 했다면 어디까지 보냈고 어떤 동의 절차를 거쳤는지는 단정할 수 없습니다. 그래도 AI에 프로젝트를 맡기는 사람이라면 짚어볼 문제입니다. 화면에서 보는 코드와 저장소에 남아 있는 코드가 같지 않을 수 있기 때문입니다.
파일을 지웠다고 과거까지 지워지지는 않습니다
Git은 코드의 변경 이력을 관리하는 도구입니다. 작업 내용을 ‘커밋’이라는 단위로 기록해 두면, 필요할 때 이전 상태를 확인하거나 되돌릴 수 있습니다.
예를 들어 지난달에 폐기한 기능의 코드를 커밋해 뒀다고 해보겠습니다. 오늘 그 파일을 삭제하고 다시 커밋하면 현재 작업 폴더에서는 파일이 사라집니다. 하지만 이전 커밋을 열면 삭제 전 내용을 그대로 확인할 수 있습니다.
그 코드에 내부 설계나 비공개 고객사 이름이 들어 있었다고 해보겠습니다. 지금 보이는 파일에서는 지웠더라도, 과거 기록에는 그대로 남아 있을 수 있습니다.
이 때문에 현재 파일을 지우는 일과 Git 이력에서 없애는 일은 서로 다릅니다. AI 도구가 현재 파일만 읽는지, 과거 기록까지 들여다보는지에 따라 노출될 수 있는 정보도 달라집니다.
‘저장소 스냅샷’에는 무엇이 들어 있을까요?
스냅샷은 보통 특정 시점의 상태를 담은 사본을 뜻합니다. 다만 이 말만으로는 어떤 파일과 기록까지 담았는지 알 수 없습니다.
현재 작업 파일을 묶었을 수도 있고, 특정 커밋의 파일 상태를 추출했을 수도 있습니다. 여기에 Git의 내부 데이터까지 함께 담았다면, 로컬 저장소에 남아 있는 과거 커밋의 내용도 포함될 수 있습니다.
그러니 스냅샷 업로드를 곧바로 ‘삭제한 코드까지 전부 업로드’로 해석해서는 안 됩니다. 반대로 현재 파일만 전송한다고 생각했는데 Git 기록까지 함께 보냈다면, 사용자가 예상한 범위를 크게 벗어날 수 있습니다.
ZCode 의혹도 이 구분을 염두에 두고 봐야 합니다. 업로드가 있었다는 주장에는 실제 전송을 확인할 근거가 필요합니다. Git 이력을 포함했는지, 충분히 알리지 않고 전송했는지 역시 각각 근거를 확인해야 합니다. 하나를 확인했다고 나머지 주장까지 사실이 되는 것은 아닙니다.
옵트아웃 버튼만으로 동의 문제가 끝나지는 않습니다
옵트아웃은 기본으로 적용되는 수집이나 기능을 사용자가 직접 끄는 방식입니다. 설정에 끄기 버튼이 있더라도, 사용자가 첫 전송 전에 그 기능이 있다는 사실을 알 수 있었는지는 따로 봐야 합니다.
사용자가 알고 싶은 내용은 복잡하지 않습니다. 어떤 자료를 언제부터 보내는지, 보낸 자료는 어디에 보관하는지입니다. 특히 과거 커밋까지 보낸다면 현재 코드만 처리할 때와 무엇이 다른지 설명해야 합니다.
전송·보관·학습 활용도 나눠서 확인해야 합니다. 서버로 코드를 보냈다는 사실만으로 모델 학습에 썼다고 결론 내릴 수는 없습니다. 반대로 학습에 쓰지 않는다는 설명을 서버에도 저장하지 않는다는 뜻으로 받아들여서는 안 됩니다.
수집을 끈 뒤 자료를 어떻게 처리하는지도 살펴봐야 합니다. 이후 전송을 멈추는 것과 이미 보낸 자료를 삭제하는 것은 서로 다른 문제입니다. ‘사용자가 제어할 수 있다’고 설명하려면, 사용자가 어디까지 제어할 수 있는지 구체적으로 밝혀야 합니다.
AI에 프로젝트를 맡기기 전에 볼 것
도구가 어디까지 접근하고 무엇을 전송하는지부터 확인해야 합니다. 선택한 코드 조각만 다루는지, 프로젝트 전체를 다루는지 살펴봐야 합니다. Git의 과거 기록까지 포함하는지에 따라서도 판단이 달라집니다.
익숙한 파일이라고 역할을 과신해서는 안 됩니다. .gitignore는 Git에서 추적하지 않을 파일을 지정하는 데 쓰입니다. 모든 AI 도구가 이 파일을 외부 전송 차단 규칙으로 따른다고 볼 수는 없습니다. 이미 커밋한 내용도 나중에 이 파일에 규칙을 추가한다고 과거 기록에서 사라지지는 않습니다.
업무용 프로젝트라면 도구의 설명과 실제 동작이 조직의 코드 반출 기준에 맞는지도 확인해야 합니다. ‘개인정보 보호’라는 설정 이름만으로 판단하기보다는, 그 설정이 코드와 변경 이력에 어떻게 적용되는지 살펴봐야 정확히 알 수 있습니다.
저는 답변 품질만큼이나 수집 범위를 미리 알 수 있는지가 AI 코딩 도구를 신뢰하는 데 중요하다고 봅니다. 사용자는 프로젝트를 연결할 때 어떤 자료를 공유하게 되는지 이해할 수 있어야 합니다.
Git에 과거 기록을 남기는 기능은 개발자에게 도움이 됩니다. 다만 그 기록까지 외부로 전송하면 프라이버시 문제가 생길 수 있습니다. 지금 쓰는 AI 도구에 오늘의 코드까지만 접근하도록 허용했는지, 과거 기록까지 허용했는지 확인할 필요가 있습니다.
댓글
댓글을 불러오는 중...