Agent SDK のシステムプロンプト|4つの変え方と選び方

公開 更新 著者 永上裕之仕事の自動化
AIの頭の上に、性格や役割を書いた指示書が何枚も重なっているイメージ

この記事の要点

  • 何も指定しないと、SDK は道具を呼ぶための最小限の指示だけを使う。Claude Code の安全の指示は入らない
  • 迷ったら claude_code プリセット+append。何も消さずに自分の指示を足せるので、いちばん安全
  • 会話の途中で指示を変えても、再開した会話にはすぐ届かない。変えたい時は次のメッセージかフックで伝える

AI エージェントを自社の仕事に合わせるとき、最初に触るのが システムプロンプト(AI の役割や守ることを決める最初の指示) です。ところが Agent SDK では、何も書かないと Claude Code と同じ指示にはならない など、知らないとつまずく点がいくつかあります。

この記事では、公式ドキュメント「Modifying system prompts」(2026年11月10日確認)にもとづいて、システムプロンプトの4つの変え方と、作るものに合わせた選び方を整理します。SDK の全体像は Claude Agent SDK とは を参照してください。

まず知っておきたい:何も書かないと「最小限」になる

systemPrompt を指定しないと、SDK は道具を呼ぶための最小限の指示だけを使います。 Claude Code 本体が持っている安全や作業のための指示は入りません。コマンドから claude -p で動かした時とは違うので、注意が必要です。

出発点は次の3つです。

出発点中身
何も指定しない道具を呼ぶための最小限の指示だけ
claude_code プリセットClaude Code 本体と同じ指示(道具の使い方・安全の指示を含む)
自分で書いた文字列書いたものだけ。それ以外は何も入らない

作るものから選ぶ早見表

決め手は、作るものが Claude Code にどれだけ近いか です。人が画面を見ながら作業を進めるコード向けの道具なら、プリセットがそのまま合います。

作るもの選ぶもの
Claude Code に近い、コードを書く道具claude_code プリセット
同じ道具に、社内のルールや出力の形を足したいプリセット+append(いちばん安全)
問い合わせ対応・分析など、名前や役割が違う AI自分で書いた文字列
指示はすべて依頼文に書く、薄い仕組み何も指定しない

「Claude Code と違う」とは、たとえば 画面の出力を人が読まない、別の名前で名乗る、人の確認なしで動く、コード以外の仕事をする といった場合です。自分で書く場合は、プリセットにあった安全の指示を、自分で入れ直す責任があります。

指示書が4種類並び、作るものに応じて矢印で選ばれる図
指示書が4種類並び、作るものに応じて矢印で選ばれる図(イメージ)

4つの変え方を比べる

システムプロンプトそのものを変える以外にも、AI の動きを変える方法があります。大事なのは「どこに置かれ、何が残るか」 です。

方法置き場所共有Claude Code の指示
CLAUDE.mdフォルダごとのファイルチームで共有しやすいそのまま残る
出力スタイルファイルほかのフォルダでも使い回せる作業の指示は外れる(残す設定あり)
プリセット+appendプログラムの中会話ごとすべて残る
自分で書いた文字列プログラムの中会話ごとすべて置き換わる

CLAUDE.md はシステムプロンプトを変えず、会話の中に「フォルダの決まり」として差し込まれます。 そのため、どの変え方とも一緒に使えます。読み込むかどうかは settingSources で決まり、既定では読み込まれます。CLAUDE.md の書き方は CLAUDE.md の書き方 で、出力スタイルは Claude Code の出力スタイル で解説しています。

途中で指示を変えたいとき

ここがいちばんの落とし穴です。再開した会話(resume・continue)に別の append や文字列を渡しても、次の返事には届きません。 Claude Code は会話の最初の依頼でシステムプロンプトを記録し、会話が要約(圧縮)されるまで使い回すためです。

途中で変えたいときは、次のどちらかで伝えます。

文言を試している間だけは、記録を止める設定(snapshot を false)も使えます。ただし本番では記録を残したままにします。記録を止めると、キャッシュ(同じ指示の読み込みを安く速くする仕組み)が効かなくなるためです。キャッシュの考え方は プロンプトキャッシュ で解説しています。

たくさんの AI で同じ指示を使い回すコツ

同じプリセットと append を使っていても、利用者ごとの情報が指示の中に入ると、キャッシュを共有できません。 excludeDynamicSections(Python では exclude_dynamic_sections)を true にすると、利用者ごとの情報を最初のメッセージに移し、指示の部分を全員で同じにできます。そのぶん、移した情報は少しだけ効きが弱くなる、と公式は説明しています。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事