PaPoo
cover

jq がないと valid JSON を invalid 扱いする

この症状は、Claude Code の hook 開発用スクリプト plugin-dev/skills/hook-development/scripts/test-hook.sh を使っていて、入力 JSON は正しいはずなのに「invalid JSON」と言われるケースです。issue #83802 では、jq がインストールされていない環境でこの誤判定が起きると報告されています。

まず切り分けたいのは、入力そのものが壊れているのか、それとも jq の不足が原因なのか、です。報告内容では、jq がないと次の判定が走ります。

if ! jq empty "$TEST_INPUT" 2>/dev/null; then
  echo "❌ Error: Test input is not valid JSON"

2>/dev/null によって jq: command not found が捨てられるため、コマンドが見つからない場合でも JSON のパース失敗と区別できません。issue の説明では、ここが誤診の根本原因です。

実際、コメント欄でも「jq がないと valid JSON が invalid と報告される」という点は再現確認されています。提示された修正案は、jq の有無を先に明示的に確認し、欠けているならその旨を出す、という方向でした。少なくとも issue 上では、入力 JSON を疑うより先に jq の有無を確認するのが筋です。

手元で取得できた環境情報は次のとおりです。今回の確認では jq の有無そのものは実測していませんが、設定ファイルの場所については以下の通り「存在しない」と確認しています。

[env_summary]
OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-08-25T08:50:56+09:00
[settings_structure]
~/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.local.json: (存在しない)

この症状に当てはまりやすいのは、Windows や Git Bash のように jq が初期状態で入っていないことがある環境です。issue #83802 の報告でも、その前提で話が進んでいます。入力 JSON を修正しても直らないなら、jq の導入有無を確認するのが先です。

今回の issue から言えるのはここまでです。test-hook.sh 側の失敗メッセージは、少なくとも jq 未導入と JSON 不正を分けていません。なので、「JSON が壊れている」と決めつけるのは早いです。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-08-25T08:50:56+09:00

参照した Issue(anthropics/claude-code): #83802, #78030

同じ著者の記事