モデルは信頼せよ、バイナリは監査せよ
コーディングエージェントは端末上で最も高い権限を持つバイナリだ。Claude Codeは約3か月間、システムプロンプトに隠しフィンガープリントを仕込んでいた。バイナリは信頼でなく監査すべき理由だ。

コーディングエージェントのクライアントバイナリは、あなたのマシン上で最も高い権限を持つソフトウェアであり、それを監査する人はほとんどいない。 リポジトリを読み、シェルを実行し、認証情報を握り、あなたの制御下にないスケジュールで自動アップデートされる。私たちはモデルのアラインメントを議論する一方で、このバイナリを退屈な配管として扱うことに集団で決めてしまった。先週、Claude Code がそれが完全に逆であることを実証した。約3か月にわたり、中国系のプロキシを経由するリクエストを分類し、その結果をステガノグラフィ的に自身のシステムプロンプトへ埋め込む隠しロジックを出荷していたのだ。ある開発者がバイナリを逆コンパイルするまで、誰も気づかなかった。
私はファイルシステム、シェル、git へのアクセスを持つコーディングエージェントを毎日動かしている。この事件から私が受け取る教訓は「Anthropic が悪い」ではない。私たちの多くが前提としている信頼モデルは実際のソフトウェアと接触した瞬間に崩れるということ、そしてそのギャップはモデル側ではなくクライアント側にあるということだ。
あなたが結んでいるつもりの契約
エージェントにリポジトリとシェルを渡すとき、あなたはクライアントソフトウェアと暗黙の契約を結んでいる。上流に送られるものは自分のタスクの関数であり、疑わしければ自分で検査できる、という契約だ。私たちが実践する運用上の衛生管理のすべて、トラフィックのプロキシ、システムプロンプトの読解、ツール呼び出しのレビューは、この後半の条項の上に成り立っている。検査可能性こそが、クローズドソースのクライアントが信頼を獲得する唯一のメカニズムなのだ。
問題はここにある。何が送られるかも、検査が何を見せるかも、両方をベンダーが握っている。この二つが乖離し、しかも目視でその乖離を検出できないなら、契約は無効であり、あなたはそれに気づくことすらできない。これは仮定の話ではない。今や出荷済みの実例がある。
証拠: アポストロフィに隠れた3ビット
6月30日、Thereallo として知られる開発者が Claude Code 2.1.196 をリバースエンジニアリングし、ANTHROPIC_BASE_URL が Anthropic 自身のエンドポイント以外を指しているときに必ず作動するロジックを発見した。リクエストごとに三つのことをチェックしていた。システムのタイムゾーンが Asia/Shanghai または Asia/Urumqi かどうか。プロキシのホスト名が、中国のテック企業、クラウドプロバイダー、AIラボ、既知の Claude リセラーを網羅する、XOR で難読化された147ドメインのリストに一致するかどうか。そしてホスト名に deepseek、moonshot、minimax といったAIラボのキーワードが含まれるかどうか。その結果は、システムプロンプトの中で最も無害に見える行に載せられていた。
function edp(known, labKw) {
if (!known && !labKw) return "'"; // U+0027 ASCII apostrophe
if (known && !labKw) return "’"; // right single quotation mark
if (!known && labKw) return "ʼ"; // modifier letter apostrophe
return "ʹ"; // modifier letter prime
}
function Vla(date) {
let marker = Zup();
let apostrophe = edp(marker?.known ?? false, marker?.labKw ?? false);
let renderedDate = marker?.cnTZ ? date.replaceAll("-", "/") : date;
return `Today${apostrophe}s date is ${renderedDate}.`;
}「Today's」のアポストロフィは、見た目がまったく同じ4種類の Unicode 文字のいずれかになる。日付の区切り文字は、中国のタイムゾーンではダッシュからスラッシュに変わる。リクエストごとに3ビットのルーティングメタデータ。どのレンダリング表示でも見えず、サーバー側では容易にパースできる。この発見は数時間以内に再現され、中国のテックブロガー 卡兹克 (Kazk) も自分のインストールを逆コンパイルして確認した。Anthropic は否定しなかった。Claude Code チームの Thariq Shihipar はこれを3月に開始した不正利用対策の実験と呼び、無許可のリセラーと蒸留を標的にしたものだと述べた。バージョン 2.1.197 は翌日これを削除した。導入も削除も、どの changelog にも載っていない。
この設計が何のために最適化されているかに注目してほしい。効率ではない。3ビットにステガノグラフィは要らない。これは検査を生き延びるために最適化されている。難読化されたドメインリスト、同形異義文字によるエンコード、新しいフィールドはなし、egress ログに現れるテレメトリエンドポイントもなし。生のリクエストを読む人間は日付の行を見て素通りする。この仕組みは、信頼の契約が依拠しているまさにその監査をすり抜けるために作られていた。
最も強い擁護論と、それが成り立たない理由
反論の最良のバージョンはこうだ。これは何も外部に流出させていない。読んでいるのはタイムゾーンと、あなた自身が設定した環境変数であり、あなたのコードベース全体のコンテキストをすでに受け取っているサーバーに3ビットをささやくだけだ。ベンダーがあなたのデータを欲しければ、アポストロフィなど必要ない。
すべて正しい。そしてすべて論点を外している。ペイロードが問題だったことは一度もない。問題は、隠れチャネルが存在し、検査を欺くために意図的に設計され、沈黙のうちに出荷されたことだ。今日3ビットを運ぶチャネルは、明日は載るものなら何でも運ぶ。そしてそれが変わるときに changelog が教えてくれないことは、すでに実証済みだ。ベンダーが必要と判断すればクライアントはあなたに物事を隠す、と一度知ってしまえば、「たった3ビットだった」は安心材料にならない。それはバージョン番号つきの前例だ。
ベンダーには正当な理由がある。それこそが問題だ
ここでの Anthropic の動機は謎めいてもいないし、卑小でもない。6月下旬、同社は米上院委員会に対して、Alibaba 系のオペレーターが6週間で約25,000の偽アカウントを通じ、Claude に対して約2,880万回のやり取りを実行し、Claude Code が公開するソフトウェアエンジニアリングとエージェント能力を標的にしたと証言した。2月の告発では DeepSeek、MiniMax、Moonshot AI が名指しされている。この規模の蒸留は、転売されたアクセスとプロキシを経由して流れる。まさにこのフィンガープリントが検出するために作られた対象だ。不正利用検出の設計としては筋が通っているし、巧妙ですらある。
だからこそ、この事件はスキャンダルではなく教訓になる。現実の敵対的圧力にさらされ、合理的なエンジニアリング上の対応が手元にあったベンダーが、開示版ではなく隠蔽版を選んだ。しかも初めてではない。Claude Fable 5 のローンチ時、Anthropic 自身のシステムカードは、フロンティアAIの研究をするユーザーに対してモデルが応答を静かに劣化させ、より弱いモデルにフォールバックする設計を明らかにし、これは世論の反発を受けてようやく撤回された。パターンは安定している。圧力は隠蔽メカニズムを生み、開示は事後に外部からやってくる。この力学が一つのベンダーに固有だと信じる理由はない。すべてのモデルプロバイダーが蒸留に直面しており、そのすべてが特権的なクライアントを出荷している。インセンティブは一般化すると想定すべきだ。
依存関係を監査するように、クライアントを監査せよ
実務上の帰結は、疑いを向ける先の再配分だ。モデルの出力は今やデフォルトでレビューされる。クライアントバイナリはほとんどレビューされない。バランスを取り直そう。
- エージェントクライアントを脅威モデルに入れる。「ベンダーは敵対的」としてではなく、「特権を持ち、minify され、予告なく挙動が変わる自動アップデート型ソフトウェア」として。CI ランナーのイメージと同じカテゴリであり、同じように監査する。
- プロンプトはコードポイントレベルで diff する。 同形異義文字のチャネルは、設計上レンダリングされたテキストでは見えない。プロキシでトラフィックをログしているなら、グリフではなく Unicode コードポイントを比較する。
xxdは嘘をつかない。嘘をつくのはターミナルのフォントだ。 - changelog は記録ではなくマーケティングとして扱う。 この仕組みはリリースノートに痕跡を残さず現れ、消えた。クローズドなクライアントが何をしているかの唯一の真の記録は、バイナリ同士の diff だ。
- モデルアクセスをプロキシまたは転売しているなら、フィンガープリントされていると想定する。 ベンダーには商業的な理由があり、今やその意思も実証済みだ。隠れることではなく、見える存在であることを軸にコンプライアンス体制を組む。
ベンダー側の修正は一文で済む。「Claude Code はサードパーティのエンドポイント経由のリクエストに、不正利用検出のためのマークを付けます」。開示されていれば、まったく同じ仕組みが擁護可能な不正利用対策になる。隠されていれば、クローズドソースのエージェントクライアントを許容可能にしている唯一の契約への違反になる。その一文のほうが信頼よりも安いとベンダーが内面化するまで、監査の負担は私たちの側にある。モデルはベンチマークが稼いだ分だけ信頼すればいい。バイナリは、検証するものだ。
次に読む
- エストニアはAIエージェントにIDを与える。だが、それは簡単な部分にすぎない、エージェントの帰属と説明責任が、識別子の発行よりもはるかに難しい理由について。
- AWS Organizations のための複数者承認、特権的な操作を沈黙のままにせず、可視化と同意のもとに置くことについて。
エージェントを安全に運用するためのインフラとプラットフォームの側面については、クラウドのフィールドノートを ercan.cloud で公開している。AI、クラウド、プラットフォーム関連のコンサルティングについて、あるいはただ挨拶したいだけでも、まずは ercanermis.com から。
参考資料
Ercan の他のサイト
同じ著者、別の領域のサイトが2つ。