HN 日本語サマリー

← 一覧へ戻る
セキュリティ

GLMコーディングエージェントZCodeは、Git履歴を静かにアップロードする

ZCode, the GLM coding agent, silently uploads your Git history (tokenstead.ai)

227 pointsby cdnsteve51 コメント

要約

AIコーディングアプリZCodeが、ログイン中にユーザーのワークスペース全体(Git履歴、LFSキャッシュ、reflogsなど)を暗号化し、Aliyun OSSにアップロードしていることが判明しました。このアップロードは、設定のトグルやプライバシーポリシーに記載がなく、ユーザーの同意なしに行われており、ベンダーのみが復号できる鍵で暗号化されているため、深刻なプライバシー懸念を引き起こしています。

全文翻訳

ZCodeはあなたのGit履歴全体をアップロードし、Z.aiのみが鍵を保持

2026年9月18日、ferstarという開発者が、GLMファミリーのオープンウェイトモデル(ローカルAIコミュニティで広く利用されているGLM-5.3-Flashなど)を開発した北京拠点のZ.aiによるAIコーディングデスクトップアプリ「ZCode」のリバースエンジニアリング解説を公開しました。その発見は、多くのプライバシー侵害スキャンダルの中でも特に深刻なものです。アプリにログインしている間、ユーザーのワークスペース全体(完全な.git履歴、LFSアセットキャッシュ、リファログ、グローバルアプリ設定)を静かにパッケージ化し、暗号化して、Alibaba CloudのオブジェクトストレージであるAliyun OSSにアーカイブをアップロードします。研究者自身が記録したデータによると、345MBの商用ワークスペースから生成された313MBの暗号化アーカイブは、42,411ファイルを含み、研究者が調査中に564回のアップロード失敗が記録されていました。

ローカルでGLMを実行している場合、ウェイトを公開している企業と、開発者がその上に使用するランタイムは同じものではありません。スレッドの反応は、GLMがオープンソースであるためZCodeもオープンソースだと誤解していたコメントが多く見られ、混乱が生じていることを示しています。ZCodeはオープンソースではありません。ウェイトはオープンですが、ハーネス(実行環境)はクローズドであり、Z.ai自身のモデルのためのもので、どのサードパーティエディタも匹敵できないファーストパーティ統合として宣伝されています。

この件は数時間のうちに両言語で広まりました。ferstarの投稿は276,000ビューを超え、FeiZによる中国語のアラートスレッド(「ZCodeは現時点で使用を停止してください…可能な限りオープンソースのエージェントを使用するのが最善です」)はさらに63,800ビューを集めました。最も引用された応答は、Petri Kuittinen(自身のAIエージェントをセキュリティドキュメント付きでオープンソース化している)からのもので、「私の助言はこれまでも、これからも同じです:クローズドソースのAIハーネスを信用しないでください。」とのことです。

疑わしいディレクトリを記事にした決定的な詳細:それは暗号化鍵です。ZCodeはエンベロープ暗号化を使用しています。ペイロードは対称鍵で暗号化され、その鍵はRSA-OAEP公開鍵でラップされます。公開鍵は、アップロード資格情報ネゴシエーション中にサーバーから提供されます。対応する秘密鍵はZ.aiのクラウドにのみ存在します。ferstarはローカルシステム上のすべての秘密鍵でアーカイブをアンラップしようとしましたが、失敗しました。ユーザー自身のディスク上にある313MBの暗号文は、ユーザー自身やZCodeクライアントでは復号できません。

ferstarの結論は、投稿から引用すると次のようになります。「サーバーだけが使用できる鍵は、ただ一つの目的のために存在します。それは、サーバーが望むときにいつでもあなたのコードを読み取れるようにすることです。」

パッケージ化されるもの

パッケージングマニフェストはローカルにプレーンテキストで保存され、具体的です。42,411ファイルのスナップショットの場合:

コンテンツサイズ共有
.git/lfs/196.1 MB56.8%
.git/objects/102.2 MB29.6%
.git/logs/0.6 MB0.2%
ソースコードとドキュメント46.2 MB13.4%

.gitディレクトリだけでペイロードの86.6パーセントを占めます。これは重要です。なぜなら、gitオブジェクトストアは作業ツリーのスナップショットではなく、リポジトリの初日からの完全な系統だからです。後続のコミットで削除されたAPIキーもそこに含まれています。未プッシュのブランチ名(未公開製品計画を示すもの)も含まれています。.git/configからの内部ホスト名やリポジトリパスも含まれています。キャプチャされたアーカイブは、あなたが開いていたファイルではなく、何年にもわたるエンジニアリングの履歴です。

クライアントのapp.asarから再構築されたアップロードパイプライン:クライアントはzcode.z.aiに資格情報を要求し、それに対してOSSフォーム署名、オブジェクトキー、サイズキャップ、およびラウンドごとのRSA公開鍵が返されます。クライアントはワークスペースをtar.gzにパッケージ化し、AES-256-CTRで暗号化し、対称鍵をラップして、アーカイブを直接Aliyun OSSにPOSTします。Aliyun OSSはZ.aiのバックエンドにコールバックしてスナップショットを登録します。実行中のクライアントは、テスト中にzcode.z.aiと2つのAliyun OSSノードへの永続的な接続を維持していました。

トグルでは停止しない

