샤오미 MiMo Code CLI, 기본 켜진 텔레메트리 논란…공개 저장소엔 없는 구현이 바이너리에

V2EX18일 전조회 2

중국 개발자 커뮤니티 v2ex에 샤오미의 코딩 에이전트 도구 'MiMo Code' CLI를 둘러싼 분석 글이 올라왔다. 작성자는 MiMo 요금제 자체는 사용할 만하지만 CLI는 쓰지 말라고 권고한다. 문제로 지목된 것은 공식 배포 패키지 v0.1.14(mimocode-windows-x64)에 기본 활성화 상태로 들어간 분석·수집 기능이다.

작성자에 따르면 환경변수 MIMOCODE_ENABLE_ANALYSIS는 기본으로 켜져 있다. Git 저장소 안에서 모델을 호출하는 세션을 한 차례 돌리면 https://tracking.miui.com/track/v4/o 로 trajectory가 전송된다. 이때 함께 나가는 항목은 설치 UUID, 세션 ID, 사용 모델, 시스템·CPU·메모리 정보, 타임존이다. 원격 저장소 주소(origin)가 없는 경우에는 주소 필드가 local:<설치 UUID>:<저장소 절대 경로> 형태로 채워져 로컬 경로가 외부로 나갈 수 있다. 다만 원격 URL에 포함된 토큰은 남지 않는다고 한다.

같은 세션에서 system prompt, 대화 내용, 최종 답변, 코드 diff를 zstd로 묶는 경로도 확인됐다. 포맷 이름은 mimocode.trajectory.v2이며, 압축과 청크 분할, 재시도 로직까지 연결돼 있지만 현재 POST되는 JSON에는 이 압축 데이터 필드가 빠져 있다고 작성자는 설명한다. 코드베이스 수집 함수 collectCodebase는 Git 추적 파일과 .gitignore에 걸리지 않은 미추적 파일을 최대 2000개, 합계 5MB 한도로 읽어 압축하도록 구현돼 있다. 다만 바이너리 안에서 이 이름은 한 번만 등장하고 호출되는 곳이 없어, 현재로서는 이 경로로 소스가 빠져나가지는 않는다는 것이 작성자의 관찰이다.

핵심 쟁점은 공개 소스와 배포본의 차이다. 공개 저장소 XiaomiMiMo/MiMo-Code의 main 브랜치에는 이 구현들이 없다. 공식 설치 패키지는 빌드 시점에 외부 디렉터리 mimoapi/packages/opencode/src/ext 에서 해당 코드를 끼워 넣는 방식이며, 접합부는 packages/opencode/script/build.ts 다. 이 스크립트는 빌드 머신에 해당 경로가 존재하면 바이너리에 복사한다. 즉 공개 소스를 직접 빌드한 결과물과 공식 배포본은 내용이 다를 수 있다.

실무에서는 MIMOCODE_ENABLE_ANALYSIS=false 또는 0으로 위 수집을 끌 수 있다. 반면 MIMOCODE_PURE 값으로는 꺼지지 않는다. 공개 소스에서 직접 컴파일한 빌드에는 이 코드가 포함되지 않는다고 작성자는 덧붙인다. 사내 저장소에서 이 CLI를 쓰는 경우 로컬 절대 경로나 저장소 식별 정보가 전송될 수 있으므로, 검증이 필요하면 일회용 저장소를 만들어 테스트하는 편이 안전하다.

작성자는 이 분석이 실기 패킷 캡처가 아닌 정적 분석에 기반한다는 점을 명시했다. 또한 동적으로 재현할 경우 해당 저장소의 Git 신원이 실제로 tracking.miui.com으로 전송된다고 경고한다. 전송 항목과 시점에 대한 최종 확인은 사용자 환경에서 직접 검증해야 한다.

관련 글