ZCode âm thầm tải toàn bộ lịch sử Git của bạn lên đám mây
Một nhà phát triển đã giải mã ứng dụng ZCode của Z.ai và phát hiện nó tự động đóng gói toàn bộ workspace, bao gồm cả lịch sử .git, rồi mã hóa và tải lên Aliyun OSS. Chìa khóa giải mã chỉ nằm trên máy chủ của Z.ai, còn các tùy chọn trong giao diện không hề ngăn chặn được quá trình này.

ZCode âm thầm tải toàn bộ lịch sử Git của bạn lên đám mây
Một nhà phát triển có biệt danh ferstar đã công bố bản phân tích dịch ngược ứng dụng ZCode — công cụ lập trình AI trên máy tính để bàn của Z.ai, công ty có trụ sở tại Bắc Kinh đứng sau dòng mô hình mở GLM. Phát hiện này gây chấn động hơn cả những bê bối quyền riêng tư thông thường: mỗi khi ứng dụng đăng nhập, nó lặng lẽ đóng gói toàn bộ workspace của người dùng — bao gồm cả lịch sử .git đầy đủ, bộ nhớ đệm LFS, reflog và cấu hình ứng dụng toàn cục — rồi mã hóa và tải lên Aliyun OSS, dịch vụ lưu trữ đối tượng của Alibaba Cloud.
Bản kê khai manifest được lưu cục bộ
Chuyện gì thực sự được đóng gói?
Bản kê khai đóng gói được lưu cục bộ dưới dạng văn bản thuần, và nó rất cụ thể. Với một bản chụp gồm 42.411 tệp, cấu trúc như sau:
- .git/lfs/ — 196,1 MB — 56,8%
- .git/objects/ — 102,2 MB — 29,6%
- .git/logs/ — 0,6 MB — 0,2%
- Mã nguồn và tài liệu — 46,2 MB — 13,4%
Như vậy chỉ riêng thư mục .git đã chiếm tới 86,6% trọng lượng của gói dữ liệu được mã hóa.
Kho đối tượng git không phải là bản chụp cây làm việc hiện tại — đó là toàn bộ dòng dõi của kho lưu trữ kể từ ngày đầu tiên.
Điều này đặc biệt nguy hiểm bởi trong đó chứa đựng những thứ mà lẽ ra không bao giờ được rời khỏi máy: khóa API từng bị xóa ở những commit sau, tên nhánh chưa đẩy lên lộ ra kế hoạch sản phẩm chưa công bố, hay tên máy chủ nội bộ và đường dẫn repo trong file .git/config. Một bản lưu bị thu giữ là nhiều năm lịch sử kỹ thuật, chứ không chỉ là vài tệp bạn đang mở.
Chìa khóa chỉ máy chủ mới dùng được
Chi tiết biến một thư mục đáng ngờ thành câu chuyện nghiêm trọng chính là chìa khóa mã hóa. ZCode dùng phương pháp mã hóa phong bì (envelope encryption): dữ liệu được mã hóa bằng khóa đối xứng, rồi khóa đó lại được bọc bằng khóa công khai RSA-OAEP. Khóa công khai này do máy chủ cung cấp trong quá trình thương lượng thông tin xác thực tải lên. Khóa riêng tương ứng chỉ nằm duy nhất trên đám mây của Z.ai.
ferstar đã thử giải mã kho lưu trữ bằng mọi khóa riêng trên hệ thống cục bộ và đều thất bại. Khối mã hóa 313MB nằm ngay trên đĩa của người dùng nhưng chính người dùng lẫn ứng dụng ZCode đều không thể đọc được.
"Một chìa khóa mà chỉ máy chủ mới dùng được phục vụ đúng một mục đích: đảm bảo máy chủ có thể đọc mã của bạn bất cứ khi nào họ muốn." — ferstar
Các nút bật tắt không hề ngăn chặn
Phản ứng tự nhiên là mở phần cài đặt. ferstar đã đối chiếu các công tắc trên giao diện với mã nguồn:
- "Optimize Experience" (
optimizeAgentExperienceEnabled) chỉ kiểm soát việc dữ liệu có được phép dùng để huấn luyện mô hình hay không. Việc chụp ảnh và tải lên vẫn tiếp diễn. - "Repo Snapshot Indexing" (
repoSnapshotIndexingEnabled) chỉ kiểm soát việc máy chủ có đánh chỉ mục các bản chụp đã tải lên hay không. Việc đóng gói cục bộ và tải lên vẫn tiếp diễn.
Tiến trình host khởi tạo sidecar thu thập một cách vô điều kiện ngay khi khởi động, không hề phụ thuộc vào tùy chọn của người dùng — điều kiện duy nhất là nhà cung cấp token tạo được JWT hợp lệ. Nhật ký phiên cho thấy 62 sự kiện thu thập từ một phiên hoạt động duy nhất, kích hoạt trước mỗi câu lệnh và khi hoàn thành tác vụ.
Bằng chứng từ prompt hệ thống
Đáng chú ý là bộ công cụ đầy đủ của agent không hề chứa công cụ chụp ảnh, tải lên hay telemetry nào. Đường ống tuồn dữ liệu không phải là một công cụ của agent — nó là một sidecar cấp host được khởi tạo bên ngoài vòng lặp công cụ. Đó là lý do không có thiết lập quyền nào ngăn được nó, và lý do bản thân agent không bao giờ nhìn thấy nó. Trong suốt 131KB hướng dẫn hệ thống bị rò rỉ, không có bất kỳ đề cập nào tới Aliyun, OSS, việc tải lên hay quyền riêng tư.
Chính sách bảo mật không hề nhắc tới
Chính sách bảo mật của ZCode nêu rằng công cụ thu thập "văn bản, tệp và mã được gửi trong các cuộc trò chuyện" — đúng kiểu công bố ngữ cảnh suy luận tiêu chuẩn mà mọi công cụ lập trình AI đều đưa ra. Nhưng xuyên suốt chính sách, FAQ và nhật ký thay đổi, ferstar không tìm thấy bất kỳ đề cập nào về việc đóng gói và tải lên toàn bộ workspace lẫn lịch sử git. Dòng gần nhất chỉ là một câu mẫu nói rằng chương trình tối ưu hóa mặc định đang tắt.
Bối cảnh khiến mọi thứ tồi tệ hơn
ZCode ra mắt vào tháng 7 năm 2026, và lời chào hàng khi ra mắt dựa trực tiếp vào niềm tin. Z.ai định vị công cụ này đối đầu với Claude Code của Anthropic chỉ vài tuần sau vụ bê bối telemetry ẩn của Claude Code, với mô hình mở được quảng bá như lối thoát khỏi vấn đề "công tắc tiêu diệt". Một giám đốc điều hành của Z.ai, khi được hỏi trên X liệu ZCode có chứa "bất kỳ loại phần mềm gián điệp nào" không, đã trả lời rằng công ty sẽ không triển khai "bất cứ thứ gì ngoài những gì được liệt kê" trên website của ZCode.
Việc chụp ảnh workspace không được liệt kê trên website của ZCode.
Z.ai đã niêm yết trên Sở Giao dịch Chứng khoán Hồng Kông vào tháng 1 năm 2026. Tài khoản X chính thức của công ty chưa phản hồi bài đăng của ferstar tại thời điểm công bố. Phản hồi nổi bật nhất đến từ một tài khoản liên kết với đội ngũ ZCode — "hey I am sorry to let you find it" — nghe như lời xác nhận về cơ chế, chứ không phải phản bác.
Cách khắc phục hiệu quả
Xóa kho lưu trữ đang chờ không có tác dụng: ứng dụng lại đóng gói một kho mới 313MB trong vòng nửa giờ, bộ đếm thử lại vẫn tăng. Giải pháp thực sự hiệu quả nằm ở cấp hệ thống tệp — khiến thư mục checkpoints không thể ghi ở cấp nhân hệ điều hành:
Linux:
rm -rf ~/.zcode/v2/checkpoints
mkdir -p ~/.zcode/v2/checkpoints
sudo chattr +i ~/.zcode/v2/checkpoints
macOS:
rm -rf ~/.zcode/v2/checkpoints
mkdir -p ~/.zcode/v2/checkpoints
chflags uchg ~/.zcode/v2/checkpoints
Đánh đổi là: tính năng rollback trên giao diện sẽ ngừng hoạt động — một tính năng vốn dĩ yêu cầu tải mã của bạn lên ngay từ đầu. Trò chuyện, tự động hoàn thành và gọi công cụ vẫn hoạt động bình thường. Khôi phục bằng chattr -i hoặc chflags nouchg.
Ý nghĩa đối với cộng đồng chạy mô hình cục bộ
Chạy mô hình mở ngay trên máy là lời chào hàng hấp dẫn: mô hình của bạn, phần cứng của bạn, không hóa đơn theo token, không bị nhà cung cấp tắt dịch vụ. Câu chuyện ZCode làm sắc nét hơn vấn đề vượt ra ngoài tầng mô hình. Môi trường chạy quanh mô hình — công cụ, ứng dụng máy tính để bàn, đường ống cập nhật — đều là một phần của bề mặt tin cậy, và một mô hình chạy cục bộ nhưng bọc trong công cụ gọi điện về đám mây thì không còn là cục bộ nữa.
Hai câu hỏi cần đặt ra, và chúng áp dụng cho mọi công cụ trong lĩnh vực này, không riêng ZCode:
- Khi bạn đăng nhập, môi trường chạy truyền đi những gì?
- Ai có thể giải mã những gì nó lưu trữ?
Đối với người dùng Việt Nam đang ngày càng quen với các công cụ lập trình AI, đây là lời nhắc nhở thiết thực: mã nguồn và lịch sử git thường là tài sản cốt lõi của doanh nghiệp, và việc để chúng rời khỏi máy mà không có sự đồng thuận rõ ràng là rủi ro không thể xem nhẹ.
Nguồn tham khảo:
- Inside ZCode: Silently Uploading Your Entire Git History to the Cloud — ferstar, 18/09/2026
- ferstar trên X — chủ đề tóm tắt, 276.000 lượt xem
- FeiZ trên X — chủ đề cảnh báo tiếng Trung, 63.800 lượt xem
- Nhật ký thay đổi và bản phát hành ZCode — Z.ai chính thức
- Thảo luận trên V2EX
Bài viết liên quan

Công nghệ
CEO Percona: Cơ sở dữ liệu lý tưởng cho AI agent vẫn chưa tồn tại
18 tháng 9, 2026

Công nghệ
Passkey: Giải pháp bảo mật hoàn hảo hay cơn ác mộng tiềm ẩn cho người dùng cá nhân?
18 tháng 9, 2026
Công nghệ
Bend 2 và cái bẫy 'vibe-coding': Khi lập trình viên xây cả một ngôn ngữ mà không biết lĩnh vực của mình đã tồn tại
18 tháng 9, 2026