# Claude Agent SDKの便利だけど知られていない機能
🌍 エージェントの作業ディレクトリ外のファイルにもアクセスを許可できる additionalDirectories オプションをご紹介します。
モノレポや共有ライブラリなど、複数ディレクトリにまたがるプロジェクトで威力を発揮します。
📌 タイトル:作業ディレクトリ外への追加アクセス許可
🔗 URL:
🧩 概要
`additionalDirectories` は `query()` のオプションで、エージェントが作業ディレクトリ(cwd)以外のパスにアクセスすることを許可する機能です。通常、エージェントは cwd 内のファイルのみを操作できますが、このオプションで追加のディレクトリを指定すると、そのパス内のファイルも読み書きできるようになります。`acceptEdits` パーミッションモードでは、追加ディレクトリ内の編集も自動承認されます。モノレポの別パッケージや共有ライブラリのディレクトリにアクセスする場合に特に有用です。
🛠 使い方
`query()` のオプションに `add_dirs`(TypeScript では `additionalDirectories`)を渡します。
```python
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
# モノレポ内の複数パッケージにアクセスを許可
async for message in query(
prompt="Update the shared utility functions and fix the imports in the web app",
options=ClaudeAgentOptions(
# cwd はデフォルトでプロセスの現在ディレクトリ
add_dirs=[
"/path/to/monorepo/packages/shared-utils",
"/path/to/monorepo/packages/web-app",
],
permission_mode="acceptEdits", # 追加ディレクトリ内の編集も自動承認
allowed_tools=["Read", "Edit", "Write", "Grep", "Glob"],
),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)
# 共有ライブラリとメインプロジェクトを同時に操作
async for message in query(
prompt="Check the shared library API and update our integration code",
options=ClaudeAgentOptions(
add_dirs=[
"/path/to/shared-library",
],
allowed_tools=["Read", "Edit", "Grep", "Glob"],
),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)
```
🏗 本番システムへの組み込み方
・モノレポ構成では、関連するパッケージのパスを `add_dirs` に列挙することで、パッケージ間の依存関係を考慮した変更が可能になります
・`acceptEdits` モードと組み合わせると、追加ディレクトリ内のファイル編集(Edit、Write)やファイルシステム操作(mkdir、rm、mv、cp)も自動承認されます
・保護対象のパスへの書き込みは追加ディレクトリに含めても依然としてプロンプトが表示されます
💡 ユースケース
📦 モノレポ開発:共有パッケージと個別アプリの両方を同時に変更する
📚 共有ライブラリ参照:外部ライブラリのソースを読み取り、正しいAPI使用法を確認しながらコーディングする
🔧 設定ファイルの集中管理:プロジェクト外の設定ディレクトリにアクセスして設定を更新する
⚠️ 注意点
・追加ディレクトリ外のパスへのアクセスは引き続きブロックまたはプロンプトが表示されます
・`bypassPermissions` モードでは全パスが許可されるため、`add_dirs` の設定とは無関係に動作します
・エージェントのセキュリティ境界を広げることになるため、必要最小限のパスのみを指定してください
・`acceptEdits` での自動承認は cwd と追加ディレクトリの範囲内に限定されます
✨ additionalDirectories を活用することで、複数ディレクトリにまたがるプロジェクトでもエージェントがシームレスに作業できるようになります。
#
ClaudeAgentSDK# #
AIAgent#