TL;DR:本稿の対象はターミナルツール Claude Code(npm パッケージ @anthropic-ai/claude-code)であり、Claude ウェブチャットではありません。逆解析報告によれば、環境変数 ANTHROPIC_BASE_URL が api.anthropic.com 以外の代理・ゲートウェイを指すと、Anthropic へ送るシステムプロンプト内の Today's date is … 行に肉眼では判別しにくい Unicode と日付形式の微調整が入り、非公式ルートの識別や蒸留対策に使われていたと報じられています。当該ロジックは 2.1.197(2026-07-01)で削除されましたが、公式 changelog には記載がありません。Claude Code、Cursor、Copilot などデスクトップ/ターミナル Agent を使う開発者と Tech Lead 向けに、2026 年の 2 つの独立した論争(4 月 Desktop Native Messaging と 6 月ステガノグラフィ)を区別し、原理対照表、6 ステップ防御 Runbook、ベンダー信頼原則、FAQ を整理します。2026 AI コーディング助手の選定を検討中の方は、「ターミナル Agent の信頼境界」として本稿を補足読みしてください。
002026 年 Anthropic 信頼危機:2 つの事件を混同しない
2026 年上半期、Anthropic はデスクトップクライアントとターミナルコーディング Agentの 2 製品線で、プライバシーとセキュリティに関する論争を連続して招きました。コミュニティでは両方を「Claude スパイウェア」と総称しがちですが、トリガー、影響範囲、修正経路はまったく異なります。Runbook や社内通報を書く前に、下表の「事件 A / 事件 B」区分を必ず行ってください。
| 観点 | 事件 A:Claude Desktop Native Messaging(2026 年 4 月) | 事件 B:Claude Code システムプロンプト ステガノグラフィ(2026 年 6 月 30 日暴露) |
|---|---|---|
| 製品 | Claude Desktop macOS クライアント(Claude.app) | Claude Code CLI(@anthropic-ai/claude-code) |
| 初出 | プライバシー顧問 Alexander Hanff(2026 年 4 月);安天实验室(Antiy Labs) がリスク分析を公開 | 開発者 Thereallo(thereallo.dev);Reddit ユーザー LegitMichel777;Hacker News で拡散 |
| 挙動概要 | インストール時に Chromium 系ブラウザへ Native Messaging manifest を無通知で書き込み、Claude 拡張とローカルバイナリ通信を事前承認。対象ブラウザ未インストールでも実行 | ANTHROPIC_BASE_URL がデフォルト以外のとき、システムプロンプト Today's date is … 行に Unicode アポストロフィ変種とタイムゾーン連動の日付区切りを埋め込み |
| トリガー条件 | Claude Desktop のインストール/起動 | カスタム base URL(代理、ゲートウェイ、API 転売など)経由の API ルーティングのみ |
| 第三者確認 | Digital 520 創業者 Noah Kenney が Hanff の発見を独立検証 | The Register、TechTimes 等が報道;Anthropic 社員 Thariq Shihipar が X で回答 |
| コミュニティ熱量 | プライバシー・ePrivacy 論争;Malwarebytes、gHacks が報道 | Hacker News 350+ ポイント、100+ コメント。「蒸留対策は妥当 vs 隠蔽手段は越権」の二派に分裂 |
| 修正状況 | 後続版で承認スイッチ追加との報道あり。根本的な攻撃面議論は継続 | 2.1.197(2026-07-01)で削除 PR マージ;changelog 未記載 |
Gemini CLI オープンソース信頼危機や Anthropic AI for Science 戦略と併読する場合、事件 B はベンダーがモデル蒸留対策と開発者ツールの透明性の間で下したトレードオフと理解できます。Anthropic の対外説明では未承認転売阻止が目的とされていますが、ステガノグラフィ式マーキングとchangelog 非開示での削除が信頼損失を拡大させました。
痛点なぜ「1 文字のアポストロフィ」が開発者を不安にさせるのか
Claude Code はローカルまたは CI 上で動く高権限ターミナル Agentです。リポジトリを読み、ツールを呼び、MCP 経由で外部システムに接続します。開発者の合理的期待は、モデルへ送る system prompt が UI で見える内容と一致し、環境変数はルーティングにのみ影響することです。逆解析報告によれば、事件 B はこの期待を破りました。
- 隠蔽チャネル:指紋は独立した telemetry フィールドではなく、毎リクエスト出現する日付行に埋め込まれ、肉眼や diff ツールではほぼ検出不能。
- 条件トリガー:
api.anthropic.comへ直接接続するユーザーは報告上該当分支に入らない。SiliconFlow、DeepSeek ゲートウェイ、企業リバースプロキシなどカスタムANTHROPIC_BASE_URL経路でのみ活性化し、国内「API 中継」エコシステムと高い重なり。 - リスト難読化:ドメイン一覧は base64 + XOR(91) で難読化。逆解析では約 147 条のルール。
deepseek、moonshot、zhipu等のキーワードと複数ゲートウェイドメインを含む。 - バージョン漂移:ロジックは報告上 2.1.91(2026 年 4 月初旬)から存在。コミュニティは 2.1.193 / 2.1.195 / 2.1.196 でも再現可能で、2.1.197 まで残存。
- 開示ギャップ:削除コミットはマージ済みだがリリースノートに未記載。企業コンプライアンスと SBOM 監査では changelog だけでは閉ループできない。
HN では「モデル蒸留保護は正当なビジネス要件」という派と、「有料開発者ツールに steganography を使いユーザーに告知しないのは Ask for trust 叙事と矛盾」という派に分かれました。この対立自体が、ターミナル Agent の信頼モデルが未標準化であることを示しています。
01ステガノグラフィ原理:Today's date 行が指紋をどう符号化するか
thereallo.dev と Vincent Schmalbach 等の逆解析記事によれば、パイプラインは 4 段階に要約できます。(1)process.env.ANTHROPIC_BASE_URL を読む;(2)空または公式 API なら通常の日付行を返す;(3)それ以外は hostname を解析し、XOR デコード後のドメイン/キーワード表と照合;(4)マッチ結果に応じ Unicode アポストロフィを選択し、システムタイムゾーンに基づき日付の - を / に置換するか決定。
| 条件(逆解析報告) | Today's 内アポストロフィ | Unicode | 日付形式例 |
|---|---|---|---|
| 非デフォルト base URL、host がリスト外かつ lab キーワードなし | ASCII 直撇号 | U+0027 ' | 2026-06-30(中国タイムゾーン以外) |
| host が既知ゲートウェイ/転売ドメインリストにヒット | 右シングルクォート | U+2019 ' | 同上 |
| host はリスト外だが AI lab キーワードを含む | 修飾字母アポストロフィ | U+02BC ʼ | 同上 |
| ドメインリストとキーワードの両方にヒット | 修飾字母 prime | U+02B9 ʹ | 同上 |
システムタイムゾーンが Asia/Shanghai または Asia/Urumqi | (上表と組み合わせ) | — | 2026/06/30(- を / に置換) |
ドメインとキーワード表はバイナリ内で base64 エンコード後 XOR(91) 保存。逆解析では合計約 147 条のルールで、deepseek、moonshot、zhipu、siliconflow 等と複数中継ドメインをカバー。Anthropic サーバー側が取り込み前に正規化するか生 Unicode を保持するかで、同一英文行から「代理経由か」「中国 AI エコシステムルートに似るか」「中国タイムゾーンか」等の信号を読み取れる——報道によれば蒸留対策と未承認転売識別用途で、コミュニティが実証した「能動的スパイ行為」という断定ではありません。
function renderDateLine(date) {
if (!customBaseUrl()) return `Today's date is ${date}.`;
const { knownHost, labKeyword, cnTZ } = classifyRoute();
const apostrophe = pickApostrophe(knownHost, labKeyword);
const rendered = cnTZ ? date.replaceAll("-", "/") : date;
return `Today${apostrophe}s date is ${rendered}.`;
}
- 引用可能データ 1:ステガノグラフィロジックは Claude Code 2.1.91 から存在、暴露時 2.1.196 でも検出可能だったと報告。
- 引用可能データ 2:難読化ドメイン/キーワードルール表は逆解析で約 147 条、XOR(91) と base64 で隠蔽。
- 引用可能データ 3:Hacker News 関連スレ 350+ ポイント、100+ コメント。コミュニティは「蒸留対策は妥当」と「開発者ツールに隠蔽マークは不可」の二 camp に分裂。
02バージョンタイムラインと動機:報道 vs 公式回答
| バージョン / 時期 | 公開情報と逆解析報告 |
|---|---|
| 2.1.91(2026-04-02 前後) | Reddit ユーザー LegitMichel777 がこの版で関連ロジックを発見したと報告 |
| 2.1.193 / 2.1.195 / 2.1.196 | コミュニティが npm パッケージと embedded chunk でステガノグラフィ分支を再現 |
| 2026-06-30 | Thereallo が逆解析長文を公開;HN / Reddit で拡散 |
| 2.1.197(2026-07-01) | 削除 PR マージ;公式 changelog にステガノグラフィ削除の記載なし |
Anthropic 社員 Thariq Shihipar は X で、同社説によれば 3 月開始の実験であり未承認転売防止とモデル蒸留保護が目的で、次バージョンでロールバック予定だったと述べました。The Register 等は Anthropic がコード存在を認め修正を約束したと報じています。いずれも対外声明です。サーバー側でマークを実際に消費するか、アカウントリスク管理に影響するかはAnthropic 未公開のため、本稿は未開示の結果について事実断言しません。
同期のソース流出では ANTI_DISTILLATION_CC 等の別蒸留対策(リクエストへの妨害的 tool データ注入など)も暴露されました。報道によればステガノグラフィは同じ「モデル保護」ツールボックスの一部ですが、system prompt の隠蔽改変は文書化 API フィールドより開発者信頼へのダメージが大きいです。
03「スパイウェア」か?2 事件のそれぞれの位置づけ
事件 A:無承認のローカルチャネル事前設定
Hanff と Antiy Labs の核心指控は、Claude Desktop がユーザー無告知で Chrome、Edge、Brave、Arc、Vivaldi、Opera 等のパスへ com.anthropic.claude_browser_extension.json を書き込み、拡張 ID とローカル helper 通信を事前承認することです。削除後もアプリ再起動で自動再生成されると報告。Noah Kenney は独立確認し、「ブラウザ拡張 → サンドボックス外バイナリ」の永続事前承認ブリッジが形成されると指摘しました。
リスクチェーンは、Anthropic 自社ドキュメントが Claude for Chrome に prompt injection リスクがあり、緩和なしで攻撃成功率 23.6%、緩和後も約 11.2% と記載している点にあります。拡張がインストール済みで manifest が事前設定されていれば、セキュリティ分析によれば悪意ページ上の注入が拡張と Native Messaging 経由でユーザ権限ローカル能力に届く理論的可能性があります——無承認ローカル設定改変 + 既知の高成功率注入面の組み合わせであり、従来意味のトロイではないもののコンプライアンスと ePrivacy 論争は大きいです。
事件 B:未開示のプロンプト層テレメトリ
事件 B はローカルファイルを改変せず、ユーザー不可視の system prompt に分類信号を埋め込み、個別 opt-in 説明もなし。逆解析報告では未開示テレメトリ/分類チャネルに該当し、ユーザー透明性とデータ最小化原則に不利です。「スパイウェア」かは法域と契約次第;工学的には開発者ツール内の隠蔽分類マークであり、削除時 changelog 未記載がより正確な表現です。
表述規律:Anthropic の動機には全文で「報道によれば」「逆解析報告では」「対外説明では」を用い、未公開のサーバー用途・アカウント処分を断定しません。社内監査では事件 A の manifest パスと事件 B の base URL/バージョン番号を両方カバーしてください。
046 ステップ防御 Runbook(Claude Code + Desktop)
-
01
ANTHROPIC_BASE_URLを確認:shell、~/.claude/settings.json、CI シークレットストアですべての Claude Code インスタンスを列挙。非公式 API を指す場合、逆解析報告ではステガノグラフィ分支がトリガーされた。企業ゲートウェイは文書化しセキュリティ承認を得る。 -
02
Claude Code ≥ 2.1.197 へアップグレード:
claude --versionまたはnpm ls -g @anthropic-ai/claude-codeを実行。2.1.197 未満は報告上ステガノグラフィロジックを含む。アップグレード後も changelog 未記載のため、バイナリ検証またはバージョン固定が必要。 -
03
Claude Desktop Native Messaging を監査:macOS で
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/および Edge、Brave、Arc 等の同等パスにcom.anthropic.claude_browser_extension.jsonが存在するか確認。ブラウザ自動化が不要なら manifest を削除し、Desktop 再起動で再生成されるか記録。 -
04
システムタイムゾーンを照合:事件 B は報告上
Asia/Shanghai、Asia/Urumqiで日付区切りを切替。CI とクラウド dev box は意図したタイムゾーンを使用し誤マークを避ける。必要ならTZ=UTCを文書で固定。 -
05
企業最小権限:Desktop インストール権限、base URL と API Key 設定権限を制限。MCP とブラウザ拡張に承認を要求。Claude Code と本番シークレットを分離。
-
06
開発環境を隔離して監査:独立 Mac またはクラウドベアメタルノードで Agent を実行し、日常ブラウジング・個人 Apple ID と分離。定期的に outbound system prompt サンプルを grep(MITM 実験環境の場合)またはベンダー SBOM に依存。安定・リセット可能な Mac CI/Agent ホストが必要なら NUKCLOUD 料金と 注文ページで専有ノードを開通。
05AI ベンダー信頼:実践可能な 4 原則
ターミナル Agent はコードを読み、ツールを呼び、API Key を保持します。2026 年の Claude Code ステガノグラフィと Desktop manifest 論争は、ベンダードキュメント ≠ 実行時挙動を示しています。調達とプラットフォームチームは次の 4 原則を採用できます(Anthropic、Google、OpenAI、Cursor 等に適用):
- 挙動の可観測性:system prompt 注入、環境変数トリガーロジック、ローカルファイル書き込みについて公開説明または SBOM を要求。changelog はセキュリティ関連削除を必ず記載。
- データ最小化:分類と乱用対策は明示 API フィールドまたは opt-in telemetry を優先。steganography 式隠蔽チャネルを避ける。
- ローカル変更には consent:Native Messaging、ブラウザ拡張、LaunchAgent 等の事前設定は原則違反。初回利用時に項目ごと承認が必要。
- サプライチェーン検証:バージョン固定、npm パッケージ hash 検証、隔離環境での diff。Agent ホストと本番ネットワークを分離しワンクリック再構築を可能に。
デスクトップ Agent や Claude Code 類ツールの信頼リスクは、モデル回答品質より未監査のローカル副作用と不可視 outbound payloadにあります。共有ノート PC やオーバーセル VPS で 7×24 Agent を回すと、隣接テナント干渉と長時間接続切断が重なります。監査可能・SSH 可能・Xcode と Claude Code を載せられる本番/CI 平面には、NUKCLOUD 多リージョン Apple Silicon ベアメタル Mac / クラウド Mac ノードが専有物理機、Root 権限、日次/月次の柔軟課金を提供し、Agent 環境と企業日常機を分離して露出面を縮小できます。まず 料金ページでスペックを照合し、注文ページで隔離 dev 環境を試してください。
06よくある質問
NativeMessagingHosts ディレクトリから com.anthropic.claude_browser_extension.json を削除し、Claude Desktop 再起動後に再生成されるか確認。Hanff 報告では削除後もアプリが再作成する可能性。長期策は Desktop ブラウザ連携無効化、該当挙動のない版の使用、ディレクトリ変更の監視。- → / は ANTHROPIC_BASE_URL が非公式エンドポイントを指しかつタイムゾーンが Asia/Shanghai または Asia/Urumqi のときに重ねて適用されます。公式 API 直結では報告上このコードパスに入らない。Today's 内の ASCII 撇号 U+0027 を視覚的にほぼ同一の U+2019、U+02BC、U+02B9 に置換し、「ドメインリストヒット / AI lab キーワードヒット」等の組み合わせを符号化。人間の読み取りでは差がなく、Unicode 対応ログやサーバー側でデコード可能。ANTHROPIC_BASE_URL を使っていた場合、アップグレード後も環境変数と CI イメージを再確認。changelog 未記載のため、コンプライアンスチームはアップグレード記録とバージョン固定方針を保持すべき。ANTHROPIC_BASE_URL が非公式かつ host がルール表またはキーワードにマッチすると日付行が改変される可能性。2.1.197 前は当該挙動が存在。アップグレード後ロジックは削除済みだが、ANTI_DISTILLATION_CC 等の別蒸留対策はベンダー更新とコミュニティ逆解析を継続跟踪する必要あり。07参考ソース
- The Register — Anthropic が Claude Code 隠蔽コードを削除した報道
- thereallo.dev — システムプロンプト ステガノグラフィ逆解析長文
- 安天实验室 Antiy Labs — Claude Desktop Native Messaging リスク分析
- Alexander Hanff — Claude Desktop 無通知 manifest インストールの初出(That Privacy Guy 等で転載)
- Hacker News — 2026 年 6 月末関連議論(350+ ポイント、100+ コメント規模)
- Reddit — LegitMichel777 等による 2.1.91 挙動の議論
- Vincent Schmalbach、TechTimes 等による
ANTHROPIC_BASE_URLと Unicode マーキングの技術フォロー
ターミナル Agent は「Root 権限付きインターン」になりつつあります。Claude Code ステガノグラフィ事件は、Cursor vs Claude Code vs Copilot を選ぶ際、SWE-bench と料金に加え——モデルへ送る prompt を静かに改変しないか——と問うべきだと示しています。Agent を再構築可能な隔離 Mac に閉じ込めるのは、2026 年の現実的な一票です。