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

検索結果 HookEm
HookEm コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
HookEm を含む検索結果
Do you know what フックの法則(Hooke's Law) is? Sorry,I don’t know 🤣 I only know that this MV is super interesting Hurry up and take a look! 👀 BEYOOOOONDS『フックの法則』Promotion Edit #BEYOOOOONDS# #Helloproject# @BEYOOOOONDS_
もっと見る
今日所见野花:钩状针垫草(hooked pincushionplant)、心叶科克花(heart leaf keckiella)、夏日冬青(summer holly)、圣地亚哥猴花(San Diego monkey flower)。
もっと見る
今日所见野花:萨卡佩罗特(Sacapellote)、小花锦葵(cheeseweed mallow)、白三叶草(white clover)、虎克月见草(Hooker’s evening primrose)。
# Claude Agent SDKの便利で実践的な使い方 🪝 エージェントの全動作をフックでインターセプトし、監査・制御・通知を実現できます。 フックは、`PreToolUse`・`PostToolUse`・`Stop`・`Notification` 等のライフサイクルイベントでカスタムコードを実行し、エージェントの動作を検証・ログ・ブロック・変換する機能です。 📌 タイトル:フックを使用してエージェントの動作をインターセプトして制御する 🔗 URL: 🧩 概要 フックは SDK のコールバック関数で、ツール実行前後・停止時・通知時等に発火します。`HookMatcher` で対象ツールをパターン指定でき、`permissionDecision` で許可/拒否を制御します。コンテキストウィンドウ外で実行されるためトークン消費なしです。 🛠 使い方 `hooks` オプションにイベント名(`PreToolUse` / `PostToolUse` / `Notification` 等)をキーとし、`HookMatcher` でマッチャパターン(`"Edit|Write"` や `"^mcp__"` 等)とコールバック関数を指定します。コールバックは `permissionDecision`(`allow` / `deny`)や `updatedInput` を返してツール実行を制御できます。 🏗 実践的な使い方 ・`PreToolUse` で `.env` への書き込みや `/etc` 操作を `deny` で停止し、`systemMessage` で理由を Claude に伝えます。 ・`PostToolUse` で全ファイル変更を監査ファイルに記録します(コンプライアンス用)。 ・`PreToolUse` で Write の `file_path` を書き換え、全書き込みを `/sandbox` へリダイレクトします(`updatedInput` + `allow`)。 ・`Notification` フックでパーミッション要求・アイドル状態を Slack や PagerDuty へ転送します。 💡 ユースケース 🛡 危険操作の自動ブロック 📝 全ファイル変更の監査ログ記録 📨 外部通知サービスへのイベント転送 🔀 書き込み先のサンドボックスリダイレクト ⚠️ 注意点 複数フックは並列実行され、`deny > defer > ask > allow` の優先順で決定されます。`async_: True` でエージェントを止めずに非同期処理が可能です。`SessionStart` / `SessionEnd` は TypeScript のみです。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 🪝 エージェントの全動作をフックでインターセプトし、監査・制御・通知を実現できます。 フックは、`PreToolUse`・`PostToolUse`・`Stop`・`Notification` 等のライフサイクルイベントでカスタムコードを実行し、エージェントの動作を検証・ログ・ブロック・変換する機能です。 📌 タイトル:フックを使用してエージェントの動作をインターセプトして制御する 🔗 URL: 🧩 概要 フックは SDK のコールバック関数で、ツール実行前後・停止時・通知時等に発火します。`HookMatcher` で対象ツールをパターン指定でき、`permissionDecision` で許可/拒否を制御します。コンテキストウィンドウ外で実行されるためトークン消費なしです。 🛠 使い方 `hooks` オプションにイベント名(`PreToolUse` / `PostToolUse` / `Notification` 等)をキーとし、`HookMatcher` でマッチャパターン(`"Edit|Write"` や `"^mcp__"` 等)とコールバック関数を指定します。コールバックは `permissionDecision`(`allow` / `deny`)や `updatedInput` を返してツール実行を制御できます。 🏗 実践的な使い方 ・`PreToolUse` で `.env` への書き込みや `/etc` 操作を `deny` で停止し、`systemMessage` で理由を Claude に伝えます。 ・`PostToolUse` で全ファイル変更を監査ファイルに記録します(コンプライアンス用)。 ・`PreToolUse` で Write の `file_path` を書き換え、全書き込みを `/sandbox` へリダイレクトします(`updatedInput` + `allow`)。 ・`Notification` フックでパーミッション要求・アイドル状態を Slack や PagerDuty へ転送します。 💡 ユースケース 🛡 危険操作の自動ブロック 📝 全ファイル変更の監査ログ記録 📨 外部通知サービスへのイベント転送 🔀 書き込み先のサンドボックスリダイレクト ⚠️ 注意点 複数フックは並列実行され、`deny > defer > ask > allow` の優先順で決定されます。`async_: True` でエージェントを止めずに非同期処理が可能です。`SessionStart` / `SessionEnd` は TypeScript のみです。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 エージェントがファイルを勝手に削除しようとしたら?実行時承認で安全にコントロールできます! `canUseTool` コールバックを使えば、ツール実行前にリアルタイムで承認・拒否・入力変更が可能です。 📌 タイトル:canUseTool コールバックによる実行時承認 🔗 URL: 🧩 概要 `canUseTool` はクエリオプションに渡すコールバック関数で、権限評価フローの最終ステップ(6番目)で呼び出されます。先行するステップ(allow ルールや `acceptEdits`・`bypassPermissions` モードなど)で自動承認されたツール呼び出しではコールバックは呼ばれないため、すべてのツール呼び出しに適用したいチェックは `PreToolUse` フックを使ってください。コールバックはツール名と入力パラメータを受け取り、`allow`(許可)または `deny`(拒否)を返します。許可時には入力を変更することも可能で、例えばパスをサンドボックス内に書き換えたり、危険なコマンドをブロックしたりできます。`dontAsk` モードでは呼び出されません。 🛠 使い方 ```python # Python - ツール実行の承認コールバック from claude_agent_sdk import ClaudeAgentOptions, query from claude_agent_sdk.types import PermissionResultAllow, PermissionResultDeny, HookMatcher async def can_use_tool(tool_name, input_data, context): print(f"\nツール: {tool_name}") if tool_name == "Bash": print(f"コマンド: {input_data.get('command')}") # rm コマンドをブロックしてアーカイブを提案 if "rm" in input_data.get("command", ""): return PermissionResultDeny( message="削除の代わりにアーカイブしてください" ) response = input("許可しますか? (y/n): ") if response.lower() == "y": return PermissionResultAllow(updated_input=input_data) return PermissionResultDeny(message="ユーザーが拒否しました") # ダミーフック(Python のストリーミングモードで必要) async def dummy_hook(input_data, tool_use_id, context): return {"continue_": True} ``` ```typescript // TypeScript - 入力を変更して許可する例 import { query } from "@anthropic-ai/claude-agent-sdk"; for await (const message of query({ prompt: "Clean up temporary files", options: { canUseTool: async (toolName, input) => { if (toolName === "Bash") { // パスをサンドボックス内に書き換え const sandboxed = { ...input, command: input.command.replace("/tmp", "/tmp/sandbox") }; return { behavior: "allow", updatedInput: sandboxed }; } return { behavior: "allow", updatedInput: input }; } } })) { /* ... */ } ``` 🏗 本番システムへの組み込み方 ・Web UIでツール実行の承認ダイアログを表示し、ユーザーの判断を返します ・`context.suggestions` から `PermissionUpdate` を取得し、「今後も許可」の永続化ルールを設定できます ・危険な操作(`rm`、`DROP TABLE` など)は自動的にブロックし、安全な代替案をメッセージで提案します ・入力のサニタイズ(パスの制限、パラメータの上書き)で、エージェントの行動範囲を動的に制御します 💡 ユースケース 🔒 本番データベースへの書き込みコマンドを承認制にする 📁 ファイル操作を特定のディレクトリに制限する(パスの動的書き換え) 👥 マルチユーザー環境で、ユーザーの権限レベルに応じてツール利用を制御する ⚠️ 注意点 ・Python では `canUseTool` を使うにはストリーミングモードと `PreToolUse` フックの設定が必要です ・`dontAsk` モードではコールバックがスキップされるため、セキュリティ上の制限にはフックを使用してください ・コールバックは回答まで無期限に実行を一時停止します。長時間のケースには `defer` フック決定を利用してください ✨ 「全部おまかせ」か「全部手動」かの二択ではなく、canUseTool で「要所だけ人間が判断する」スマートな運用を実現しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
# 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#
もっと見る