hooks / stop-continue · 約 8 分

Stop で1回だけ続行する

stop_hook_active を見て、2回目は続行しません。

学習目標

Stop は matcher を使いません。exit 0 のときは JSON が必須で、プレーンテキストは無効です。 [codex-hooks]

decision: block はこのイベントでは拒否ではありません。reason を新しい継続プロンプトとして、もう1ターン進めます。

stop_hook_active が true のときは、すでに Stop が続行させています。2回目は continue: true を返し、ループしません。

いずれかの matching hook が continue: false を返すと、続行より優先します。 [codex-hooks]

前提

hooks.json に Stop ハンドラがあること。信頼済み。

なぜ必要か

テスト失敗で1回だけ自動再試行し、無限ループしないようにします。

実行場所

Web実習 (browser) は WebContainer の Node で公式仕様の入力例を流す練習です。Codex 本体の hook 実行ではありません。local-bridge では解答スクリプトは演習の solution と同じです。

echo '{"stop_hook_active":false}' | node .codex/hooks/stop_continue.mjs
echo '{"stop_hook_active":true}' | node .codex/hooks/stop_continue.mjs

成功結果

スクリプトが stop_hook_active"block" を含みます。1回目だけ継続します。

失敗対処

プレーンテキストを返すと Stop では無効です。必ず JSON を出します。

このレッスンで接続する

ページを移動するとブラウザ内実習の接続とファイルは消えます。演習の直前に、このパネルから明示的に再接続してください(自動では戻りません)。