- ツール実行前に危険な操作をブロック
- ファイル書き込みのたびに自動で lint を実行し、コードスタイルを統一
- Agent のタスク完了時にデスクトップ通知を送り、画面に張り付く必要をなくす
クイックスタート
以下の例では、rm -rf のような危険なコマンドをブロックする方法を紹介します。
1
スクリプトを作成
2
設定を追加
~/.qoderwork/settings.json に以下を追加します:3
動作を確認
QoderWork を開き、Agent に
rm -rf を含むコマンドを実行させてみてください。Hook が実行をブロックし、エラーメッセージを Agent にフィードバックします。Hooks の設定
設定ファイルの場所
QoderWork はユーザーレベルの設定ファイルから Hook 設定を読み込みます:ホットリロードはまだサポートされていません — Hook 設定を変更した後は QoderWork を再起動してください。
設定フォーマット
1 つのイベントに複数の matcher グループを定義でき、各グループに複数の Hook コマンドを含めることができます。
matcher ルール
matcher は Hook の発火範囲を決定します。何にマッチするかはイベントによって異なります(各イベントの説明を参照)。
Hook スクリプトの作成
Hook スクリプトは stdin 経由で JSON 入力を受け取り、exit code と stdout で動作を制御します。このセクションではすべてのイベントに共通の入出力フォーマットを説明します。イベント固有のフィールドについては Hook イベントを参照してください。QoderWork は現在、Hook スクリプトに環境変数を注入しません。すべてのデータは stdin JSON 経由で渡されます。セッション ID、作業ディレクトリ、ツール情報が必要な場合は、stdin JSON 入力から解析してください。
入力
Hook スクリプトは stdin 経由で JSON データを受け取ります。すべてのイベントに以下の共通フィールドが含まれます:
各イベントはこれらに加えて固有のフィールドを追加します(各 Hook イベントの説明を参照)。
jq で入力を解析:
出力
Hook は exit code と stdout で動作を制御します。 exit code が基本動作を決定します:0 は成功、2 はブロック(stderr の内容が会話に注入され、ブロック可能なイベントでのみ有効)、その他の値は非ブロックエラーです。 stdout JSON(exit 0 の場合のみ解析)は一部のイベントに精細な制御を提供します。サポートされるフィールドは各イベントの説明を参照してください。exit code が 0 以外の場合、stdout は無視されます。Hook イベント
SessionStart
セッション開始時に発火します。 matcher: セッションソース
追加入力フィールド:
SessionEnd
セッション終了時に発火します。 matcher: 終了理由
追加入力フィールド:
UserPromptSubmit
ユーザーが Prompt を送信した後、Agent が処理する前に発火します。 追加入力フィールド:PreToolUse
ツール実行前に発火します。ツール実行をブロックできます。 matcher: ツール名(例:Bash、Write、Edit、Read、Glob、Grep、MCP ツール名は mcp__server__tool 形式)
追加入力フィールド:
PostToolUse
ツール実行の成功後に発火します。 matcher: ツール名 追加入力フィールド:PostToolUseFailure
ツール実行の失敗後に発火します。 matcher: ツール名 追加入力フィールド:Stop
Agent がレスポンスを完了した後に発火します(メイン Agent、保留中のツール呼び出しがない場合)。Agent の停止をブロックして作業を続行させることができます。 Agent の停止をブロック: exit code 2、stderr の内容がメッセージとして会話に注入され、Agent は作業を続行します。SubagentStart / SubagentStop
サブ Agent の起動・完了時に発火します。SubagentStop は Stop と同様、サブ Agent の停止をブロックできます。 matcher: Agent タイプ名 追加入力フィールド:PreCompact
コンテキスト圧縮前に発火します。 matcher: トリガー方法
追加入力フィールド:
Notification
通知イベント発火時(権限リクエスト、タスク完了等)。 matcher: 通知タイプ
追加入力フィールド:
PermissionRequest
ツール実行にユーザー認可が必要な時に発火します。 matcher: ツール名 追加入力フィールド:シナリオ例
デスクトップ通知
Agent がタスクを完了した時や権限が必要な時に、デスクトップ通知を表示します。 スクリプト~/.qoderwork/hooks/notify.sh(macOS):
ファイル書き込み後の自動 Lint
Agent がファイルを書き込み・編集するたびに、自動で lint を実行します。 スクリプト${project}/.qoderwork/hooks/auto-lint.sh:
PostToolUse、matcher Write|Edit、command .qoderwork/hooks/auto-lint.sh。
Agent を継続させる
Agent が停止する際に未完了タスクがないかチェックし、コミットされていない git 変更がある場合は Agent の停止をブロックします。 スクリプト~/.qoderwork/hooks/check-continue.sh:
Stop、command ~/.qoderwork/hooks/check-continue.sh。
次のステップ
スキル
スキルで QoderWork の能力を拡張する
スケジュールタスク
タスクを計画的に自動実行する