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