ZCodeがGit履歴を含むワークスペース全体を非通知アップロード
15秒でわかる内容解説
2026年9月18日、ZCode開発者のferstarが同アプリのワークスペース全体を暗号化してアップロードする機能を実証した。ログイン状態であれば、ユーザーのGit履歴や設定ファイルがAlibaba Cloudへ送信される。
ログイン中のワークスペース全体をAlibaba Cloudへアップロード
ZCodeは、ユーザーがログインしている間、ワークスペース全体をアーカイブ化してAlibaba CloudのOSS(オブジェクトストレージ)へ非通知でアップロードする。この動作はエージェントのツールではなく、ホストレベルのサイドカーとして起動時に無条件にインスタンスされる。セッションログでは、単一のアクティブセッション中に62回のキャプチャイベントが記録された。
Session logs showed 62 capture events from a single active session, triggered before every prompt and on task completion.
セッションログでは、単一のアクティブセッション中に62回のキャプチャイベントが記録され、プロンプト前とタスク完了時にトリガーされていた。
アップロードされるデータは、単なる現在のファイルスナップショットではない。Gitのオブジェクトストア(リポジトリの初期からの完全な履歴)を含むため、削除されたAPIキーや未公開のブランチ名、内部ホスト名などが含まれる可能性がある。研究者のキャプチャでは、345MBの商業用ワークスペースから313MBの暗号化アーカイブが生成された。これは4万2,411ファイルから構成される。
| コンテンツ | サイズ | 割合 |
|---|---|---|
| .git/lfs/ | 196.1 MB | 56.8% |
| .git/objects/ | 102.2 MB | 29.6% |
| .git/logs/ | 0.6 MB | 0.2% |
| ソースコードとドキュメント | 46.2 MB | 13.4% |
アップロードされたデータは、サーバーのみが復号可能な鍵で暗号化されている。ZCodeはエンベロープ暗号化を使用し、対称鍵でペイロードを、RSA-OAEP公開鍵で対称鍵をラップする。この公開鍵はサーバーから提供され、対応する秘密鍵はZ.aiのクラウドにのみ存在する。
The exfiltration pipeline is not an agent tool; it is a host-level sidecar instantiated outside the tool loop.
データを外部へ送るパイプラインはエージェントのツールではなく、ツールループの外でインスタンス化されるホストレベルのサイドカーである。
「Optimize Experience」や「Repo Snapshot Indexing」を設定でオフにしても、データのローカルパッケージングとアップロードは継続する。これらのスイッチは、モデル学習へのデータ使用許可やサーバー側のインデックス作成を制御するだけで、アップロード自体を止めるものではない。
クライアント自身でも解読できない313MBの暗号化アーカイブ
ZCodeがアップロードするアーカイブの構成は、Git関連ディレクトリが大半を占める。
| コンテンツ | サイズ | 割合 |
|---|---|---|
| .git/lfs/ | 196.1 MB | 56.8% |
| .git/objects/ | 102.2 MB | 29.6% |
| .git/logs/ | 0.6 MB | 0.2% |
| ソースコードとドキュメント | 46.2 MB | 13.4% |
.git/lfs/(Large File Storageのキャッシュ)が56.8%、.git/objects/(Gitオブジェクトストア)が29.6%を占める。これら2つだけで86.6%を占め、ソースコードやドキュメントは13.4%に過ぎない。Gitオブジェクトストアは作業ツリーのスナップショットではなく、リポジトリの完全な系譜であるため、過去のすべての変更が含まれる。
アップロードパイプラインは、クライアントがzcode.z.aiから認証情報を取得し、OSSフォーム署名やRSA公開鍵を受け取る。その後、ワークスペースをtar.gzにパックし、AES-256-CTRで暗号化して対称鍵をラップし、OSSへPOSTする。OSSはZ.aiのバックエンドにコールバックを送り、スナップショットを登録する。テスト中、クライアントはzcode.z.aiと2つのAliyun OSSノードに永続的な接続を維持していた。
この暗号化方式により、ユーザー自身やZCodeクライアント自身でも313MBの暗号化アーカイブを解読できない。ferstarはローカルシステムのすべての秘密鍵を試したが失敗した。
The 313MB ciphertext sitting on the user’s own disk cannot be decrypted by the user or by the ZCode client itself.
ユーザー自身のディスクにある313MBの暗号文は、ユーザー自身やZCodeクライアント自身では解読できない。
ZCodeのプライバシーポリシーには、ワークスペース全体やGit履歴のアップロードに関する記載がない。ポリシーでは「会話中に提出されたテキスト、ファイル、コード」のみが収集対象とされている。Z.aiはZCodeのウェブサイトやFAQで、ワークスペース全体のアップロードについて言及していなかった。
クローズドソースのエージェントは信頼できないと警告
ferstarの投稿は公開から13時間で276,000ビューを超え、中国語の警告スレッドも63,800ビューを集めた。コミュニティの反応では、クローズドソースのエージェントは信頼できないという意見が強く、オープンソースのハース(Opencode, Pi, Hermesなど)の利用を推奨する声が多い。
GLMやDeepSeekなどのモデル自体も、ドットファイルや.gitignore内のファイルを読み取ろうとする傾向があり、ZCodeの問題は「ローカル実行」というコンセプトの限界を示すものだとする考察も見られた。
Petri Kuittinenは、セキュリティドキュメントを持つオープンソースのエージェントを使用しており、「クローズドソースのAIハースを信頼するな」というアドバイスを出している。Z.aiの公式Xアカウントは記事公開時点でferstarの投稿への返信をしておらず、ZCodeチーム関連のアカウントが「hey I am sorry to let you find it」と返信したのみだった。
ZCodeは2026年7月にリリースされ、AnthropicのClaude Codeの隠れテレメトリー問題の直後に、オープンウェイトモデルのescape(脱出)として信頼を売りにしていた。Z.aiの執行役員は、ZCodeに「ウェブサイトに記載されたもの以外」のスプライウェア(スパイウェア)を実装しないと答えていた。しかし、ワークスペースのスナップショット機能はウェブサイトには記載されていなかった。
ファイルシステムレベルで書き込みを禁止する対処法
保留中のアーカイブを削除しても、クライアントは30分以内に新しい313MBのアーカイブを再パッケージする。有効な修正法は、ファイルシステムレベルでチェックポイントディレクトリへの書き込みを禁止することだ。
Linuxでは、~/.zcode/v2/checkpointsディレクトリを削除し、再作成後にsudo chattr +iで不変属性を設定する。macOSではchflags uchgを使用する。この方法により、チェックポイントのロールバックUIは機能しなくなるが、チャット、オートコンプリート、ツール呼び出しは通常通り動作する。
Z.aiは2026年1月に香港証券取引所に上場している。公式な修正や開示変更の発表は、記事公開時点では確認されていない。Tokensteadはエージェントハースのテレメトリ動作を追跡しており、Z.aiが修正や開示変更、声明を発表すれば更新される予定だ。
出典
- ZCode, the GLM coding agent, silently uploads your Git history(Hacker News) · 議論