Claude Code ステガノグラフィ事件:Anthropic が Unicode アポストロフィでユーザーを分類していた件

2026 年 6 月 30 日、開発者が Claude Code バイナリを逆解析した結果、ANTHROPIC_BASE_URL が非公式エンドポイントを指す場合、システムプロンプトの Today's date 行で Unicode アポストロフィと日付区切りが静かに差し替えられていたことが報告されました。逆解析報告では代理・ゲートウェイ利用者のマーキング目的とされています。Claude ウェブ版は影響なし2.1.197 で当該ロジックは削除済みです。

TL;DR:本稿の対象はターミナルツール Claude Code(npm パッケージ @anthropic-ai/claude-code)であり、Claude ウェブチャットではありません。逆解析報告によれば、環境変数 ANTHROPIC_BASE_URLapi.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.appClaude Code CLI(@anthropic-ai/claude-code
初出プライバシー顧問 Alexander Hanff(2026 年 4 月);安天实验室(Antiy Labs) がリスク分析を公開開発者 Thereallothereallo.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 条のルール。deepseekmoonshotzhipu 等のキーワードと複数ゲートウェイドメインを含む。
  • バージョン漂移:ロジックは報告上 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 ʼ同上
ドメインリストとキーワードの両方にヒット修飾字母 primeU+02B9 ʹ同上
システムタイムゾーンが Asia/Shanghai または Asia/Urumqi(上表と組み合わせ)2026/06/30-/ に置換)

ドメインとキーワード表はバイナリ内で base64 エンコード後 XOR(91) 保存。逆解析では合計約 147 条のルールで、deepseekmoonshotzhipusiliconflow 等と複数中継ドメインをカバー。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-30Thereallo が逆解析長文を公開;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)

  1. 01
    ANTHROPIC_BASE_URL を確認:shell、~/.claude/settings.json、CI シークレットストアですべての Claude Code インスタンスを列挙。非公式 API を指す場合、逆解析報告ではステガノグラフィ分支がトリガーされた。企業ゲートウェイは文書化しセキュリティ承認を得る。
  2. 02
    Claude Code ≥ 2.1.197 へアップグレード:claude --version または npm ls -g @anthropic-ai/claude-code を実行。2.1.197 未満は報告上ステガノグラフィロジックを含む。アップグレード後も changelog 未記載のため、バイナリ検証またはバージョン固定が必要。
  3. 03
    Claude Desktop Native Messaging を監査:macOS で ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ および Edge、Brave、Arc 等の同等パスに com.anthropic.claude_browser_extension.json が存在するか確認。ブラウザ自動化が不要なら manifest を削除し、Desktop 再起動で再生成されるか記録。
  4. 04
    システムタイムゾーンを照合:事件 B は報告上 Asia/ShanghaiAsia/Urumqi で日付区切りを切替。CI とクラウド dev box は意図したタイムゾーンを使用し誤マークを避ける。必要なら TZ=UTC を文書で固定。
  5. 05
    企業最小権限:Desktop インストール権限、base URL と API Key 設定権限を制限。MCP とブラウザ拡張に承認を要求。Claude Code と本番シークレットを分離。
  6. 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 等に適用):

  1. 挙動の可観測性:system prompt 注入、環境変数トリガーロジック、ローカルファイル書き込みについて公開説明または SBOM を要求。changelog はセキュリティ関連削除を必ず記載。
  2. データ最小化:分類と乱用対策は明示 API フィールドまたは opt-in telemetry を優先。steganography 式隠蔽チャネルを避ける。
  3. ローカル変更には consent:Native Messaging、ブラウザ拡張、LaunchAgent 等の事前設定は原則違反。初回利用時に項目ごと承認が必要。
  4. サプライチェーン検証:バージョン固定、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よくある質問

Claude Code ステガノグラフィはスパイウェアか?
法的定性は法域により異なります。工学的には、事件 B はUI 未開示の system prompt 分類マーク、事件 A は無承認ローカル Native Messaging 事前設定です。いずれも信頼を大きく損ないますが「スパイウェア」かは契約と現地法次第。企業は下記 Runbook で緩和し、ブランド信頼だけに依存すべきではありません。
通常の Claude ウェブ版は影響を受けるか?
いいえ。ステガノグラフィロジックは Claude Code CLI クライアント内にあり、ブラウザチャットとは無関係。claude.ai のみ利用なら事件 B のため CLI アップグレードは不要。ただし同一マシンに Claude Code または Desktop がある場合は、それぞれバージョンと manifest を個別対応してください。
Claude Desktop が書き込んだ Native Messaging 注入を削除するには?
macOS の各 Chromium ブラウザ NativeMessagingHosts ディレクトリから com.anthropic.claude_browser_extension.json を削除し、Claude Desktop 再起動後に再生成されるか確認。Hanff 報告では削除後もアプリが再作成する可能性。長期策は Desktop ブラウザ連携無効化、該当挙動のない版の使用、ディレクトリ変更の監視。
タイムゾーンを中国にするとタグ付けされるか?
タイムゾーン変更だけでは不十分。逆解析報告では、日付 -/ANTHROPIC_BASE_URL が非公式エンドポイントを指しかつタイムゾーンが Asia/Shanghai または Asia/Urumqi のときに重ねて適用されます。公式 API 直結では報告上このコードパスに入らない。
apostrophe trick(アポストロフィトリック)とは?
Today's 内の ASCII 撇号 U+0027 を視覚的にほぼ同一の U+2019U+02BCU+02B9 に置換し、「ドメインリストヒット / AI lab キーワードヒット」等の組み合わせを符号化。人間の読み取りでは差がなく、Unicode 対応ログやサーバー側でデコード可能。
4 月 Desktop 事件と 6 月ステガノグラフィは同一か?
いいえ。事件 A は Claude Desktop とブラウザブリッジ、事件 B はカスタム API ルート下の Claude Code system prompt。製品、トリガー、修正バージョンがすべて異なり、社内通報とセキュリティスキャンは別項目で列挙してください。
Anthropic はなぜこれを追加したのか(公開説明)?
Thariq Shihipar は、同社説によれば未承認転売とモデル蒸留向けの実験だったと述べました。The Register は同社が分類器と行動指紋等の蒸留対策に投資していると報道。コミュニティ論点は目的は理解できるが、開発者ツール outbound prompt の隠蔽改変は受け入れがたく、削除も changelog 未記載だった点。
Claude Code を 2.1.197 に上げる必要はあるか?
アップグレードを推奨。2.1.197 でステガノグラフィ PR 削除済み。カスタム ANTHROPIC_BASE_URL を使っていた場合、アップグレード後も環境変数と CI イメージを再確認。changelog 未記載のため、コンプライアンスチームはアップグレード記録とバージョン固定方針を保持すべき。
API 中継(国内ゲートウェイ等)を使うと必ずマークされるか?
逆解析報告では、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 年の現実的な一票です。