Slide 1

Slide 1 text

Prompt-Based Hooksの罠 Claude Code Meetup Tokyo 2025/12/22

Slide 2

Slide 2 text

自己紹介 HN:natsuume Twitter(X):@_natsuume 所属:Gen-AX株式会社 技術書典18にて「Claude Code × MCP Serverの手引き」で出展 - 「第10回 刺され!技術書アワード」大賞に選出 インプレス NextPublishing 技術の泉シリーズより Claude Codeの書籍を刊行予定 (物理本は POD)

Slide 3

Slide 3 text

本題

Slide 4

Slide 4 text

Prompt-Based Hooks Claude Code Hooksの機能の1つ シェルコマンドの代わりにプロンプトを与えてLLMに自律的にレスポンスを生成させる機 能 ※12月上旬に検証した内容なので、サイレントで修正されている可能性は無きにしもあ らず 参考:https://code.claude.com/docs/en/hooks    https://code.claude.com/docs/ja/hooks

Slide 5

Slide 5 text

Prompt-Based Hooksはどこで使える? > Prompt-based hooks are currently only supported for Stop and SubagentStop hooks, where they enable intelligent, context-aware decisions. > プロンプトベースのフックは現在 Stopと SubagentStopフックのみでサポートされており、イ ンテリジェントでコンテキスト認識の決定を可能に します。 > Prompt-based hooks work with any hook event, but are most useful for: … > プロンプトベースのフックはすべてのフックイベン トで機能しますが、以下に最も有用です: ...

Slide 6

Slide 6 text

Prompt-Based Hooksはどこで使える? > Prompt-based hooks are currently only supported for Stop and SubagentStop hooks, where they enable intelligent, context-aware decisions. > プロンプトベースのフックは 現在Stopと SubagentStopフックのみでサ ポートされており、インテリジェントでコンテキス ト認識の決定を可能にします。 > Prompt-based hooks work with any hook event, but are most useful for: … > プロンプトベースのフックは すべてのフック イベントで機能します が、以下に最も有 用です:...

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

実際の挙動 - 基本的にほとんどのフックイベントで利用できる - SessionEndやNotificationなどほぼ意味がないイベントもある - but 常に動作しないフックイベントもある - SessionStart:エラーになる - UserPromptSubmit:フック自体はエラーにならないが、問題があり利用不可 どちらの説明も正しくない!!!!

Slide 9

Slide 9 text

UserPromptSubmitでのPrompt-Based Hooks - Prompt-Based Hooksのプロンプト処理時にUserPromptSubmit Hookが発火 - Prompt-Based Hooksの末尾に、入力内容が$ARGUMENTSで埋め込まれる ↓ 無限ループ & OoMで死!!

Slide 10

Slide 10 text

現時点でPrompt-Based Hooksをどこで使うべきか 公式リファレンスでは… - Stop: Intelligently decide if Claude should continue working - SubagentStop: Evaluate if a subagent has completed its task - UserPromptSubmit: Validate user prompts with LLM assistance - PreToolUse: Make context-aware permission decisions - PermissionRequest: Intelligently allow or deny permission dialogs

Slide 11

Slide 11 text