メインコンテンツへスキップ

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.

フックを使用すると、エージェントのライフサイクル内のイベントに応じてカスタムロジックを実行できます。フックは、ポリシーの適用、前提情報の追加、アクションの記録、権限の変更、外部システムとの連携に利用できます。 Devin CLI は、Claude Code hooks と互換性のあるフック形式を採用しています。すでに Claude Code 用のフックを設定している場合は、そのまま Devin CLI でも自動的に動作します。

Hooksでできること

ポリシーを強制

危険なコマンドをブロックしたり、特定のアクションで確認を必須にしたり、ファイルへのアクセスを制限したりできます。

前提情報を追加

特定のツールが呼び出されたときに、追加の指示や情報を渡します。

付随処理を実行

イベント発生時に、スクリプトを実行したり、通知を送信したり、イベントを記録したりできます。

権限を変更

状況に応じて、権限を動的に付与または制限できます。

簡単な例

プロジェクト内に .devin/hooks.v1.json を作成します:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/check-command.sh"
        }
      ]
    }
  ]
}
シェルコマンドを実行する前に、毎回 ./scripts/check-command.sh が実行されます。このスクリプトは stdin でイベントデータを受け取り、ゼロ以外の終了コードを返すことでそのアクションをブロックできます。

Hook Events

フックは、以下のライフサイクルイベントに応答できます。
Event発生するタイミング
PreToolUseツールの実行前
PostToolUseツールの実行完了後
PermissionRequest権限の判断が必要なとき
UserPromptSubmitユーザーがメッセージを送信したとき
Stopエージェントが停止しようとするとき
SessionStartセッションの開始時
SessionEndセッションの終了時
各イベントと利用可能なデータの詳細については、ライフサイクルフックを参照してください。

フックの形式

各フックには、type (command または prompt) 、任意の matcher (フックイベントの tool_name に対する正規表現) 、および各種設定があります。
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/validate.sh",
          "timeout": 10
        }
      ]
    }
  ]
}
フィールド説明
matcherフックイベントの tool_name に対してマッチする正規表現。空文字列、または matcher を省略した場合は、すべてのツール名に一致します。
typeシェルコマンドを実行する場合は "command"、LLM プロンプトを評価する場合は "prompt"
command実行するシェルコマンド (command タイプの場合) 。
prompt評価する LLM プロンプト (prompt タイプの場合) 。
timeoutタイムアウト時間 (秒) (任意) 。

コマンドフック

コマンドフックでは、シェルコマンドを実行します。イベントデータは stdin 経由で JSON として渡され、コマンドは stdout に JSON を返すことで結果を制御できます。 入力 (stdin) :
{
  "hook_event_name": "PreToolUse",
  "tool_name": "exec",
  "tool_input": {
    "command": "rm -rf /"
  }
}
出力 (stdout — 任意) :
{
  "decision": "block",
  "reason": "Destructive command blocked by policy"
}
出力フィールド説明
decision"approve""block"、または "deny"
reasonエージェントに表示される説明
DEVIN_PROJECT_DIR 環境変数は、プロジェクトのルートディレクトリに自動的に設定されます。 一致対象にできる組み込みツール名と MCP ツール名の形式については、Matcher の使用 を参照してください。

終了コード

コード意味
0成功 — フックは通常どおり続行
2ブロック — アクションは拒否される
その他エラー — ログに記録されるが、ブロックはしない

フックの格納場所

Devin CLI は、以下の場所にあるフックを読み取ります。いずれも同じ JSON 形式です。

プロジェクトレベル

場所説明
.devin/hooks.v1.json独立した hooks ファイル (推奨)
.devin/config.json設定ファイル内の "hooks" キー
.devin/config.local.json"hooks" キー (ローカルで上書き、gitignore 対象)
.claude/settings.json"hooks" キー (Claude Code 形式)
.claude/settings.local.json"hooks" キー (Claude Code 形式)

ユーザーレベル (グローバル)

場所説明
~/.config/devin/config.json (%APPDATA%\devin\config.json は Windows)ユーザー設定の "hooks" キー
~/.claude.json"hooks" キー (Claude Code 形式)
~/.claude/settings.json"hooks" キー (Claude Code 形式)
~/.claude/settings.local.json"hooks" キー (Claude Code 形式)
.devin/hooks.v1.json では、hooks オブジェクトがファイル全体にあたります (ラッパーキーは不要です) 。それ以外の場所では、hooks は設定ファイル内の "hooks" キーの下にネストされます。
.claude/ 配下のパスにある hooks は、read_config_from.claude が有効な場合 (デフォルト) に読み込まれます。必要に応じて、ユーザー設定でこれを無効にできます。

フックの確認

現在読み込まれているすべてのフックとそのソースファイルを確認するには、/hooks スラッシュコマンドを利用します:
/hooks

次のステップ

ライフサイクルフック

各イベントタイプと利用可能なデータについて詳しく解説します。

Claude Code Hooks ドキュメント

フック形式の完全なリファレンスです。