# Claude Agent SDKの便利だけど知られていない機能
🌍 セッション途中で権限を変えたい?ストリーミング中に権限モードを動的に切り替えられます!
Claude Agent SDKでは、セッション実行中に `set_permission_mode()` を呼ぶだけで、権限モードを即座に変更できます。
📌 タイトル:ストリーミング中の権限モード動的変更
🔗 URL:
🧩 概要
`set_permission_mode()`(Python)/ `setPermissionMode()`(TypeScript)を使うと、セッションの途中で権限モードをリアルタイムに変更できます。新しいモードは即座に有効となり、以降のすべてのツールリクエストに適用されます。「最初は厳格に、信頼が築けたら緩める」という段階的な権限管理が実現できます。
🛠 使い方
```python
# Python - 段階的に権限を緩和する例
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
async def main():
async with ClaudeSDKClient(
options=ClaudeAgentOptions(
permission_mode="default", # まずはデフォルトで開始
)
) as client:
await client.query("このコードをリファクタリングしてください")
# アプローチを確認後、編集を許可
await client.set_permission_mode("acceptEdits")
async for message in client.receive_response():
if hasattr(message, "result"):
print(message.result)
```
```typescript
// TypeScript
const q = query({
prompt: "Refactor this code",
options: { permissionMode: "default" }
});
// アプローチ確認後に編集を許可
await q.setPermissionMode("acceptEdits");
for await (const message of q) {
if ("result" in message) console.log(message.result);
}
```
🏗 本番システムへの組み込み方
・「plan → 確認 → acceptEdits」のワークフローで、安全なステップバイステップの自動化を実現します
・ユーザーの信頼度や操作の進行状況に応じて、段階的に権限を拡大するインタラクティブなアプリを構築できます
・エラー検出時に権限を引き締める「フォールバック」パターンにも活用できます
・監視システムと連携し、異常検知時に自動的に制限的なモードへ切り替えることも可能です
💡 ユースケース
🔐 コードレビュー後に編集権限を付与する対話型ワークフロー
📈 タスクの進捗に応じて権限を段階的に拡大するプログレッシブな自動化
🛡 異常を検知したら即座に制限モードに切り替える防御的エージェント
⚠️ 注意点
・新しいモードは即座に有効になるため、切り替えのタイミングに注意してください
・モード変更は現在のセッション内でのみ有効です
・`bypassPermissions` や `auto` モードに切り替えた場合、サブエージェントにも継承される点に注意が必要です
✨ 権限の動的変更は「最初は安全に、必要に応じて柔軟に」を実現する強力なツールです。段階的な信頼構築のワークフローにぜひ活用してください!
#
ClaudeAgentSDK# #
AIAgent#