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