28 ポイント 投稿者 GN⁺ 29 일 전 | 4件のコメント | WhatsAppで共有
  • npmレジストリのソースマップ(map)ファイルを通じて、Claude Codeの全ソースコードが外部に露出し、内部構造と機能が公開された
  • 流出したファイルには、システムプロンプト、テレメトリ、バイパスモード、Undercover Mode などの中核コンポーネントが含まれている
  • 原因として、.npmignore設定の漏れとbunビルドツールのデフォルトのソースマップ生成機能が指摘されている
  • コードにはバイアス防止や保護ルールがほとんどなく、最小限のトーン保護しか存在しないことが確認された
  • コミュニティではこれを**「AIの自己オープンソース化」と皮肉り、セキュリティ管理の不注意が招いた大規模流出事例**として注目している

Claude Codeソースコード流出事件

  • Claude Codeの全ソースコードが、npmレジストリのソースマップ(map)ファイルを通じて外部に露出していたことが確認された
    • 公開されたリンクは src.zip 形式の圧縮ファイルで、コード構造と内部機能が含まれている
    • これにより、システムプロンプト、テレメトリ、バイパスモード、Undercover Mode などの内部コンポーネントが明らかになった
  • これはAnthropicが1年以内に経験した2度目の意図しない流出事故だと言及されている
    • コミュニティでは、「誰かが *.map ファイルを .npmignore に追加しなかった」というビルド設定ミスが原因だと指摘
    • bun ビルドツールがデフォルトでソースマップを生成するため、これを無効化しなかった点が問題として挙げられている
  • 一部のユーザーはこの流出ファイルをClaudeモデルやバックエンドへのアクセスコードだと誤解したが、
    • ソースマップはアプリ構造、関数、コードフローを示すだけで、モデルの重みやシステムアクセス権限は含まれない
    • したがって実行可能なモデルではなく、リバースエンジニアリング、バグ探索、アーキテクチャ分析にのみ有用である
  • 流出したコードには**「Undercover Mode」というサブシステム**が含まれており、
    • これはClaudeが内部情報を誤って露出しないよう設計された機能である
    • しかし人間の開発者の設定ミスにより、その機能自体が外部に公開されることになった
  • コード分析者たちは、バイアス防止や保護対象クラスの処理ルールがまったくない点を指摘している
    • 人種、性別、宗教などのセンシティブ属性に関するガードレール、キーワードフィルタ、分類器は存在しない
    • 「Minimal tone protection」だけが存在し、バイアス緩和ポリシーは皆無であることが確認された

コミュニティの反応と議論

  • コミュニティでは「リポジトリは自由を求めている」という冗談とともに、今回の件を**「オープンソース化のアイロニー」**と表現
    • 「Claudeが自らを解放した」「AIが自分で自分をオープンソース化した」といった風刺的な反応が多数見られた
    • 「世界最高水準のAIコーディングツールを作っておいて *.map を入れ忘れた」という批判的ユーモアも広がった
  • 一部の利用者はセキュリティリスクを警告
    • 出所不明の r2.dev リンクを無造作にダウンロードする行為を批判し、
    • 「AI安全を語っていたコミュニティが未検証のzipファイルをクリックした」という自嘲的な反応も続いた
  • 「これがClaudeの終わりの始まりなのか?」「意図的な流出なのかミスなのか?」といった疑問も提起された
    • 「Anthropic社内の誰かにとって最悪の月曜日になっただろう」という反応も共有された
  • コミュニティでは流出コードの活用可能性についての議論も続いている
    • 「今や何ができるのか?」「これを基にClaude Codeを再構築できるのか?」といった質問が登場
    • 「openclaude」という別名も生まれ、非公式なオープンソースプロジェクト化の可能性にも言及されている

