Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
各フックイベントは、エージェントのライフサイクル内の特定の時点で発火します。どのツール呼び出しでフックがトリガーされるかを絞り込むには、matcher フィールド (フックイベントの tool_name に一致する正規表現) を利用します。
ツールが実行される前に呼び出されます。これを利用して、ツール呼び出しをブロックしたり、変更したり、前提情報を追加したりできます。
標準入力データ:
| フィールド | 説明 | 例 |
|---|
tool_name | 呼び出すツールの名前 | exec, edit, mcp__github__create_issue |
tool_input | ツールに渡す引数 | { "command": "rm -rf /", "shell_id": "main" } |
例 — 破壊的なコマンドをブロックする:
{
"PreToolUse": [
{
"matcher": "exec",
"hooks": [
{
"type": "command",
"command": "python3 -c \"import sys, json; data = json.load(sys.stdin); cmd = data.get('tool_input', {}).get('command', ''); sys.exit(2 if 'rm -rf' in cmd else 0)\""
}
]
}
]
}
例 — src/ 外への書き込みでは確認を必須にする:
ツールへの入力を検査し、判定を返すスクリプトを利用します。
{
"PreToolUse": [
{
"matcher": "edit",
"hooks": [
{
"type": "command",
"command": "./scripts/check-edit-path.sh",
"timeout": 5
}
]
}
]
}
ツールの実行完了後に実行されます。ログの記録、検証、または後続アクションのトリガーに利用します。
標準入力データ:
| Field | Description |
|---|
tool_name | 実行されたツールの名前 |
tool_input | 渡された引数 |
tool_response | success (boolean) 、output (string) 、error (string または null) を含むオブジェクト |
例 — すべてのシェルコマンドをログに記録する:
{
"PostToolUse": [
{
"matcher": "exec",
"hooks": [
{
"type": "command",
"command": "sh -c 'cat >> ~/.devin-command-log'"
}
]
}
]
}
エージェントが許可するかどうかの判断を必要とするときに発生します。これを利用して、カスタムの承認ロジックを実装できます。
標準入力データ:
| Field | Description |
|---|
tool_name | 許可を要求しているツール |
tool_input | ツール呼び出しの引数 |
例 — git コマンドを自動承認する:
{
"PermissionRequest": [
{
"matcher": "exec",
"hooks": [
{
"type": "command",
"command": "python3 -c \"import sys, json; data = json.load(sys.stdin); cmd = data.get('tool_input', {}).get('command', ''); print(json.dumps({'decision': 'approve'})) if cmd.startswith('git ') else sys.exit(0)\""
}
]
}
]
}
ユーザーがメッセージを送信したときに発火します。これを利用して、前提情報を追加したり、ワークフローをトリガーしたりできます。
標準入力データ:
| Field | Description |
|---|
prompt | ユーザーのメッセージ本文 |
例 — デプロイ関連のプロンプトにプロジェクトの前提情報を追加する:
{
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "./scripts/add-deploy-context.sh"
}
]
}
]
}
エージェントが停止する (ターンを終了する) と発生します。追加の指示を与えたり、早すぎる停止を防いだりするために利用します。
標準入力データ:
| フィールド | 説明 |
|---|
stop_hook_active | stop フックがすでにアクティブかどうか |
例 — エージェントにテストを実行するよう促す:
{
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo '{\"decision\": \"block\", \"reason\": \"Please run the test suite before stopping.\"}'"
}
]
}
]
}
条件が最終的に満たされないと、処理をブロックする stop フックによってエージェントがループする可能性があるため、注意してください。
前提情報の圧縮が正常に完了した後に発火します。ログの記録、後続アクションのトリガー、または圧縮中に失われた可能性のある前提情報の再注入に利用します。
標準入力データ:
| Field | Description |
|---|
summary | compactor が生成した要約テキスト (要約が生成されなかった場合は null になることがあります) |
例 — 圧縮イベントをログに記録する:
{
"PostCompaction": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "sh -c 'cat >> ~/.devin-compaction-log'"
}
]
}
]
}
新しいセッションが開始されると発生します。初期化、ログ記録、または開発環境のセットアップに利用します。
標準入力データ:
| フィールド | 説明 |
|---|
source | セッションがどのように開始されたか |
例 — セットアップスクリプトを実行:
{
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "./scripts/dev-setup.sh",
"timeout": 10
}
]
}
]
}
セッションが終了したときに発生します。クリーンアップや最終ログの記録に利用します。
標準入力データ:
| フィールド | 説明 |
|---|
reason | セッションが終了した理由 |
1 つのhooksファイルで、複数のイベント用のフックを定義できます。
{
"PreToolUse": [
{
"matcher": "",
"hooks": [
{ "type": "command", "command": "./scripts/audit.sh" }
]
}
],
"PostToolUse": [
{
"matcher": "",
"hooks": [
{ "type": "command", "command": "./scripts/audit.sh" }
]
}
]
}
matcher フィールドは、フックイベントの tool_name に対してマッチする regex です。利用できるのは、ツール関連のイベント PreToolUse、PostToolUse、PermissionRequest です。
ツール関連以外のイベント (UserPromptSubmit、Stop、PostCompaction、SessionStart、SessionEnd) には tool_name がないため、その種類のすべてのイベントでフックを実行するには、"" を利用するか、matcher を省略します。
matcher は permission glob ではありません。mcp__github__* のようなパターンは permissions では有用ですが、フックの matcher は regex です。フックの matcher では mcp__github__.* を利用してください。
| Matcher | 一致するもの |
|---|
"" (空) または省略 | ツールイベントのすべてのツール名 |
"exec" | exec を含むツール名 |
"^exec$" | exec ツールのみ |
"^(exec|edit)$" | exec または edit のみ |
"^mcp__.*" | すべての MCP ツール |
"^mcp__github__.*" | github MCP server のすべてのツール |
"^mcp__github__create_issue$" | github MCP server の create_issue ツール |
フックのマッチャーは、フックスクリプトが stdin の tool_name として受け取るものと同じ、外部から見えるツール名に対して評価されます。利用可能な正確なツール名は、CLI モード、モデル、有効になっている統合によって異なる場合があります。
一般的な公開コアツール名は次のとおりです。
MCP server のツールは、mcp__<server>__<tool> の形式で表示されます。たとえば、github という MCP server の create_issue という名前のツールは、mcp__github__create_issue として表示されます。
その他のツールについては、フックの stdin に表示される tool_name に正確に一致させてください。現在のセッションで利用可能な完全な一覧を確認するには、matcher: "" を指定した一時的な PostToolUse フックを追加し、stdin のペイロードをログに記録してください。