メインコンテンツへスキップ
Agent SDK は Claude Code と同じ基盤の上に構築されているため、SDK エージェントは同じファイルシステムベースの機能にアクセスできます。プロジェクト指示(CLAUDE.md とルール)、スキル、フック、その他の機能です。 settingSources を省略すると、query() は Claude Code CLI と同じファイルシステム設定を読み込みます。ユーザー、プロジェクト、ローカル設定、CLAUDE.md ファイル、.claude/ スキル、エージェント、コマンドです。これらなしで実行するには、settingSources: [] を渡します。これにより、エージェントはプログラムで設定したものに限定されます。マネージドポリシー設定とグローバル ~/.claude.json 設定は、このオプションに関係なく読み込まれます。settingSources が制御しないものを参照してください。 各機能の概念的な概要と使用時期については、Claude Code を拡張するを参照してください。

settingSources でファイルシステム設定を制御する

設定ソースオプション(Python では setting_sources、TypeScript では settingSources)は、SDK が読み込むファイルシステムベースの設定を制御します。特定のソースにオプトインするための明示的なリストを渡すか、ユーザー、プロジェクト、ローカル設定を無効にするための空の配列を渡します。 この例では、settingSources["user", "project"] に設定して、ユーザーレベルとプロジェクトレベルの両方の設定を読み込みます。
各ソースは特定の場所から設定を読み込みます。<cwd>cwd オプション経由で渡す作業ディレクトリです(設定されていない場合はプロセスの現在のディレクトリ)。完全な型定義については、SettingSource(TypeScript)または SettingSource(Python)を参照してください。 settingSources を省略することは ["user", "project", "local"] と同等です。 cwd オプションは、SDK がプロジェクトレベルの入力を探す場所を決定します。CLAUDE.md とルールは <cwd> と全親ディレクトリから読み込まれます。スキルは <cwd> とリポジトリルートまでの全親ディレクトリから読み込まれます。プロジェクト settings.json とフックは <cwd>/.claude/ からのみ読み込まれ、親ディレクトリへのフォールバックはありません。

settingSources が制御しないもの

settingSources はユーザー、プロジェクト、ローカル設定をカバーします。その値に関係なく読み込まれるいくつかの入力があります。
マルチテナント分離のためにデフォルトの query() オプションに依存しないでください。上記の入力は settingSources に関係なく読み込まれるため、SDK プロセスはホストレベルの設定とディレクトリごとのメモリを取得できます。マルチテナント展開の場合は、各テナントを独自のファイルシステムで実行し、settingSources: []envCLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を設定します。サーバー管理設定は、プロセスが組織認証情報で認証されるときに取得されます;ファイルシステム分離はそれらを削除しません。セキュアな展開を参照してください。

プロジェクト指示(CLAUDE.md とルール)

