Skip to content

原文(日本語訳)

エージェントのフロントマター hooks: が、--agent フラグを使用してメインスレッドエージェントとして実行した場合にも発火するようになりました。

原文(英語)

Agent frontmatter hooks: now fire when running as a main-thread agent via --agent

概要

Claude Codeのエージェント(.claude/agents/ ディレクトリのMarkdownファイル)はフロントマターで hooks: を定義できます。従来、このフックはサブエージェントとして呼び出された場合のみ機能していましたが、v2.1.116では --agent フラグでメインスレッドエージェントとして直接起動した場合にも適切に発火するようになりました。

基本的な使い方

エージェント定義ファイル(.claude/agents/my-agent.md)でフロントマターにフックを設定します。

markdown
---
name: my-agent
description: カスタムエージェント
hooks:
  PreToolUse:
    - command: echo "Tool use started"
  PostToolUse:
    - command: echo "Tool use completed"
---

エージェントの指示内容をここに記述します。
bash
# --agent フラグで直接起動(hooks が発火するようになった)
claude --agent my-agent "タスクを実行してください"

実践例

ツール使用の監査ログ記録

markdown
---
name: audited-agent
description: ツール使用を監査するエージェント
hooks:
  PreToolUse:
    - command: |
        echo "$(date): Tool call started" >> /tmp/agent-audit.log
  PostToolUse:
    - command: |
        echo "$(date): Tool call completed" >> /tmp/agent-audit.log
---

監査ログを記録しながらタスクを実行します。
bash
# メインスレッドエージェントとして起動しても hooks が動作する
claude --agent audited-agent "コードをレビューしてください"
cat /tmp/agent-audit.log

特定ツールの使用制限

markdown
---
name: safe-agent
description: 安全な操作のみを行うエージェント
hooks:
  PreToolUse:
    - command: |
        if [ "$TOOL_NAME" = "Bash" ]; then
          echo "WARNING: Bash tool detected"
        fi
---
bash
claude --agent safe-agent "安全な範囲でタスクを実行してください"

注意点

  • --agent フラグはエージェントをメインスレッドで実行します(サブエージェントとして起動する通常の呼び出しとは異なります)
  • フックは PreToolUsePostToolUseStop などのイベントをサポートしています
  • フックコマンドが失敗しても、エージェントの処理は継続されます(stopOnFailure を設定した場合を除く)
  • フック内で使用できる環境変数については公式ドキュメントを参照してください

関連情報