追加情報

  • 公開されたコードのうち最も大きいファイル5件は次の通り
    1. cli/print.ts – 5,594行
    2. utils/messages.ts – 5,512行
    3. utils/sessionStorage.ts – 5,105行
    4. utils/hooks.ts – 5,022行
    5. screens/REPL.tsx – 5,005行
  • 一部のユーザーはDeepWikiリンクを通じてコードレベルの分析資料を共有
  • 全体として今回の件は、npm配布設定の単純なミス大規模なAIコード流出につながり得ることを示す事例として評価されている

4件のコメント

 
colus001 29 일 전

OpenCode が十分に良いので、わざわざ何が必要なのか疑問ですね(笑)

 
bighead 29 일 전

/buddy が実際に動いているのを見ると……本物のような気もするし……
エイプリルフールのイベントのような気もする……

 
gggnews 29 일 전

https://github.com/kk-r/skillify-skill 思った以上に便利な内部コマンドが流出したものを、似たように動作するようオープンソースとして公開した方もいるようですね(笑)

 
GN⁺ 29 일 전
Hacker Newsの意見
  • Anthropicがfeature flag経由で製品ロードマップを露出させてしまったことが最大の損失
    とくに未公開の「assistant mode」(コードネーム kairos)が明らかになった
    コードベースをClaudeに解析させると、隠し機能が大量に見つかる
    たとえば Buddy System(たまごっち風のASCIIキャラクター)、Undercover mode(社員向けコミットから内部情報を除去する機能)などがある

    • 「Undercover prompt」の中に Claude Capybara という言及もある
      関連コードのリンク
    • 以前自分がオープンソースで公開した個人用Claude Code設定が、これで完全に時代遅れになってしまった
      clappie.ai を参照
      Telegram統合(CC Dispatch)、Crons(CC Tasks)、アニメーションASCII犬(CC Buddy)など、機能が重なっている
    • Claudeにバイナリを直接読ませれば、こうしたfeature flagを全部見つけられる
    • 実際のところBuddy Systemは今年のエイプリルフール企画
      ユーザーがガチャ式でペットを引いて育てる形式で、レジェンド級のペットもいる
      Twitterでのバイラルを狙って段階的に公開する予定だった
  • Anthropicがパッケージを実際には削除せず、「Unpublished」というメッセージだけでdeprecated扱いにしたのが興味深い
    npm unpublish はパッケージを完全に削除するが、npm deprecate は残したまま警告だけを表示する
    おそらくソースマップのダウンロードを難しくしようという意図だと思われる
    npmパッケージのリンク

    • コミットメッセージが「undo / undo / unpublish / ctrl-z / ctrl-c / No, stop…」という具合に、おどけた感じで残されている
    • npmではダウンロード100回超のパッケージはunpublish不可
    • Anthropicが自社製品をdogfoodingしながら積極的にテストしているのが伝わってくる
    • インターネットから完全に消せないことを分かったうえで、単に「公開の意図はない」程度の表示にしたようだ
  • こうした流出は今回が初めてではない
    2025年2月にも似たことがあった
    関連ブログ / HNスレッド

  • すべてのspinner verbsが露出した
    関連コードのリンク

    • 現在は404だが、このリンクはまだ動作している
    • 「reticulating」が含まれているのがうれしい、あとは「splines」さえあれば完璧
    • こうした文字列はバイナリ内に平文で入っているので、grepで簡単に見つけられる
      しかも直接置き換えることすら可能
    • issueページで何が起きているのか気になる
    • 昔、2015年のゲームが似たような機能のせいでAI生成物と誤解されたことを思い出す
      今ではちょっとしたユーモアですらAIを疑われる時代だ
  • src/cli/print.ts はコードベースで最も複雑な関数
    3,167行、ネスト12段階、分岐点486、内部関数21個など
    最低でも8〜10個のモジュールに分割すべきレベル

    • src/ink/termio/osc.ts の非同期処理も混乱している
      wl-copyxclipxsel を順番に実行しているが、asyncなのかどうかが曖昧
    • とはいえ、コード構造の複雑さが必ずしも悪いわけではない
      人間基準のコードスメルは、LLMのコードでは別の意味を持つ可能性がある
      LLMは人間とは異なるやり方でコードを書いており、新しい分析パラダイムが必要だ
      人間流のコーディング規則を押し付けると、むしろ同じバグを繰り返すことになる
      Vibe coding という新しい進化的アプローチが必要
    • CCを長く使ってきた人なら、この部分がバグの温床だと皆知っている
      しかもAnthropicは60日間動きのないバグを自動で閉じる
    • 遅い速度がむしろ速度制限機能のように働いているのかもしれない
    • 「それはLarryの仕事だ」という冗談が出るほどコードが複雑
  • ユーザープロンプトの否定的感情を検出する正規表現がある
    関連コード
    特定の単語がログ対象になっている

    • LLM企業がregexで感情分析をしているなんて、まるでトラック会社が馬を使っているようなもの
    • 2011年に自分のスタートアップでも似た方法でTwitter感情分析を売っていた
      AppleやBentleyのような企業も顧客だった
    • 実際これは「1分あたりのWTF」指標のようなもの
      Claudeが変な回答をしたら、エンジニアがそれを見て改善してほしい
    • これは最適化ではなく、単に「ユーザーの不満を記録せよ」という指示をLLMがそのまま実装した結果にすぎない
    • 実コードを見る限り、ロガー以外にこれを呼んでいる箇所はない
  • 自分は難読化されたJS/TSコードはどうせ機械語ではないのだから、大したことではないと思う
    むしろCLIをオープンソースで公開してほしい

    • おそらく内部コードの品質が低くて公開をためらっているのだろう
      最近もOAuthログインフローが誤ったURLを生成するバグがあった
    • 「CLIは大したものではない」と言われるが、実際にはcontext生成subagent構造を見るとかなり興味深い
      いま実際に確認しているところ
    • 命名規則を見るだけでもチームの考え方やロードマップが見えてくる
      難読化ではそこを隠せない
  • これを Malus やClaude Codeで回してオープンソース版を作ったらどうか、という冗談も出ている
    もちろん本当にやれという意味ではない

    • Malusは実在のプロジェクトではなく風刺
      FOSDEM発表リンク
      コードをテキストに、さらにまたコードに翻訳してクリーンルーム実装のように見せるアイデア
      皮肉なことに、LLMの回答自体がすでにオープンソースコードから派生している
    • どうせClaude CodeはClaudeが書いたのだから著作権はないと主張する人もいる
    • 問題はOAuth認証を回避できない点
      Anthropicに検知されてアカウント停止される可能性がある
    • オープンソースへの貢献がゼロという皮肉もある
    • もしかすると claw-code が関連プロジェクトかもしれない
  • ANTI_DISTILLATION_CC はClaude Codeに組み込まれたモデル盗用防止機能
    APIリクエストごとに anti_distillation: ['fake_tools'] を挿入し、サーバーが偽のツール定義をシステムプロンプトに追加する
    競合モデルがトラフィックをスクレイピングして学習した場合に、データが汚染されるよう設計されている

    • 実際に効果はあったようだ
      Qwen 27BモデルがOpus 4.6をもとに蒸留されたが、ツール使用エラーが発生した
      関連ツイート
    • Anthropicがこうした研究を純粋な善意でやったとは思えない
    • しかし最近はレート制限が厳しすぎて、サービスとしての実用性が落ちている
    • サーバーがクライアントに偽のツール定義を注入する構造なら、モデルがそれを無視するよう学習されているのか気になる
      もしかするとSonnetやOpusにもこうしたデータ毒が入っているのだろうか?
    • そもそも、なぜこんな機能がクライアントコードに入っているのかも疑問
  • Claude CodeがAxiosを使っていることが判明した
    関連ツイート / HNスレッド

    • 現在のバージョンはAxios 1.14.0を使用しており、悪意あるコードが含まれていた1.14.1の直前のバージョン
      自動更新を止めるには環境変数に export DISABLE_AUTOUPDATER=1 を追加し、
      claude doctorAuto-updates: disabled 状態を確認すればよい