情報科学 › Claude Code の中身 › 拡張の仕組み
コマンドのフックの帰結と決定
コマンドのフックの 1 回の実行の帰結は、次の 3 つのどれかである(公式ドキュメントの記述による)。
- 成功: 終了コード 0。標準出力に JSON を出していれば、その欄が適用される。
- ブロックするエラー: 終了コード 2。ブロックできるイベントでは、その行為が止まる。標準エラーが理由になる。
- ブロックしないエラー: それ以外の終了コード、または起動できない・不正な JSON を出すなどの失敗。行為は進む。ただし、そのフックに
onFailureが"block"と設定されていれば、失敗のとき行為は止まる。
標準出力の内容で帰結が変わる場合がある。公式の表によれば、0 と 2 以外の終了コードでも、検査を通る JSON を標準出力に出していれば、帰結は成功で、JSON の欄だけで決まる(onFailure が "block" のときは失敗に数える)。終了コード 2 は、JSON を出していてもブロックする。以下の命題では、標準出力に JSON を出さないフックを考え、帰結が終了コードだけで決まる場合を扱う。
PreToolUse のフックは、成功のとき JSON の hookSpecificOutput.permissionDecision で決定("allow"・"deny"・"ask"・"defer")を返せる。複数の PreToolUse フックが異なる決定を返したときの優先順位は deny defer ask allow である。終了コード 2 でのブロックは "deny" と同じ経路をたどる。
閉包の状態
定義
定義は閉包の起点です(証明を要しません)。
印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。
これを使っている定理
証明で明示的に参照している定理は、まだありません。