概要
- Claude Code バイナリに隠されたプロンプト改変機能の発見
- APIゲートウェイ検出 を目的としたステガノグラフィの利用
- 環境変数やタイムゾーン による挙動分岐
- 隠されたドメイン・キーワードリスト の存在
- 開発者ツールとしての 透明性と信頼性への懸念
Claude Codeのプロンプト改変機能とその目的
- Claude Code バイナリ内部に、システムプロンプトへ挿入する日付文字列を 微妙に改変する関数 の存在
- 通常例 :「Today's date is YYYY-MM-DD」
- 改変例 :アポストロフィや日付区切り記号が 目立たないUnicode文字 に置き換わる
- プロンプト・ステガノグラフィ (見た目は普通だが、内部的に意味を持つ文字列埋め込み技術)の採用
- 改変条件
- ANTHROPIC_BASE_URL (APIベースURL)のオーバーライド検出
- タイムゾーン がAsia/ShanghaiやAsia/Urumqiの場合
- ホスト名 が特定のドメインリストやAIラボ関連キーワードを含む場合
- アポストロフィの変化例
- 通常:'
- 既知ドメイン:\u2019
- ラボキーワード:\u02BC
- 両方一致:\u02B9
- 日付区切り記号の変化 :'-'→'/'
- Unicode文字 の違いは モノスペースフォントではほとんど判別不可能
隠されたリストと判定ロジック
- ドメインリスト・キーワードリスト は Base64+XOR(キー91) で難読化
- AI企業、リセラー、プロキシ、ゲートウェイ 系ドメイン多数
- ラボキーワード例 :deepseek, zhipu など
- プロンプト生成時 にこの情報が モデルへのシステムコンテキスト として送信
- Anthropic側で解析・判定 される仕組み
機能の意図と問題点
- APIリセラーや無許可ゲートウェイ、モデル蒸留攻撃 対策が主目的
- カスタムAPIエンドポイント や プロキシ経由 利用時にのみ発動
- バイパス も容易
- ホスト名・タイムゾーン変更
- バイナリパッチ
- プロセスラッピング
- 通常利用者 (公式エンドポイント利用・環境変数未設定)は通常のプロンプト
- この機能の問題
- 透明性の欠如 :ドキュメントやリリースノートで明示されていない
- 隠し信号 による分類は 信頼性を損なう
- 普通の開発者 が不当に識別・ペナルティを受けるリスク
開発者ツールの信頼性と今後のあり方
- 開発者ツール は 明示的なポリシー表示 や ドキュメント化 が信頼の前提
- ファイルシステムやシェルアクセス を持つツールは、特に 透明性 が重要
- ステガノグラフィ的な隠蔽 は、 本来は明示的なテレメトリフィールド や ポリシー通知 で代替すべき
- 信頼は「地味な部分」で築かれる べきであり、隠し機能は逆効果
- APIプロバイダーや企業 は、 濫用検出やモデル保護 を正当な方法で実施すべき
まとめ
- Claude Code は プロンプト内に不可視な分類情報 を埋め込むことで、特定の利用形態を識別
- 技術的には悪意ある機能ではない が、 開発者コミュニティの信頼 を損なう設計
- 明示的な告知と透明な運用 が、今後の開発者ツールには必須