# Claude Agent SDKの便利だけど知られていない機能
🌍 SDK エージェントが読み込む設定ファイルを、setting_sources で細かくコントロールできます。
CLAUDE.md、スキル、フック、settings.json の読み込み元を選択的に制御し、マルチテナント環境での分離も実現できます。
📌 タイトル:setting_sources による .claude/ 設定の選択的ロード
🔗 URL:
🧩 概要
`setting_sources`(TypeScript では `settingSources`)は、SDK がファイルシステムからどの設定を読み込むかを制御するオプションです。3つのソースがあります。`"project"` は `
/.claude/` 配下の settings.json、フック、CLAUDE.md、スキルを読み込みます。`"user"` は `~/.claude/` 配下のユーザーレベル設定を読み込みます。`"local"` は `.claude/settings.local.json` や `CLAUDE.local.md` を読み込みます。省略時はすべて(`["user", "project", "local"]`)が有効になります。空配列 `[]` を渡すとすべてのファイルシステム設定を無効化できます。なお、マネージドポリシーと `~/.claude.json` は常に読み込まれます。
🛠 使い方
`setting_sources` にリストを渡して、必要なソースのみを有効化します。
```python
from claude_agent_sdk import query, ClaudeAgentOptions
# プロジェクトとユーザーの設定を読み込む
async for message in query(
prompt="Help me refactor the auth module",
options=ClaudeAgentOptions(
setting_sources=["user", "project"], # CLAUDE.md, skills, hooks を有効化
allowed_tools=["Read", "Edit", "Bash"],
),
):
pass
# すべてのファイルシステム設定を無効化(プログラムで渡す設定のみ使用)
async for message in query(
prompt="Analyze this code",
options=ClaudeAgentOptions(
setting_sources=[], # ファイルシステムからの設定読み込みを完全に無効化
),
):
pass
```
🏗 本番システムへの組み込み方
・マルチテナント環境では `setting_sources=[]` と `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` を組み合わせて、テナント間の設定漏洩を防止できます
・CLAUDE.md を SDK エージェントで活用するには `"project"` を含める必要があります(含めないと読み込まれません)
・各ソースの読み込み先は以下の通りです:
- `"project"`: `/.claude/` から settings.json とフック、`` と親ディレクトリから CLAUDE.md とルール
- `"user"`: `~/.claude/` からユーザー設定、CLAUDE.md、ルール
- `"local"`: `/.claude/settings.local.json` と親ディレクトリの CLAUDE.local.md
💡 ユースケース
🔒 セキュアなマルチテナント:各テナントを独立したファイルシステムで実行し、`setting_sources=[]` で他テナントの設定を遮断する
🏗 CI/CD パイプライン:`"project"` のみを有効にして、リポジトリ固有の CLAUDE.md とスキルだけを読み込む
👤 ユーザーカスタマイズの許可:`"user"` を含めることで、開発者個人の `~/.claude/CLAUDE.md` も反映する
⚠️ 注意点
・`setting_sources` で制御できないものがあります:マネージドポリシー、`~/.claude.json`、オートメモリ(`~/.claude/projects/` 配下)、 MCP コネクタ
・オートメモリを無効にするには `autoMemoryEnabled: false` または環境変数 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` を設定してください
・`setting_sources` を明示的に設定する場合、デフォルトの3ソースすべてが無効化されるため、必要なソースを漏れなくリストしてください
✨ setting_sources を適切に設定することで、エージェントの設定読み込みを精密に制御し、安全で予測可能な動作を実現できます。
#ClaudeAgentSDK# #AIAgent#