自然な次のステップは設定を開くことです。ferstarはUIスイッチとコードをクロスリファレンスしました:

  • 「Optimize Experience」(optimizeAgentExperienceEnabled)は、データがモデルトレーニングに許可されるかどうかのみを制御します。スナップショットのキャプチャとアップロードは継続されます。
  • 「Repo Snapshot Indexing」(repoSnapshotIndexingEnabled)は、サーバーがアップロードされたスナップショットをインデックス化するかどうかのみを制御します。ローカルでのパッケージ化とアップロードは継続されます。

ホストアセンブリは、起動時にキャプチャサイドカーを無条件にインスタンス化します。ユーザー設定によるゲートはなく、唯一の要件はトークンプロバイダーが有効なJWTを生成できることです。セッションログは、単一のアクティブセッションから62回のキャプチャイベントを示しており、各プロンプトの前やタスク完了時にトリガーされていました。

第二の情報源がこのメカニズムを裏付けています。OrcaPromptVault(キャプチャされたAIハーネスプロンプトの公開コレクション)には、ZCodeからの131KBのシステムプロンプトと31のツールサーフェスが含まれています。チェックポイント/巻き戻し機能はシステムプロンプトに組み込まれており、「Workspace rewind applied. rewindId, checkpointId, strategy, restoredFiles」というテンプレートが5回出現します。これはスナップショットパイプラインのユーザーインターフェース側の先端であり、ファイルシステムロックによって無効化される機能です。

エージェントの完全なツールサーフェスには、スナップショット、アップロード、またはテレメトリツールは一切含まれていません。流出パイプラインはエージェントツールではなく、ツールループの外でインスタンス化されるホストレベルのサイドカーです。そのため、どの権限設定もそれを停止できず、エージェント自体もそれを認識することはありません。キャプチャされた131KBの指示全体を通して、Aliyun、OSS、アップロード、またはプライバシーに関する言及は一切ありません。

キャプチャは、ferstarが言及しなかった詳細を追加します:ZCodeはReadSessionContextツールを配布しており、これはセッションIDによって他の永続化されたZCodeセッションをオンデマンドで読み取ります。ホストレベルのスナップショットサイドカーと組み合わせることで、セッションコンテンツはローカルに永続化され、クラウドにキャプチャされます。

プライバシーポリシーに記載がない

ZCodeのプライバシーポリシーでは、このツールが「会話中に送信されたテキスト、ファイル、コード」を収集すると記載されています。これは、すべてのAIコーディングツールが提供する標準的な推論コンテキストの開示です。ポリシー全体、FAQ、および変更履歴を通じて、ferstarはワークスペース全体とGit履歴のパッケージ化とアップロードについて言及している箇所を見つけられませんでした。最も近い記述は、最適化プログラムがデフォルトでオフになっているというテンプレート的な声明です。

状況を悪化させる文脈

ZCodeは2026年7月にローンチされ、そのローンチ時のアピールは直接的に信頼性を前面に出していました。Z.aiは、AnthropicのClaude Codeの隠しテレメトリ論争の数週間後に、オープンウェイトをキルスイッチ問題からの脱却として位置づけ、このハーネスを対抗馬として提示しました。XでZCodeに「何らかのスパイウェア」が含まれるか尋ねられたZ.aiの幹部は、同社はZCodeウェブサイトに「記載されている以上のものは何も」実装しないと回答しました。

ワークスペースのスナップショット機能は、ZCodeウェブサイトには記載されていません。

Z.aiは2026年1月に香港証券取引所に上場しました。記事公開時点では、同社の公式Xアカウントはferstarの投稿に返信していませんでした。最も目立った返信はZCodeチーム関連のアカウントからのもので、「すみません、これを見つけさせてしまって」というもので、これはメカニズムの否定ではなく、確認と受け取れます。ferstarのツイートは13時間以内に276,000ビューを超え、V2EXやHN関連チャンネルでの議論スレッドは、主に一つの線で分かれました。エージェントは常に同意を得てツール呼び出し中にコードフラグメントをアップロードする、というものです。しかし、これは同意なしに、ベンダーだけが読めるように暗号化された、リポジトリ全体とその履歴全体です。

効果のある防御策

保留中のアーカイブを削除しても効果はありません。クライアントは30分以内に新しい313MBのアーカイブを再パッケージ化し、リトライカウンターを増やします。効果のある修正はファイルシステムレベルのものです。カーネルレベルでチェックポイントディレクトリを書き込み不可にします:

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

トレードオフとして、チェックポイントのロールバックUIが機能しなくなります。これは、そもそもコードのアップロードを必要とした機能です。チャット、オートコンプリート、ツール呼び出しは通常通り機能します。chattr -iまたはchflags nouchgで復元できます。

ローカル実行にとっての意味

ローカルでオープンウェイトを実行することは、あなたのモデル、あなたのハードウェア、トークンごとの請求なし、ベンダーによる停止なし、というアピールです。ZCodeの件は、モデルレイヤーを超えてその点を際立たせます。モデルを取り巻くランタイム(ハーネス、デスクトップアプリ、アップデートパイプライン)は、信頼のサーフェスの一部であり、クラウドに通信するハーネスに包まれたローカル実行モデルは、ローカルではありません。

これに続いて、ZCodeだけでなく、この分野のすべてのハーネスに適用される2つのチェックがあります。ログイン中にランタイムが何を送信するか、そして誰がそれを保存したものを復号できるかです。Tokensteadは、まさにこの理由でエージェントハーネスとそのテレメトリ動作を追跡しています。Z.aiが修正、開示変更、または声明で応答した場合、この記事は更新されます。

ソース: