Skip to content

codex hooks.json: top-level description を除去(Codex 0.142.5 parse error 回帰)(#185) - #186

Merged
kosako merged 1 commit into
mainfrom
codex-hooks-drop-description-185
Jul 10, 2026
Merged

codex hooks.json: top-level description を除去(Codex 0.142.5 parse error 回帰)(#185)#186
kosako merged 1 commit into
mainfrom
codex-hooks-drop-description-185

Conversation

@kosako

@kosako kosako commented Jul 10, 2026

Copy link
Copy Markdown
Owner

概要

#181(PR #184)の回帰修正。managed ~/.codex/hooks.jsontop-level descriptionCodex 0.142.5 の TUI hook review 経路で parse error になり、hook が読み込めなかった(未知 top-level キーを厳格化。0.142.2 の plugin 実例は description を持つが 0.142.5 で弾かれる)。

実機の経緯(ユーザー確認・0.142.5)

  • ~/.codex/hooks.json から description 行を外すと parse OK → /hooks の "Trust all and continue" で trust 成立、config.toml[hooks.state."/Users/kosako/.codex/hooks.json:pre_tool_use:0:0"] が記録された。
  • template は description を出したままだったので次の chezmoi apply で手修正が上書きされ再発する状態(MM .codex/hooks.json)だった。

変更

  • dot_codex/hooks.json.tmpl: rendered JSON を最小形 {"hooks":{...}} にし top-level description を除去。人間向け注記は Go-template コメント(JSON に出ない)へ移動。
  • scripts/test-codex-settings.sh: top-level キーが厳密に {hooks} のみ(未知キー無し=0.142.5 parse-safety)を回帰固定。
  • template comment: 0.142.5 の top-level 厳格化を honest-label。

検証

  • 全テスト green(test-codex-settings に parse-safety guard 追加・test-render/test-doctor/validate-policy は影響なし)、shellcheck -S warning clean。
  • template == live(ユーザーの手修正と一致)で chezmoi status の codex drift は解消・apply 不要。
  • codex doctor は hooks.json を厳格 validate しない(description 有無で差なし)ため gate に使えず、テストでスキーマを pin。

レビュー観点(→ Codex)

Closes #185

🤖 Generated with Claude Code

… 回帰)(#185)

#181(PR #184)で入れた ~/.codex/hooks.json の top-level "description" が Codex
0.142.5 の TUI hook review 経路で parse error になり hook が読み込めない(未知の
top-level キーを厳格化。0.142.2 の plugin 実例は description を持っていたが
0.142.5 で弾かれる回帰)。実機で description 行を外すと parse OK + /hooks trust
成立を確認済み。

template がまだ description を出していたため次の apply で手修正が上書きされ再発
する(MM drift)。修正:

- dot_codex/hooks.json.tmpl: rendered JSON を最小形 {"hooks":{...}} にし top-level
  description を除去。人間向け注記は Go-template コメント(JSON に出ない)へ。
- test-codex-settings.sh: top-level キーが厳密に {hooks} のみ(未知キー無し=
  0.142.5 parse-safety)を回帰固定。
- template comment: 0.142.5 の top-level 厳格化を honest-label。

template == live(ユーザーの手修正と一致)で drift 解消・apply 不要。codex doctor
は hooks.json を厳格 validate しない(description 有無で差なし)ため gate に使えず、
テストでスキーマを pin する。全テスト green・shellcheck clean。

Closes #185

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qw8BkUDu5WdwhYfiFFX5n
@kosako

kosako commented Jul 10, 2026

Copy link
Copy Markdown
Owner Author

🔍 レビュー依頼(→ Codex)

@kosako

kosako commented Jul 10, 2026

Copy link
Copy Markdown
Owner Author

📋 レビュー結果(by Codex)

判定: ✅ merge 可(must 0)

  • 🔴 must / 🟡 should / ⚪ nit: すべて なし

確認結果(Codex):

  • dot_codex/hooks.json.tmpl の rendered JSON が top-level hooks のみの最小形(PreToolUse / matcher:Bash / type:command / command / timeout:10)。
  • scripts/test-codex-settings.sh の guard が top-level keys を ["hooks"] に固定し、description 等の未知 top-level key 再混入を検出(yq で {"hooks":{}}["hooks"] / {"description":...}["description","hooks"] / array 系も fail 側、を独立確認)。
  • Codex 側の PreToolUse hooks 登録(personal-safe-gh-hook の Codex 活性化・#137 の Codex parity) #181 の self-gate 削除契約・doctor report・Claude parity の周辺に回帰なし。

must 0 のため CI green 確認後 merge します。

@kosako
kosako merged commit b156e74 into main Jul 10, 2026
2 checks passed
@kosako
kosako deleted the codex-hooks-drop-description-185 branch July 10, 2026 00:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

codex hooks.json: top-level description が Codex 0.142.5 で parse error → template から除去(#181 follow-up)

1 participant