広告

Claude Codeのソースコードが流出—APIが明らかにすること

Dev.to / 2026/3/31

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • Hacker Newsの議論およびその後のコード点検によれば、Claude CodeのNPMパッケージに誤って含まれていたソースマップファイルによって、元の未圧縮(アンミニファイ)ソースコードが露出した。
  • 流出した実装では、Claude Codeが環境変数 `ANTHROPIC_BASE_URL` を直接読み取り、デフォルトとして `https://api.anthropic.com` をフォールバックすることが示されている。特別なバリデーションやドメインの許可リスト(allowlist)は行われていない。
  • 標準的なAnthropicスタイルのAPIクライアントを使っているため、開発者が `ANTHROPIC_BASE_URL` を設定すると、同一のAPI仕様を実装しているClaude互換プロキシへClaude Codeをルーティングできる。
  • 記事では、この挙動はAPIの支出に対して実際に大きな影響を与えうると主張している。Claude Codeは、プロジェクト横断のワークロードや利用状況に応じて、Claude Proの料金で見積もられる形で素早く消費してしまう可能性があるためだ。
  • 今回のリークが主に提供しているのは、新機能を持ち込むというよりも、開発者が以前から疑っていた仕組み(API上書きのメカニズム)を裏付けることで、その動作の透明性を高めることだ。

Claude Codeのソースコードが流出—APIからわかること

Claude CodeのNPMパッケージに、誤ってマップファイルが同梱されてしまい、完全なソースコードが露出しました。今朝、Hacker Newsのスレッド(133pts and climbing)が爆発的に伸びています。

掘り下げました。以下は、プロダクションでClaude Codeを使っている開発者にとって興味深い点です。

流出したもの

NPMパッケージ内の.mapファイルに、元の圧縮前(アンミニファイ)のソースが含まれていました。マップファイルはデバッグ用です。圧縮されたコードを元のコードに対応づけます。Anthropicは公開前にこれらを取り除くのを忘れたようです。

結果として、npm install @anthropic-ai/claude-codeを実行した誰でも、完全なソースを入手できました。

ANTHROPIC_BASE_URLの実装

ここが私の目を引きました。ソースは、Claude CodeがANTHROPIC_BASE_URL環境変数をどのように扱うかを裏づけています:

// 流出したソース(簡略化)
const baseUrl = process.env.ANTHROPIC_BASE_URL || 'https://api.anthropic.com';
const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
  baseURL: baseUrl
});

これは単純な環境変数のオーバーライドです。特別なバリデーションなし。ドメインのホワイトリストなし。つまり:設定すれば、それを使うだけです。

これは、多くの開発者がすでに知っていたことを裏づけています—環境変数を1つ設定するだけで、Claude Codeを“Claude互換”の任意のAPIプロキシに向けられます。

なぜAPIコストに重要なのか

Claude Proは月20ドルです。Claude Codeはそれを素早く消費します—特に、大規模なコードベースで動かしている場合や、マルチステップのタスクを実行させている場合、複数のプロジェクトで使っている場合はなおさらです。

流出したソースは、Claude CodeがAnthropicのエンドポイントに対して何か特別なことをしていないことを示しています。標準的なAPIクライアントです。つまり、AnthropicのAPI仕様を実装したプロキシなら、透過的に動作します。

私はここ数カ月、SimplyLouieを自分のANTHROPIC_BASE_URLとして使っています—月額2ドルの定額で、Claude APIへのフルアクセス。流出したソースは、互換性を壊すようなエンドポイント側の独自(プロプライエタリ)な取り扱いは何もないことを裏づけています。

# シェルのプロファイルでこれを設定
export ANTHROPIC_BASE_URL=https://simplylouie.com/api/claude
export ANTHROPIC_API_KEY=your-key-here

# Claude Codeは今、プロキシ経由でルーティングする
claude "explain this codebase"

ほかに何が流出したのか

権限システムの内部:危険な操作(Bash(rm -rf:*) など)を防ぐ拒否リストは、素直な文字列の突合です。正規表現でも、セマンティック解析でもありません—コマンド文字列に対するリテラルなプレフィックス一致です。

これにより、明白なケースでうまく機能する理由と、創造的なユーザーがエッジケースを見つける理由の両方が説明できます:

// sourceからの拒否パターン
"Bash(rm -rf:/)"
"Bash(git push --force:*)" 
"Bash(git reset --hard:*)"

コンテキストウィンドウの管理:Claude Codeは、大きなファイルをコンテキスト制限の範囲に収めるために、重複するセグメントに分割します。重複サイズは、チャンクサイズの20%にハードコードされています。ファイルの境界で「忘れる」ように見えたなら、その理由がこれです。

ストリーミング実装:Claude Codeは、サーバー送信イベント(SSE)をカスタムの再接続ハンドラ付きで使っています。ターミナルに変な途中出力が表示される場合、たいていSSE接続が切れているだけです。

セキュリティ面

マップファイルの露出それ自体は、セキュリティ上の脆弱性というわけではありません—コードはAnthropicのサーバーではなく、あなたのローカルマシン上で動作します。しかし、それでも確認できることがあります:

  1. あなたのAPIキーはクライアント側で扱われる—AnthropicのWeb基盤を経由せず、単にAPIエンドポイントへ直接送られる
  2. 流出したバージョンにテレメトリはない—通常のAPI呼び出し以外の“通報(call-home)”コードはない
  3. ANTHROPIC_BASE_URLは完全なプロキシ—Claude Codeは、AnthropicのAPIと互換プロキシを区別できない

より大きな全体像

HNスレッドにはいつものように「これは何でもない(nothing-burger)」と「これは大ごと(big deal)」が混在しています。実態はその中間あたりです。

ほとんどの開発者にとっての有用なポイントは、APIオーバーライドがどう機能するかの裏取りです。AIコストを月20ドルから月2ドルに切りたい開発者にとっては、流出したソースが、プロキシ方式が完全にサポートされていることを技術的に検証する材料になります—必要なのは環境変数だけです。

月2ドルのClaude APIを試したいですか?simplylouie.com/developers

7日間の無料トライアル。8日目までは料金不要。
同じClaudeモデルで、価格はほんの一部。

流出についてHNで議論しよう—スレッドは進行が速いです。

返却形式: {"translated": "翻訳されたHTML"}

広告