← AIバイブコーディングTips 一覧へ Security / AI Tool Trust Boundary

新しいAIコーディングツールを入れる前に、ディスク使用量を見ておく理由

あるAIコーディングツールが、作業フォルダを丸ごと、しかもGitの履歴ごと暗号化して、ユーザーに断りなくクラウドへ送ろうとしていた。見つけたきっかけは、セキュリティ監査ではない。ノートPCの空き容量が足りなくなったことだった。何が送られていたのか、なぜ本人にも中身を開けなかったのかを整理する。あわせて、自分のPCでAIツールのフォルダがどれだけ膨らんでいるかも測った。

この記事で手に入るもの

ZCode事件の経緯と数字(送信対象の86.6%は.gitフォルダで、削除済みのAPIキーも履歴に残っていた)。自分の環境で実測したAIツールのローカル保存量(Codex 8.4GB、Claude 1.7GB)。それを踏まえて、見慣れないツールを入れる前後に確認しておきたい5項目。

01 — 発見の経緯

きっかけは「容量256GBのMacが足りない」だった

開発者のferstar氏は、ストレージ256GBの最小構成のMacBook Airで空き容量を探していた。そのとき、~/.zcodeというフォルダが700MBを超えていることに気づいた。ZCodeは、中国のZhipu(Z.ai)が提供するAIコーディングツールだ。

フォルダを掘ると、v2/checkpoints/だけで303MBあり、その中に313MBの暗号化ファイル(.enc)が1つあった。隣に置かれたメタデータには、次の値が記録されていた。

# メタデータの主な値(元記事の記載より)
"kind": "baseline"
"workspaceSizeBytes": 345549173   # 作業フォルダ 約345MB
"encryptedSizeBytes": 313070842   # 圧縮・暗号化後 約313MB
"failureCount": 564               # 送信に564回失敗していた

564回の失敗は、送信が一度きりの操作ではなく、繰り返し再試行されていたことを示している。失敗したパッケージがディスクに残り続けたため、容量が膨らんでいた。送信が成功し続けていたら、ディスクに痕跡は残らず、気づかれなかった可能性が高い。


02 — 何が送られていたか

中身の9割近くは、ソースコードではなく.gitだった

氏がクライアントを解析したところ、ZCodeはzcode.z.aiの/api/v1/snapshot/upload-credentialから一時的な認証情報を受け取り、Aliyun OSS(Alibaba Cloudのオブジェクトストレージ)へ直接アップロードする作りだった。パッケージには42,411ファイルが含まれ、内訳は次の通り。

中身容量比率何が含まれるか
.git/lfs/(LFSキャッシュ)196.1MB56.8%Git LFSで管理している大きなファイルの実体
.git/objects/(コミット履歴)102.2MB29.6%過去のすべての版。後のコミットで消した秘密情報も含む
.git/logs/(reflog)0.6MB0.2%ブランチ操作の記録。未pushのローカルブランチ名も出る
ソースコード・ドキュメント約46.2MB13.4%いま見えているファイル

氏は、後のコミットで削除したはずの過去のAPIキーや機密設定が履歴ごと含まれていたことを指摘している。「最新版からは消したから大丈夫」という感覚は、.gitごと持ち出されると通用しない。

01

本人には復号できない暗号化

中身はAES-256-CTRで暗号化され、その鍵をサーバーから渡されたRSA公開鍵で包む「エンベロープ暗号化」だった。対になる秘密鍵はサーバー側にしかない。つまり自分のディスクにある313MBの暗号文を、自分では開けない。何が入っているのかを確かめる手段すら、ユーザーには無かったことになる。

02

設定をオフにしても止まらなかった

影響のあった3.12.3では、「Optimize Experience」や「Repo Snapshot Indexing」といった関連しそうなトグルをオフにしても、アップロードは止まらなかったと報告されている。設定画面で送信を切ったつもりでも、実際に止まったとは限らない。

ここが核心。AIツールに渡る情報は「チャットに貼ったもの」だけとは限らない。作業フォルダを開いた時点で、そのフォルダの.gitに入っている過去のすべてが、ツールの手の届く範囲に入る。


03 — その後

9月18日の説明から、3.14.0で送信コードが消えるまで

古いバージョンを使い続ける人に向けて、氏はチェックポイントのフォルダを空にしたうえで、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

# 元に戻す: chflags nouchg / sudo chattr -i

ただし、これは特定バージョンの特定パスに対する応急処置だ。一番確実なのは、送信コードが削除された版へ更新するか、使うのをやめることだろう。


04 — 自分の環境で測った

AIツールのフォルダは、思っていたより大きかった

他人事として読む前に、自分のWindows機で、普段使っているAIツールのホームフォルダを測った(2026-09-30時点)。

フォルダ合計大きい中身
~/.codex(Codex)約8.4GB・9,052ファイルsessions 約5.0GB、会話履歴のSQLite 約835MB、archived_sessions 約647MB、ログのSQLite 約302MB
~/.claude(Claude Code)約1.7GB・1,619ファイルprojects(会話記録)約1.67GB、file-history(編集前のファイル控え)約56MB

誤解のないように書いておくと、これはZCodeと同じことが起きているという話ではない。どちらも会話の記録や編集履歴をローカルに残しているだけで、容量を見ただけでは送信の有無はわからない。ただ、この数字から言えることが2つある。

01

コードと会話の「写し」が、ホームフォルダに溜まっていく

会話にはコードの断片や、うっかり貼った設定値も入る。数GB単位の記録が、プロジェクトフォルダの外に溜まっているということだ。バックアップやクラウド同期の対象に入れていないかは、ツールの挙動とは別に確認しておきたい。

02

「普段の大きさ」を知っていれば、異常に気づける

ZCodeの件も、発覚の糸口は容量の異常だった。導入直後と1か月後の大きさを一度見ておけば、見慣れない.encや急な膨張に気づける。数字の基準を持っていなければ、700MBが多いのかどうかも判断できない。


05 — 持ち帰れること

見慣れないAIツールを入れる前後のチェックリスト

✓
秘密を消したコミットがあるリポジトリでは試さない最新版から消しても、.gitに残っている。初めて使うツールは、履歴の浅い使い捨てのリポジトリで試す。漏れたキーは、履歴を消すより先にローテーションする。
✓
ホームフォルダに何を作るかを見る導入直後と数日後に~/.ツール名の容量と中身を確認する。自分で開けない暗号化ファイルがあれば、何のためのものかを調べる。
✓
設定のオフを過信しない「送信しない」設定を切り替えても、実際に止まったかは通信やファイルの変化でしか確かめられない。
✓
送信先とデータの扱いを規約で確認するどのクラウドに、何を、どれくらいの期間保存するか。明記されていないツールは、業務のリポジトリでは使わない。
✓
ローカルの会話記録も資産として扱う数GBの記録を同期・バックアップ対象に入れるかどうかは、自分で決めておく。

AIツールの信頼境界については、過去にも別の角度から書いている。GitHub CopilotをMitMプロキシ越しに覗いたら、.envの秘密が漏れていたは「通信を見る」側から、Atlassian Rovoのデータ持ち出し実例は「権限の内側でも漏れる」側から扱った記事だ。今回の件は、そこに「ディスクから気づく」という3つ目の入口を足すものになる。

出典: ferstar「ZCode silent workspace snapshot upload」(blog.ferstar.org、2026-09-18)、Hacker Newsでの議論(237pt)。容量の数値は元記事の記載による。第4章は筆者環境での実測。