このエラーは、Claude Code 側がツール定義の input_schema を Anthropic API に送ったとき、JSON schema が受け付けられずに 400 で返ってきたケースとして報告されています。手元で確認できる issue は 2 件で、どちらも同じ系統の文言でした。
#63673 では、tools.12.custom.input_schema と tools.21.custom.input_schema に対して「JSON schema is invalid. It must match JSON Schema draft 2020-12」と返されています。[#86664](https://github.com/anthropics/claude-code/issues/86664) でも、tools.17.custom.input_schema に対して同じ趣旨の 400 が出ています。
まず切り分けたいのは、Claude Code 本体の一般的な通信失敗ではなく、ツール定義のスキーマで落ちているかどうかです。今回の症状クラスタに含まれる実例では、エラーメッセージの中心が一貫して custom.input_schema になっています。use tool の実行時に 400 になる、という報告もありました。#86664 の環境情報は次のとおりです。
Platform: darwin
Terminal: iTerm.app
Version: 2.1.232
Feedback ID: 0a5623a4-408d-47fb-afb1-0f3fd41d124a
報告本文に含まれていたエラー断片も、そのまま載せておきます。
[{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"tools.17.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview.\"},\"request_id\":\"req_011Ce2ZWqbB1mTx8WWqB4D8k\"}\n at generate (/$bunfs/root/cli:39:39014)\n at makeRequest (/$bunfs/root/cli:90:8063)\n at proces
ここから分かるのは、少なくとも issue 上では「Claude Code の一般障害」ではなく「ツールの入力スキーマが不正」として扱われていることです。逆に、どの JSON Schema 要素が不正だったのか、どの設定や入力が原因だったのかは、提示された情報だけでは分かりません。
代表 issue の #63673 は [closed] ですが、コメントには「inactive for too long だったので閉じた」「同じ問題なら新しい issue を出してほしい」とあります。つまり、公開されたやり取りの範囲では根本原因や恒久対策は確定していません。現時点で言えるのは、同種のエラーが Anthropic API 側の JSON Schema 2020-12 要件に引っかかった形で返っている、ということまでです。
手元の検証環境はこれだけでした。
[env_summary]
OS : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python : 3.8.13
検証日時 : 2026-09-20T08:51:43+09:00
この症状に当たったときは、まず「自分が使っているツール定義の input_schema が JSON Schema draft 2020-12 に沿っているか」を疑うのが筋ですが、どのキーが非対応かまでは、この issue 群だけでは断定できません。少なくとも、引用できる実例はすべて tools.<n>.custom.input_schema を指していました。
OS : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python : 3.8.13
検証日時 : 2026-09-20T08:51:43+09:00