CLAUDE.md ファイルと .claude/rules/*.md ファイルは、エージェントにプロジェクトに関する永続的なコンテキストを提供します。コーディング規約、ビルドコマンド、アーキテクチャの決定、指示です。settingSources"project" が含まれている場合(上記の例のように)、SDK はセッション開始時にこれらのファイルをコンテキストに読み込みます。その後、エージェントはプロジェクト規約に従い、すべてのプロンプトで繰り返す必要がありません。

CLAUDE.md 読み込み場所

すべてのレベルは加算的です。プロジェクトとユーザーの両方の CLAUDE.md ファイルが存在する場合、エージェントは両方を見ます。レベル間に厳密な優先順位ルールはありません。指示が競合する場合、結果は Claude がそれらをどのように解釈するかに依存します。競合しないルールを記述するか、より具体的なファイルで優先順位を明示的に述べます(「これらのプロジェクト指示は、競合するユーザーレベルのデフォルトをオーバーライドします」)。
systemPrompt 経由でコンテキストを直接注入することもできます。CLAUDE.md ファイルを使用する必要はありません。システムプロンプトを変更するを参照してください。CLAUDE.md は、同じコンテキストをインタラクティブな Claude Code セッションと SDK エージェント間で共有したい場合に使用します。
CLAUDE.md コンテンツの構造と整理方法については、Claude のメモリを管理するを参照してください。

スキル

スキルは、エージェントに専門知識と呼び出し可能なワークフローを提供するマークダウンファイルです。CLAUDE.md(すべてのセッションで読み込まれる)とは異なり、スキルはオンデマンドで読み込まれます。エージェントはスタートアップ時にスキルの説明を受け取り、関連するときに完全なコンテンツを読み込みます。 スキルは settingSources を通じてファイルシステムから検出されます。query()skills オプションが省略されている場合、検出されたユーザーとプロジェクトのスキルが有効になり、Skill ツールが利用可能になります。これは CLI の動作と一致します。どのスキルを有効にするかを制御するには、skills"all"、スキル名のリスト、または [] を渡してすべてを無効にします。skills が設定されている場合、SDK は Skill ツールを allowedTools に自動的に追加します。明示的な tools リストも渡す場合は、Claude がスキルを呼び出せるようにそのリストに "Skill" を含めてください。
スキルはファイルシステムアーティファクト(.claude/skills/<name>/SKILL.md)として作成する必要があります。SDK にはスキルを登録するためのプログラマティック API がありません。詳細については、SDK のエージェントスキルを参照してください。
スキルの作成と使用の詳細については、SDK のエージェントスキルを参照してください。

フック

SDK は 2 つの方法でフックを定義することをサポートしており、それらは並行して実行されます。
  • ファイルシステムフック: settings.json で定義されたシェルコマンド。settingSources に関連するソースが含まれている場合に読み込まれます。これらはインタラクティブな Claude Code セッション用に設定するのと同じフックです。
  • プログラマティックフック: query() に直接渡されるコールバック関数。これらはアプリケーションプロセスで実行され、構造化された決定を返すことができます。フックで実行を制御するを参照してください。
両方のタイプは同じフックライフサイクル中に実行されます。プロジェクトの .claude/settings.json にフックが既にあり、settingSources: ["project"] を設定している場合、それらのフックは追加の設定なしで SDK で自動的に実行されます。 フックコールバックはツール入力を受け取り、決定辞書を返します。{} を返すことはツールの実行を許可することを意味します。実行をブロックするには、permissionDecision: "deny"permissionDecisionReason を含む hookSpecificOutput オブジェクトを返します。理由は Claude にツール結果として送信されます。トップレベルの decisionreason フィールドは PreToolUse では非推奨です。完全なコールバック署名と戻り値の型については、フックガイドを参照してください。

どのフックタイプを使用するか

TypeScript SDK は Python を超えた追加のフックイベントをサポートしており、SessionStartSessionEndTeammateIdleTaskCompleted が含まれます。完全なイベント互換性テーブルについては、フックガイドを参照してください。
プログラマティックフックの詳細については、フックで実行を制御するを参照してください。ファイルシステムフック構文については、フックを参照してください。

適切な機能を選択する

Agent SDK は、エージェントの動作を拡張するいくつかの方法へのアクセスを提供します。どれを使用するか不確かな場合、このテーブルは一般的な目標を正しいアプローチにマップします。
Subagents 対 agent teams: Subagents は一時的で分離されています。新しい会話、1 つのタスク、親に返される要約。Agent teams は、タスクリストを共有し、直接メッセージを送り合う複数の独立した Claude Code インスタンスを調整します。Agent teams は CLI 機能です。詳細については、What subagents inheritagent teams comparisonを参照してください。
有効にする機能ごとに、エージェントのコンテキストウィンドウに追加されます。機能ごとのコストとこれらの機能がどのように層状に配置されるかについては、Extend Claude Codeを参照してください。
  • Claude Code を拡張する:すべての拡張機能の概念的な概要、比較テーブル、コンテキストコスト分析
  • SDK のスキル:スキルをプログラムで使用するための完全なガイド
  • サブエージェント:分離されたサブタスク用のサブエージェントを定義して呼び出す
  • フック:主要な実行ポイントでエージェントの動作をインターセプトして制御する
  • 権限:モード、ルール、コールバックでツールアクセスを制御する
  • システムプロンプト:CLAUDE.md ファイルなしでコンテキストを注入する