Spirit Agent

フック

セッション、ツール、サブエージェントのイベントでスクリプトを実行します。許可、拒否、または確認を求めることができます。

フックは、Spirit が特定の時点で実行するスクリプトです。ツールを許可、拒否、または承認プロンプト(ask)を強制することができます。

イベント

  • sessionStart
  • sessionEnd
  • submitPrompt
  • preToolUse
  • postToolUse
  • subagentStart
  • subagentEnd

preToolUseask を返すと、自動承認またはバイパス の場合でもプロンプトが表示されます。

配置場所

スコープ設定スクリプト
ユーザー{spiritDataDir}/hooks.json{spiritDataDir}/hooks/
ワークスペース{workspace}/.spirit/hooks.json{workspace}/.spirit/hooks/

同じイベントでは、ユーザーエントリとワークスペースエントリがその順序で連結されます。互いに上書きされることはありません。

これらは 設定 → フック で管理します。CLI で spirit hooks listspirit hooks validate を使用して検証します。組み込み Skill の create-hook でフックのドラフトを作成できます。

ファイルのフィールド

ルートオブジェクトには versionhooks を含める必要があります。version は現在 1 のみを受け付けます。

フィールド説明
version必須。1 である必要があります。
hooks必須。オブジェクト。キーはイベント名、値はそのイベントのフックの配列です。

各フック

フィールド説明
command必須。スクリプトのパス。相対パスは設定ディレクトリに対して解決され、その中に留まる必要があります。
timeoutオプション。タイムアウト(秒)。正の数である必要があります。デフォルトは 30 です。
failClosedオプション。スクリプトがクラッシュしたり、タイムアウトしたり、標準出力に無効な JSON を書き込んだ場合にブロックするかどうか。デフォルトはブロックしません。
matcherオプション。空でない正規表現。preToolUse / postToolUse ではツール名、subagentStart / subagentEnd ではサブエージェントタイプに一致します。

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "command": "hooks/guard.sh",
        "timeout": 10,
        "failClosed": true,
        "matcher": "^shell$"
      }
    ],
    "sessionEnd": [
      {
        "command": "hooks/log.sh"
      }
    ]
  }
}