[アップデート] Claude Code Agent Teamsのタスク作成時にhookスクリプトを実行できるようになりました

[アップデート] Claude Code Agent Teamsのタスク作成時にhookスクリプトを実行できるようになりました

Claude Codeのタスク作成時にタスク名のバリデーションやログの記録ができるほか、特定条件を満たすタスク作成のブロックもできます
2026.03.27

はじめに

おのやんです。

Claude Code v2.1.84で、TaskCreatedhookが追加されました。Agent Teams機能でタスクが作成されたときに、hookスクリプトを実行できるようになっています。

https://github.com/anthropics/claude-code/releases/tag/v2.1.84

Claude Codeのhookを使うと、特定のイベントが発生した時にシェルスクリプトなどを自動実行できます。PreToolUsePostToolUseStopといったイベントが用意されていますが、今回新たにTaskCreatedが追加されました。

https://code.claude.com/docs/en/hooks#taskcreated

TaskCreatedhookは、Agent TeamsのTaskCreateツールでタスクが作成されたタイミングで発火します。hookスクリプトはstdinからJSON形式でタスク情報を受け取れるので、タスク名のバリデーションやログの記録といった用途に使えます。

hookが受け取るJSONには以下のフィールドが含まれます。

フィールド 説明
session_id セッションの識別子
transcript_path セッションのトランスクリプトファイルパス
cwd 作業ディレクトリ
hook_event_name イベント名(TaskCreated固定)
task_id タスクの識別子
task_subject タスクのタイトル
task_description タスクの詳細説明

また他のhookと同様に、TaskCeratedhookでも終了コードによってタスク作成の制御ができます。exit code 0で許可、exit code 2でタスク作成をブロック(stderrの内容がモデルへのフィードバックになる)という仕組みを使って、特定の条件を満たすタスク作成をブロックすることもできたりします。

https://code.claude.com/docs/en/hooks#taskcreated

やってみた

ということで、実際にTaskCreatedhookを設定して、Agent Teamsでタスクが作成された時にhookが発火することを確認してみます。まずはClaude Codeのバージョンを確認し、v2.1.85であることを確認します。

$ claude --version
2.1.85 (Claude Code)

# 最新版ではなかったらアップデート
$ claude update

それでは、実際にタスクを作成していきます。

Agent Teamsは、記事執筆時点では実験的機能(参考:Orchestrate teams of Claude Code sessions - Claude Code Docs)です。弊社でもブログを公開しています。

https://dev.classmethod.jp/articles/claude-code-agent-teams-how-to-build/

Agent Teams使用時は、環境変数で有効化する必要があります。~/.claude/settings.jsonに以下を追加します。

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

TaskCreated発火時にタスク情報をログファイルに記録するスクリプトを作成します。

#!/bin/bash
# TaskCreated hook - タスク作成時のイベントデータをログに記録する
set -e

LOG_FILE="/tmp/claude-task-created-hook.log"
INPUT=$(cat)

echo "=== TaskCreated Hook Fired: $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOG_FILE"
echo "$INPUT" | jq '.' >> "$LOG_FILE"
echo "" >> "$LOG_FILE"

exit 0

スクリプトに実行権限を付与します。

chmod +x .claude/hooks/log-task-created.sh

~/.claude/settings.jsonにTaskCreated hookを追加します。

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  },
+  "hooks": {
+    "TaskCreated": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "/path/to/project/.claude/hooks/log-task-created.sh"
+          }
+        ]
+      }
+    ]
+  }
}

CLIのインタラクティブモードでClaude Codeを起動し、エージェントチームにタスク作成を指示します。

CLI経由でClaude Codeを起動し、エージェントチームにタスク作成を指示.png

ログファイルを確認すると、タスクが作成されるたびにhookが発火し、タスク情報がJSON形式で記録されていました。

cat /tmp/claude-task-created-hook.log
=== TaskCreated Hook Fired: 2026-03-27 12:55:59 ===
{
  "session_id": "b35f01b7-2ea1-443e-9337-26dd52a97032",
  "transcript_path": "/Users/user/.claude/projects/.../b35f01b7.jsonl",
  "cwd": "/Users/user/project",
  "hook_event_name": "TaskCreated",
  "task_id": "1",
  "task_subject": "S3バケット一覧を取得する",
  "task_description": "aws s3 ls --profile myprofile コマンドを実行して、S3バケットの一覧を取得し結果を報告してください。"
}

=== TaskCreated Hook Fired: 2026-03-27 12:56:06 ===
{
  "session_id": "b35f01b7-2ea1-443e-9337-26dd52a97032",
  "transcript_path": "/Users/user/.claude/projects/.../b35f01b7.jsonl",
  "cwd": "/Users/user/project",
  "hook_event_name": "TaskCreated",
  "task_id": "2",
  "task_subject": "セキュリティグループ一覧を取得する",
  "task_description": "aws ec2 describe-security-groups --profile myprofile --query \"SecurityGroups[*].{ID:GroupId,Name:GroupName,VPC:VpcId}\" --output table コマンドを実行して、セキュリティグループの一覧を取得し結果を報告してください。"
}

task_subjectにタスクのタイトル、task_descriptionに具体的な実行コマンドまで含む詳細な説明が記録されています。タスクが作成されるたびにhookが発火するので、チーム全体のタスク作成を管理することもできそうです。

exit code 2を返すことで、タスク作成のブロックもできます。hookスクリプトを以下のように変更します。

#!/bin/bash
set -e

LOG_FILE="/tmp/claude-task-created-hook.log"
INPUT=$(cat)
TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

# タスク名に「削除」が含まれていたらブロック
if echo "$TASK_SUBJECT" | grep -q "削除"; then
  echo "安全のため、削除を含むタスクの作成はブロックされました" >&2
  exit 2
fi

# それ以外はログに記録して許可
echo "=== TaskCreated Hook Fired: $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOG_FILE"
echo "$INPUT" | jq '.' >> "$LOG_FILE"
echo "" >> "$LOG_FILE"

exit 0

exit code 2で終了すると、stderrに出力したメッセージがモデルへのフィードバックとして渡され、タスク作成が中止されます。タスク命名規約の強制や、危険な操作の防止といったガードレールとして使えます。

TaskCreated hookによって、「削除」が含まれているタスクをブロック.png

まとめ

Claude Code v2.1.84で追加されたTaskCreatedhookを検証しました。Agent Teamsでタスクが作成されたタイミングでhookが発火し、タスク情報をJSON形式で受け取れます。exit code 2でタスク作成をブロックする機能もあるので、チーム運用のガードレールとしても活用できそうですね。現時点ではCLIのインタラクティブモード限定で、VSCode拡張では動作しない点は注意が必要です。では!

この記事をシェアする

FacebookHatena blogX

関連記事