登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

検索結果 hookup
hookup コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
hookup を含む検索結果
# Claude Agent SDKの便利だけど知られていない機能 🌍 権限評価は5段階のパイプライン。どこで何が決まるか理解すれば、セキュリティ設計が格段にクリアになります。 フック、拒否ルール、権限モード、許可ルール、コールバックの順で厳密に評価されます。 📌 タイトル:5段階の権限評価順序 🔗 URL: 🧩 概要 Claude Agent SDKのツール使用権限は、5段階のパイプラインで評価されます。(1) フック:PreToolUseフックが最初に実行され、deny可能。ただしallowを返しても後続の評価はスキップされません。(2) 拒否ルール:disallowed_toolsで指定されたツールをチェック。ツール名のみの指定(例:"Bash")はコンテキストからツール定義ごと除去。スコープ付き(例:"Bash(rm *)")はbypassPermissionsでもブロック。(3) 権限モード:bypassPermissionsはここに到達したものをすべて承認。acceptEditsはファイル操作を承認。(4) 許可ルール:allowed_toolsに一致すれば承認。(5) canUseToolコールバック:上記で解決しなかった場合に呼ばれます。判定の優先順位はdeny > defer > ask > allowです。 🛠 使い方 ```python import asyncio from claude_agent_sdk import ( ClaudeSDKClient, ClaudeAgentOptions, HookMatcher, ) # Stage 1: フックで特定操作をブロック async def block_dangerous_commands(input_data, tool_use_id, context): if input_data.get("tool_name") == "Bash": command = input_data["tool_input"].get("command", "") if "rm -rf" in command: return { "hookSpecificOutput": { "hookEventName": input_data["hook_event_name"], "permissionDecision": "deny", "permissionDecisionReason": "rm -rf は禁止されています", } } return {} async def main(): options = ClaudeAgentOptions( # Stage 1: フック hooks={ "PreToolUse": [ HookMatcher(matcher="Bash", hooks=[block_dangerous_commands]) ], }, # Stage 2: 拒否ルール(ツール名のみ = コンテキストから完全除去) disallowed_tools=["WebFetch"], # Stage 3: 権限モード permission_mode="acceptEdits", # ファイル操作を自動承認 # Stage 4: 許可ルール allowed_tools=["Read", "Glob", "Grep", "Edit", "Write"], ) # Stage 5: canUseToolは別途query()やClaudeSDKClientで設定可能 async with ClaudeSDKClient(options=options) as client: await client.query("コードを改善して") async for message in client.receive_response(): print(message) ``` ロックダウン構成の例: ```python # 最小権限の原則:許可したツールのみ、それ以外は即拒否 options = ClaudeAgentOptions( allowed_tools=["Read", "Glob", "Grep"], permission_mode="dontAsk", # 未許可ツールはプロンプトなしで拒否 ) ``` 🏗 本番システムへの組み込み方 ・allowed_toolsはbypassPermissionsを制約しません。allowed_toolsに"Read"だけ指定しても、bypassPermissionsではすべてのツールが承認されます ・特定ツールを完全にブロックするにはdisallowed_toolsを使用してください(bypassPermissionsでも有効) ・最小権限を実現するにはallowed_tools + permission_mode="dontAsk"の組み合わせが最適です ・フックのallowは「このフックとしてはOK」という意味であり、後続の拒否ルールやモード評価を上書きしません 💡 ユースケース 🔒 最小権限エージェント:Read/Glob/Grepのみ許可し、dontAskで他を即拒否 🛡 段階的信頼構築:defaultモードで開始し、レビュー後にacceptEditsに昇格 🚫 危険操作の排除:disallowed_toolsでBashを完全除去、またはBash(rm *)でスコープ付きブロック 🔍 監査付き承認:フックで全リクエストをログ記録しつつ、ルールベースで自動判定 ⚠️ 注意点 ・allowed_toolsに含まれないツールは「拒否」ではなく「未解決」として次の段階に進みます ・disallowed_toolsでツール名のみを指定すると、ツール定義がコンテキストから除去され、エージェントはそのツールの存在自体を認識しなくなります ・bypassPermissionsはサブエージェントにも継承されます。サブエージェントは異なるシステムプロンプトを持つ可能性があるため、注意が必要です ・複数のフックが同じイベントに登録されている場合、最も厳しい判定が採用されます ✨ 5段階の権限パイプラインを理解して、堅牢なセキュリティ設計を実現しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る