19 ポイント 投稿者 GN⁺ 2026-04-01 | 3件のコメント | WhatsAppで共有
  • Anthropicがnpmパッケージをソースマップ付きで配布したことで、Claude Codeの全コードが公開され、内部機能と実験的フラグがすべて明らかになった
  • コードにはモデル模倣防止のための偽ツール挿入(anti-distillation)AIであることを隠すundercoverモード暴言検知用のfrustration regexなどが含まれていた
  • ネイティブクライアント認証DRMレベルのハッシュ検証構造が存在し、非公式ツールのAPIアクセスを遮断するよう設計されていた
  • 内部コメントからは、1日25万件の失敗API呼び出し、未完成のKAIROS自律エージェントモードたまごっち型コンパニオンシステムなど、さまざまな実験機能も確認された
  • 今回の流出はAnthropicの中核製品の構造とロードマップが露出した事例であり、Bunランタイムのソースマップバグが原因である可能性が指摘されている

ソースマップ流出で明らかになったClaude Codeの内部構造

  • Anthropicがnpmパッケージをソースマップ付きで配布したことで、Claude Codeの完全なソースが公開された
    • パッケージはその後削除されたが、コードは各所にミラーされて分析対象となった
    • これは1週間以内で2件目の流出事件であり、先立ってモデル仕様書が露出していた
    • 最近Anthropicがサードパーティーツールによる内部API利用を法的に遮断した直後に発生
  • Anti-distillation:模倣防止のための偽ツール挿入

    • claude.tsにはANTI_DISTILLATION_CCフラグが存在し、有効時はAPIリクエストにanti_distillation: ['fake_tools']を含めて偽のツール定義をシステムプロンプトに挿入する
      • これはAPIトラフィックをキャプチャしてモデルを模倣しようとする試みを汚染する目的
      • GrowthBookフラグtengu_anti_distill_fake_tool_injectionが有効な一次CLIセッションでのみ動作
    • betas.tsには第2のメカニズムとして要約ベースのサーバー側保護機能が存在
      • ツール呼び出し間のテキストを要約したうえで暗号署名付きで返し、後で復元可能
      • 外部でトラフィックを記録しても推論過程全体を見ることはできない
    • この機能は複数条件が同時に満たされる必要があり、MITMプロキシでフィールドを削除すれば無効化可能
      • 環境変数CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASで無効化可能
      • USER_TYPE === 'ant'条件によりAnthropic内部ユーザー専用
    • 実質的な防御手段は技術的装置というより法的制約に近い形
  • Undercover mode:AIの正体を隠すモード

    • undercover.tsは外部リポジトリで使われる際にAnthropic内部コードネーム、Slackチャンネル、「Claude Code」という文言などを除去する
      • "There is NO force-OFF"という文言があり、無効化は不可能
      • 環境変数CLAUDE_CODE_UNDERCOVER=1で強制有効化できる
    • 外部ビルドでは関数が意味のない戻り値に置き換えられ、一方向的な構造になっている
    • このためAnthropic社員がオープンソースに貢献する際、AIが書いたことが表示されない
      • 内部情報の秘匿という目的は合理的だが、AIが人間のように偽装される効果が生じる
  • Frustration regex:暴言検知用の正規表現

    • userPromptKeywords.tsにはユーザーの不満や暴言を検知する正規表現パターンが含まれている
      • “wtf”, “this sucks”, “fuck you”など多様な表現を検出
    • LLM企業が感情分析に正規表現を使っているという皮肉を示しているが、
      • LLM呼び出しよりもコストと速度の面で効率的
  • Native client attestation:JSランタイム下のクライアント認証

    • system.tsにはAPIリクエスト時にcch=00000プレースホルダーが含まれており、
      • BunのZigベースのネイティブHTTPスタックがこれをハッシュに置換する
      • サーバーはこのハッシュを検証し、公式Claude Codeバイナリかどうかを確認する
    • これはOpenCode法的紛争の技術的根拠となるもので、
      • サードパーティーツールがAPIを直接呼び出せないようDRMレベルの検証を行う
    • ただし、NATIVE_CLIENT_ATTESTATIONフラグが無効であるか、
      • CLAUDE_CODE_ATTRIBUTION_HEADERが無効なら動作しない
      • Zigによるハッシュ置換は公式Bunバイナリでのみ動作し、Node環境では無効
    • サーバーが不正なハッシュを拒否するかは不明で、
      • _parse_cc_headerが“unknown extra fields”を許容するというコメントがある
  • 25万件の無駄なAPI呼び出し

    • autoCompact.tsのコメントによると、
      • 1日あたり約25万件のAPI呼び出しが失敗ループで浪費されていた
      • 1,279セッションで50回以上連続失敗し、最大3,272回に達した
    • 修正はわずか3行で、MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3を設定すると
      • 3回連続失敗後に自動圧縮機能が無効化される
  • KAIROS:未公開の自律エージェントモード

    • コード全体にKAIROSという機能ゲートされたモードが存在
      • main.tsxを見る限り、自律型エージェント機能と推定される
      • /dreamスキル(夜間メモリ蒸留)、GitHub Webhook、バックグラウンドデーモン、5分周期のcronリフレッシュを含む
    • 実装は未完成だが、常時稼働するバックグラウンドエージェント基盤は用意されている
  • その他の発見

    • エイプリルフールのイースターエッグbuddy/companion.tsたまごっち風コンパニオンシステムが存在
      • 18種類の生物、レア度・RPGステータス・1%確率の“shiny”版を含む
      • ユーザーIDベースのPRNGで決定し、文字列エンコーディングでビルド検査を回避
    • ターミナルレンダリングエンジンink/screen.ts, ink/optimizer.ts)は
      • Int32ArrayベースのASCIIバッファ、ビットマスク式メタデータ、50倍の性能向上キャッシュを実装
    • セキュリティ検査bashSecurity.ts)は23段階で構成され、
      • Zsh組み込みコマンドの遮断、=curl回避の防止、Unicodeゼロ幅・ヌルバイト注入の遮断などを実施
      • Zsh専用の脅威モデルを持つ珍しい事例
    • プロンプトキャッシュ管理promptCacheBreakDetection.ts)は
      • 14種類のキャッシュ破損ベクトルを追跡し、モード切り替え時のキャッシュ維持に“sticky latch”を使用
      • DANGEROUS_uncachedSystemPromptSection()というコメントが存在
      • トークン単価削減中心の設計思想を反映
    • マルチエージェント調整器coordinatorMode.ts)は
      • コードではなくプロンプトベースのオーケストレーションアルゴリズムを使用
      • 「弱い作業承認の禁止」「理解せずに委譲しない」などの指針を含む
    • コード品質の問題も存在
      • print.tsは5,594行で、単一関数が3,167行に達する
      • HTTPリクエストにAxiosを使用しており、最近のnpm悪性バージョン事件と時期的に重なる
  • 意味と波紋

    • Google Gemini CLIやOpenAI Codexの公開SDKとは異なり、
      • 今回の流出はAnthropicの中核製品の内部構造全体が明らかになった事例
    • 最大の被害はコードそのものよりFeature Flagとロードマップの露出であり、
      • KAIROS、Anti-distillationなどの戦略的機能が競合他社に公開された
    • Anthropicは昨年Bunを買収しており、Claude CodeはBun上で動作する
      • Bunのソースマップバグoven-sh/bun#28001)が原因である可能性がある
      • 本番モードでもソースマップが露出する問題で、いまだ未解決の状態
    • 結果としてAnthropicは自社ツールチェーンのバグで自社製品を流出させた形となり、
      • あるTwitter上の反応のように、「AIが書いたコードを配布していたら、AIが作ったバグでコードが漏れ出した」という皮肉な事件になった

