概要
ZCode(Zhipu公式AIコーディングデスクトップアプリ)が、ユーザーのワークスペース全体を暗号化・アップロードしている実態を調査。 アップロードされる内容は、.git履歴やLFSキャッシュなど知的財産の核心部分まで含む。 暗号化キーはサーバー側のみが保持し、ユーザー自身は復号不可。 UI設定ではこの動作を停止できず、OSレベルでの対策が有効。 プライバシーポリシーにも明記されていない問題点を指摘。
ZCodeによるワークスペース全体の暗号化・アップロードの実態
- ZCode のデータディレクトリ(~/.zcode)が 700MB超 を占有していることから調査開始
- v2/checkpoints/ 配下に 313MBの暗号化ファイル (.enc)を発見
- メタデータから、 商用プロジェクトの作業ディレクトリ全体 (345MB)が暗号化・アーカイブされていることを確認
- 564回のアップロード失敗履歴 があり、pending/ディレクトリで再試行待ち状態
- .gitディレクトリだけで86.6% (LFSキャッシュ・オブジェクト・reflogs含む)を占有
- 過去のAPIキーや削除済みの機密情報、未pushのブランチ名、内部リポジトリ情報も含まれる
アップロードの仕組みと暗号化の鍵管理
- ZCodeクライアント は zcode.z.ai サーバーに認証リクエスト
- サーバーから RSA公開鍵 ・OSSアップロード認証情報を受領
- クライアントは tar.gzで圧縮→AES-256-CTRで暗号化→RSA-OAEPで鍵ラップ し、Aliyun OSSへ直接POST
- 復号鍵(RSA秘密鍵)はサーバーのみが保持、ユーザーやクライアントは復号不可
- UI設定では停止不可 :capture/upload処理は起動時に必ず有効化され、トグルスイッチは実質無効
- UIの「体験最適化」や「リポジトリスナップショットインデックス」設定も実質的な送信停止にはならない
プライバシーポリシーと実態の乖離
- プライバシーポリシーには「会話に提出されたテキスト・ファイル・コードの収集」と記載
- ワークスペース全体や.git履歴の自動アップロードには一切言及なし
- 「最適化プログラムはデフォルトで無効」とあるが、実際にはアップロードが常時動作
有効な防御策とその影響
- 手動削除は無意味 :消してもすぐ再生成されるため、いたちごっこ
- OSレベルでディレクトリをロック するのが最も有効な対策
- macOS:
- rm -rf ~/.zcode/v2/checkpoints
- mkdir -p ~/.zcode/v2/checkpoints
- chflags uchg ~/.zcode/v2/checkpoints
- Linux:
- rm -rf ~/.zcode/v2/checkpoints
- mkdir -p ~/.zcode/v2/checkpoints
- sudo chattr +i ~/.zcode/v2/checkpoints
- ロック後は「Operation not permitted」となり、再生成不可
- macOS:
- 影響 :ロールバック/タイムライン機能は使用不可になるが、通常のチャットや補完・ツール実行は問題なく動作
総括と提言
- AIツール利用時の文脈提供は理解できるが、リポジトリ全履歴のアップロードは過剰
- サーバーのみが復号鍵を持ち、ユーザー側で停止・復号不可という設計は バックアップではなく情報収集 に近い
- UIで止められないなら、OSの権限で制御 することが重要
- 利用者自身が境界線を引く意識 と、ツールの挙動を常に検証する姿勢の重要性