Claude Code のシステムプロンプトを「丸ごと取り出せるか」と思ってバイナリを探ると、意外な作りに行き当たります。完成した一枚の文章としては入っていないのです。プロンプトとエージェントがどう組み立てられているかを見ていきます。
プロンプトは動的に合成される
バイナリ内のプロンプトは、短い文字列フラグメントの配列として散らばっています。起動時にヘルパー関数で結合され、そこへ実行時のコンテキスト——作業ディレクトリ、git の状態、日付、モデル、OS、開いているファイル——が差し込まれて完成します。
つまりシステムプロンプトは 静的な骨格 + 実行時の肉付け で組み上がります。だから「バイナリから完成形を抜く」より、実際に走っているセッションが受け取っているプロンプトこそが正、ということになります。骨格としては You are Claude Code, ... の宣言や # Tone and style・# Doing tasks といった見出し、防御的セキュリティや CTF を許可しつつ悪用は拒否する方針の語彙が確認できます。
起動形態による差分もあり、CLI を直接起動した場合と Agent SDK 経由で動く場合とで、冒頭の宣言文が切り替わります。
ツール説明文は素のまま埋まっている
一方で、各ツールの説明文は素の英文でバイナリに入っています。たとえば Bash なら「コマンドを実行し出力を返す。作業ディレクトリは持続するがシェル状態は持続しない」、Edit なら「ファイル内の厳密な文字列置換を行う」。エージェントがツールをどう理解しているかは、ここから読めます。
エージェントは「役割」を束ねたもの
claude agents を叩くと、組み込みのエージェントが並びます。
| エージェント | 既定モデル | 役割 |
|---|---|---|
general-purpose |
継承 | 複雑な調査・多段タスク |
Explore |
haiku | 読み取り専用の横断検索 |
Plan |
継承 | 実装戦略の設計 |
claude-code-guide |
haiku | Claude Code / SDK / API の質問対応 |
statusline-setup |
sonnet | ステータスライン設定 |
ここで効いているのが モデルの使い分けです。軽い探索や定型回答は haiku に、設定生成は sonnet に振り、汎用タスクは親セッションのモデルを継承する。エージェント=モデル+使えるツールセット+プロンプトを束ねた役割であり、コストと能力をタスクごとに最適化しているわけです。
エージェントとスキルの 2 層
拡張ポイントは 2 層に整理できます。エージェントが「役割」なら、スキルは「手順書」です。スキルはバイナリ同梱ではなく .claude/skills/<名前>/SKILL.md をファイルから読み、起動時に本文がコンテキストへ注入されます。役割はモデルとツールごと差し替え、手順はファイルで差し替え——という二段構えになっています。
まとめ
- システムプロンプトは静的フラグメント+実行時コンテキストの動的合成。完成形は走行中のセッションが正。
- ツール説明文はバイナリに素の英文で埋め込まれている。
- 組み込みエージェントは役割ごとにモデルを使い分け(haiku/sonnet/継承)、コストと能力を最適化する。
- 拡張は「エージェント=役割」「スキル=手順書」の 2 層構造。