3件のコメント

 
kaydash 28 일 전

賢い

 
bbulbum 29 일 전

AIでコミットしていて起きた問題だったのなら…?!

 
GN⁺ 2026-04-01
Hacker Newsの反応
  • 「Undercover mode」を単に内部情報を隠す機能だと誤解しているコメントが多い
    実際のプロンプトには、コミットメッセージやPR説明で 「Claude Code」やAIへの言及を絶対に含めるな と明記されている
    つまり、人間のように振る舞って正体を隠す機能に見える
    とくに公開リポジトリへ貢献する際にこうした指示が適用される点は懸念される
    関連コードリンク

    • Claudeがコミットの共同作成者として現れるたびに 気まずさ を感じる
      Gitの履歴は責任と所有権を追跡するためのものであって、ツール一覧を記録する場所ではない
      だとしたら、自分もPRにlinterやIDEを共同作成者として入れるべきなのか疑問だ
    • 自分のように、すでにCLAUDE.mdファイルにこうした指示を追加している人もいると思う
      実質 些細な設定1行 で解決できる問題だ
    • 人間のふりをしようという意図というより、コード品質が低いときに Claudeが嘲笑されないように する目的に見える
      結局、責任を負うのは人間の開発者だ
    • コードの目的は情報漏えい防止だが、実際の実装はそれより 範囲が広い
      おそらく目的達成のために意図的に広く設定したか、隠れた意図があるのかもしれない
      ただ、「人間のふりをする」と断定するより、「人間の開発者のように書け」という文言どおりに解釈するのが妥当だ
      懐疑的であるほど 事実ベースで批判 したほうが説得力がある
    • 自分もPRで「coauthored by Claude Code」という文言を見たことがある
      正直そういうのは望んでいない
  • 最近相次いだ Mythos流出 とClaude Codeのコードベース全体の露出で、信頼の問題が大きくなっている
    個々の出来事は興味深いが、連続して起きるとパターンのように感じられる
    結局、「こういうツールをコードベースに対して今後も信頼できるのか」という問いにつながる

    • そうした心配は過剰だと思う
      自分はいまも140ドル払ってCCを使っている
      むしろ、こうした流出は Anthropicの倫理的モデル とつながっているように見える — 失敗を通じて成長している感じだ
    • 大きな影響はないと思う
      本当の価値はコードではなく モデルへのアクセス権 にある
      コードベースはひどいが、サブスク型のモデルアクセスは依然として魅力的なので、毎日Claude Codeを使っている
    • 正直、Claude自体が vibe codedな粗雑なもの に思える
      Web UIでもCCでも細かなエラーが多すぎる
      tmux制御もドキュメントどおりに動かず、セッション整理もされない
      それでもなお好きな製品だ — 雑だが魅力がある
  • 自分のGitHub上の anthropics/claude-codeフォーク がDMCAで削除された
    流出コードを含んでいなかったのに、ネットワーク全体(8.1Kリポジトリ)が一括でブロックされた
    DMCA告知リンク
    Anthropicが鐘を鳴らしておいてまた止められると思っているのは 愚か

    • どうせ弁護士費用はすでに発生しているだろうから、単に 法務チームを使っている だけだ
      流出は元に戻せないのだから、いっそ製品ロードマップに組み込むほうが現実的だ
  • 昔の企業なら 営業秘密 と呼んでいたような内容が、そのままソースに入っているのを見て驚いた
    コメントにはビジネス上の背景まで書かれている
    例: 「1日25万回のAPIコールの無駄」のような運用データがそのまま露出している

    • コメントは事実上 エージェントコーディングの核心的ハック
      ドキュメントよりコメントのほうをよく読むので、長期記憶のように活用できる
    • 大半の大規模な非公開コードベースも似たようなものだ
      ただAnthropicは流出するとは思っていなかっただけだ
    • 設定理由を説明する良いコメントだ
      競合の立場から見れば大した価値のない情報だ
    • コード内にできるだけ多くの情報を盛り込むのは実用的だ
      どうせ流出は想定していなかったのだろう
    • あらゆる文脈をコードの中に入れるのは エージェントフレンドリーな設計の終着点 のように思える
      別文書で説明する必要がなくなる
  • 一部機能が process.env.USER_TYPE === 'ant' 条件でロックされている
    つまり、Anthropic社員向けの指示のほうがより厳格で率直 だということだ — 興味深い構造だ

  • HN元記事がすでに人気なのに、わざわざHNコメント要約ブログをまた投稿する必要があるのか疑問だ

    • そのブログには AIが一部書いた痕跡 が見える
    • 元記事が散漫だったので要約が必要だったという意見もある
    • HN文化には 自己参照的 に流れやすい傾向がある
  • それでもClaude Codeは素晴らしいと思う
    OpenAIやGeminiに乗り換える理由はない

    • 自分はClaude Codeに失望して Codexに移行 したが、Web・モバイル開発ではほぼ同じくらいうまく動く
  • 「Undercover mode」という名前と「Claude Codeへの言及禁止」という文言は不気味に聞こえるが、実際のコードを見ると内部コードネーム保護の目的のほうが大きい
    ソースリンク

    • コードネーム保護は理解できるが、AI生成の痕跡を消すこと は意味が違う
      かなり重要な変化に感じる
    • 「人間の開発者のようにコミットメッセージを書け」という文言が核心だ
    • 「BAD例」としてClaude関連の文言を禁じているのを見ると、意図は明確に AI露出の防止
    • おそらく開発者が会社のプロジェクトでAI使用を 目立たなく しようとする目的だろう
    • オープンソースへの貢献時にClaudeが自動で 正体を明かさないように 設計されているようだ
  • 「Anti-distillation: 偽ツールを仕込んで複製を防ぐ」というアイデアが興味深い
    もし中国の競合がその偽ツールを本当に実装したら皮肉な展開だ

    • 近いうちに zAI、Qwen、Minimax CC のような複製版が出てきそうだ
      いまはモデルより データと推論コスト が競争ポイントだと思う
      この話題についてもっと話したい
    • こうした distillation議論自体が空虚 に感じる
      そもそもこれらの企業も他人のデータを盗用して帝国を築いたのだから
    • 実際には双方とも互いを 蒸留(copy) している
      品質は停滞しており、本当の差は ツーリングの完成度 にある
      今回の流出でその差が縮まるかもしれない
    • 偽ツールは単なる 正規表現でフィルタできるおとり にすぎない
      最近はdistillation自体が減少傾向にある
    • 「自分たちは他人の著作物を盗んだけれど、お前たちはうちのものを盗むな」という 皮肉な態度 が滑稽だ
  • 自分が作った ビジュアルガイド を共有する
    ccunpacked.dev