claude コマンドは何でできているのでしょうか。実体をたどると、ひとつの巨大な実行ファイルに行き着きます。バージョン 2.1.97 を題材に、中身を静的に観察しました。
実体は Bun 製の単一バイナリ
which claude で出るのはラッパーで、その先に本体があります。
~/.local/bin/claude → ~/.local/share/claude/versions/2.1.97
本体は Mach-O 64-bit arm64 の単一実行ファイルで、サイズは約 200MB。Bun(v1.3.11)でコンパイルされており、Node ランタイム・JS バンドル・依存ライブラリがまるごと 1 ファイルに同梱されています。巨大なのはそのためで、逆に言えば strings や grep で内部の文字列が読めてしまいます。バージョンは versions/ に複数保持され、差し替え式で更新されます。
組み込みツールとコマンド
バイナリには、エージェントが使うツールの名前と説明文が素の英文で埋め込まれています。中核は Read / Bash / Write / Edit、加えて Glob・Grep・WebFetch・Task(Agent)・Skill・TodoWrite など。サブコマンドも auth / mcp / plugin / agents / doctor / update と一通り揃います。
注目は --bare オプションで、フック・LSP・プラグイン同期・自動メモリ・CLAUDE.md 自動探索をすべて省く最小モードです。何が「標準で効いているか」を裏返しに教えてくれます。
マルチクラウド対応
意外だったのは、API バックエンドが Anthropic 直結だけではないことです。バイナリ内の出現回数からも、複数プロバイダ対応が見て取れます。
| プロバイダ | 制御フラグ |
|---|---|
| AWS Bedrock | CLAUDE_CODE_USE_BEDROCK |
| GCP Vertex | CLAUDE_CODE_USE_VERTEX |
| Azure Foundry | CLAUDE_CODE_USE_FOUNDRY |
| Mantle | CLAUDE_CODE_USE_MANTLE |
依存にも @aws-sdk/*・@smithy/*・@azure/msal-* が大量に同梱され、各クラウドの認証フローを内包しています。企業が自社のクラウド契約の上で動かせるよう作られている、ということです。
ローカルに残るもの
状態はすべて ~/.claude に集約されます。settings.json(設定)・mcp.json(MCP サーバ定義)・plugins/(拡張)・projects/(履歴とメモリ)・各種キャッシュが、役割ごとに分かれて置かれます。
ひとつ注意点があります。mcp.json には MCP サーバの環境変数がそのまま書かれるため、OAuth のクライアントシークレットのような資格情報が平文で残りうることです。誤って共有・コミットしないよう気をつけたい場所です。
まとめ
claudeは Bun でコンパイルされた約 200MB の単一バイナリ。Node とクラウド SDK を丸ごと内包する。- 中核ツールは Read/Bash/Write/Edit。
--bareが標準の自動挙動を裏側から見せてくれる。 - API は Anthropic 直のほか Bedrock/Vertex/Foundry/Mantle に対応。
- ローカル状態は
~/.claudeに集約。設定ファイルの平文クレデンシャルには注意。