Claudeが​「court」とだけ​呟いて、​静かに​止まる​日 ──"壊れた​お手本"を​自己増殖させる​バグと、​職人の​対処法

Claude Codeで開発していると、AIが突然「court」という一語だけを吐き、コマンドを実行せず無言で止まる。エラーは出ない。これは既知のバグ(Issue #60584/#62344)で、原因は"構造化ツール呼び出しが旧式テキストに化ける"こと。一度壊れると履歴を"お手本"に自己増殖し、リトライほど悪化する。/clear・ツール先頭・リトライ禁止で復帰。AIの癖まで設計に織り込むのが職人の流儀。

甲斐ショウジ甲斐ショウジ
CAG主宰/合同会社ATK CAIO(最高AI責任者)
技術10分で読めます
技術Claudeが「court」とだけ呟いて、静かに止まる日 ──"壊れたお手本"を自己増殖させるバグと、職人の対処法

技術ノート | AI駆動開発の現場から

電脳技巧集団(AI職人ギルド)では、コードを書く・直す・公開する——その大半を Claude Code に任せている。AI駆動開発は、もう「実験」ではなく日々の仕事だ。だがここ数日、その仕事を静かに止める奇妙なバグに何度もぶつかった。

症状はいつも同じ。AIが、本来ならコマンドを実行するはずの場面で、なぜか「court」という一語だけを呟き、そのあとに実行されるべき中身をただの文字として吐き出して、止まる。エラーは、出ない。警告も、出ない。これは何なのか、自分の環境だけなのか、対策はあるのか——現場で踏み抜いた一次体験と、公式リポジトリで確認できた事実を、まとめて記録しておく。

深夜の開発者のデスク。コードエディタ内のAIアシスタントのチャット欄に、最後の返信として「court」という一語だけが表示され、そのまま止まっている画面
AIの返信は「court」一語だけ。エラーも警告も出ず、そのまま止まる

01​その​日、​AIは​「court」とだけ​言った

ブログ記事を1本公開し終え、最後に「コミットしてプッシュして」と頼んだ。AIがやることは決まっている。git add して、git commit して、git push。いつもの一発だ。

ところが返ってきたのは、実行結果ではなかった。画面の先頭に、ぽつんと court という一語。そのすぐ下に、本来なら裏側で構造化されて実行されるはずのコマンドが、生のまま——タグも引数も丸見えのただのテキストとして表示されていた。そして、それきり。git は走っていない。エラーも出ていない。

一度なら「たまたま」で済ませる。だが、これがここ数日、長い作業セッションの後半になるほど頻発するようになっていた。直そうとして同じ操作をやり直すと、なぜかもっと悪化する。さすがに「仕事にならない」と感じ、手を止めて正体を調べることにした。

「コミットしてプッシュして」 正常git add/commit/push → 実行されるpush 完了 court+ 生テキスト 実行されず・無言で停止 異常(court)
同じ依頼でも、ある時から「court」+生テキスト化して、実行されず無言で止まる

02一番​怖いのは、​エラーが​出ない​こと

このバグの本当の厄介さは、「動かない」ことではない。「動かなかったことに、気づけない」ことだ。

赤い文字で「失敗しました」と出れば、人はすぐ対処できる。だが court は違う。コマンドが、ただの説明文に化けて画面に並ぶだけ。ぱっと見は「AIが何か喋っている」ようにしか見えない。スクロールして次の作業に移った後で、「あれ、さっきのプッシュ、結局されてたっけ?」と気づく。最悪なのは、気づかないまま先に進んでしまうことだ。

これは、以前このブログで書いた「サイレントな成功」——AIが「✅ できました」と報告しながら実は何もしていない失敗——と、まったく同じ家系の病だ。[3]共通点は一つ。失敗が、何のシグナルも出さずに起きる。自動化を信頼するほど、シグナルの出ない失敗の破壊力は大きくなる。

【AIと“第二の脳”を作る #5・完】“サイレントな成功”という、いちばん怖い失敗──AIに主権と境界を持たせる のサムネイル 関連記事 | 同じ“サイレントな成功”の話【AIと“第二の脳”を作る #5・完】“サイレントな成功”という、いちばん怖い失敗──AIに主権と境界を持たせる
ダークなチャットUIのクローズアップ。通常のやり取りの最後に、AIの返信バブルが「court」一語だけを表示し、スピナーが止まったまま下は空白
派手な失敗は、むしろ安全だ。怖いのは、この「何も起きていないように見える」静けさ

03正体:構造化ブロックが、​旧式テキストに​化ける

調べると、これは自分の環境固有の不調ではなかった。Anthropic の公式リポジトリに、まさに「literal な "court" テキストが、正しいツール呼び出しの代わりに出力される」という報告がある。[1]既知のバグだ。

仕組みはこうだ。Claude が git push のような操作をするとき、本来は「構造化されたツール呼び出しブロック」として出力する。これを土台(ハーネス)が受け取り、解釈し、実際に実行する。人間の目には結果だけが見える。

ところが何かの拍子に、モデルが同じ呼び出しを構造化ブロックではなく、旧式の <invoke> という"XMLテキスト"として吐いてしまうことがある。しかもその先頭に、本来あるはずのない court(あるいは count)という余計なトークンが紛れ込む。土台は「これはツール呼び出しの形式じゃない」と弾く。弾かれた中身は、行き場を失ってただの文字として画面に表示される——だから、実行されず、エラーも出ない。

構造化ツールブロック土台が解釈できる形式 court <invoke> …生テキスト旧式XML+余計なトークン 土台(パーサ)形式を判定 実行される結果だけ見える 弾かれて表示だけ実行されない
同じ意図でも、出力の"形式"が崩れた瞬間にツールは実行されず、文字として表示されるだけになる

04なぜ連発するのか:壊れた​お手本の、​自己増殖

一度きりなら、ただの事故だ。問題は、なぜ連発したのか。ここに、このバグの最も意地悪な性質がある。

公式リポジトリでは、これを「in-context few-shot poisoning(文脈内での自己汚染)」と呼んでいる。[2]からくりはこうだ。LLM は、直前までの会話履歴を"お手本"にして次の出力を作る。一度、壊れたツール呼び出しが履歴に残ると、モデルはそれを「これが正しい書き方だ」と勘違いし、次も、その次も、同じ壊れ方を再生産する。

つまり最初の1回の事故が、それ以降の全部のお手本になってしまう。だから後半になるほど連発した。報告にある通り——「壊れた呼び出しが文脈に入ると、自己回帰的な生成がそれを再生産し続ける」。賢いはずのモデルが、自分のミスを律儀にコピーし続けるのだ。

会話履歴 → 最初の壊れcourt …=以後のお手本 2回目同じ壊れ 3回目同じ壊れ 4回目…連発
最初の1回の壊れが「お手本」になり、後続が律儀に同じ壊れ方を複製していく=自己汚染

05リトライが、​いちばんの​悪手だった

人間の直感は「失敗したら、もう一度やればいい」だ。だが court に限って、これは最悪の選択になる

理由は前章でわかる。やり直しても、モデルは直前に履歴へ残ったばかりの"壊れたお手本"を、いちばん新しい正解として参照する。だから同じ壊れ方を、確実に再現する。公式報告でも「4回連続のリトライが、すべて同じように失敗した」と記録されている。[2]しかも厄介なことに、「もっと丁寧にやって」「一回ずつ送って」とモデルに頼んでも効かない。これはモデルの注意力や reasoning の問題ではなく、"文脈に残った悪い例"に引っ張られているだけだからだ。だから、お説教では直らない。

私もこのとき、知らずに同じコマンドを何度かやり直して、見事に悪化させた。「リトライするほど傷が深くなる」——これが、対策を考える上での出発点になった。

壊れた呼び出しcourt … 履歴に残る=お手本次の参照元になる リトライ 再び同じ壊れ方を複製
リトライ=壊れた例を履歴に戻す行為。やるほど悪循環が強化される

06引き金は、​だいたい​3つだった

では、最初の1回はなぜ起きるのか。報告と自分の体感を突き合わせると、引き金は概ね3つに絞れる。

  • ① 説明文の直後に、ツール呼び出しを置く。「では、◯◯を直します」と書いた直後に編集ツールを呼ぶ——この並びが、最も壊れやすい。報告でも「壊れた呼び出しは直前に説明文があり、成功した呼び出しは返信の先頭にあった」と相関が指摘されている。[1]
  • ② 長いセッション。編集・読み込み・コマンドを何十回も連続で回すと、後半ほど壊れる確率が上がる。皮肉なことに、文脈を長く積めることが価値のはずの長時間セッションが、いちばん被弾する
  • ③ "マークアップだらけ"のファイルを読み込む。XMLっぽい記述が密に詰まった大きな設定・スキルファイルを文脈に入れると、モデルが自分のツール呼び出し形式への制御を失いやすくなる、という観察がある。[2]

共通するのは、モデルが「いまは構造化ブロックを出す場面だ」という意識を保ちにくくなる状況だ。引き金を知っていれば、避けられる。

① 説明文 → 直後にツール ② 長いセッション ③ markup密なファイル 形式の制御が緩む=court 発生 実行されず停止
3つの引き金が「形式を保つ意識」を緩め、court を誘発する

07効く​対処:履歴を​捨て、​先頭に​置き、​やり直さない

原因がわかれば、対処は明快だ。現場で実際に効いた順に挙げる。

  • ① セッションをリセットする(/clear)。これがいちばん確実。汚染されているのは"会話履歴"だから、それを捨てて新しいセッションを始めれば、お手本もろとも消える。これだけ連発したら、履歴はもう汚染源だ。迷わずリセットする。
  • ② ツール呼び出しを、返信の先頭に置く。前置きの説明文を書かず、まず実行する。説明は、結果が返ってきたに書く。「説明 → ツール」ではなく「ツール → 説明」。引き金①を構造的に断つ。
  • ③ 失敗しても、同じ操作をリトライしない。やり直すほど悪化する。アプローチを変えるか、潔く /clear する。

本質的には、土台(ハーネス)側が「壊れた呼び出しを検知して自動修復し、履歴に汚染を残さない」ようになるのが根治だ——報告でもそう提案されている。[2]だがそれが届くまでは、上の3つで現場は十分回る。

① /clear汚染履歴を捨てる ② 先頭に置くツール → 説明 ③ リトライしない変えるか reset
履歴を捨てる・ツールを先頭に置く・やり直さない——この3点で現場は回る

08​締め:職人は、​AIの​癖まで​設計に​織り込む

面白い後日談がある。実はこのバグを知るずっと前から、私たちのClaude Code運用ルールには「アクションのメッセージは、ツール呼び出しを必ず先頭に置く/説明とツール実行を混ぜない」という一文が書いてあった。理由は経験則——「なんか、その方が壊れにくい」。Issue番号もメカニズムも知らないまま、対策の核を先に運用に焼き込んでいた。

これが、AIをただ使うことと、AIを戦力として操ることの差だと思う。AI駆動開発は魔法ではない。モデルには癖があり、失敗モードがあり、court のようにエラーすら出さずに壊れる瞬間がある。その癖まで含めて知り、運用ルールに織り込んで、それでも速く・確実に納める——電脳技巧集団(AI職人ギルド)が「AI職人」を名乗るのは、ここに理由がある。道具を持っていることではなく、道具の壊れ方まで御せることが、職人の条件だ。

そしてcourtも、根っこは前回書いた「サイレントな成功」と同じだった。いちばん怖い失敗は、派手に転ぶことではなく、何のシグナルも出さずに静かに壊れること。人間相手でも、AI相手でも、自動化を信じるなら、この一線だけは見張り続けるしかない。

開発者の手元。リセットした新しいセッションの画面に、ツール実行が緑のチェックで整然と並び、正常に動き直している
道具を持つことではなく、道具の壊れ方まで御せること——それが職人の条件

AIをただ使う vs AIを操る職人。court という小さなバグに、その差がよく表れる。

観点AIをただ使う(素朴な運用)AI職人ギルド(CAG)の運用
court 遭遇時同じ操作をやり直す → 悪化する/clear で履歴を捨て、一発で復帰
失敗の捉え方「AIが不安定」で片づける失敗モードを特定し、運用ルールに織り込む
メッセージ設計説明文の直後にツールを呼ぶツールを先頭に置き、説明は結果の後
セッション設計長時間まわして汚染を溜める節目でリセットし、文脈を健全に保つ
怖い失敗の認識エラーが出なければ成功と思うシグナルなき失敗(court / サイレント成功)を最警戒
結果時々止まり、原因不明で時間を溶かす癖を御して、速く・確実に納める

※ 本記事は筆者らの実運用での一次体験と、Anthropic 公式リポジトリの公開Issueに基づく。バグの挙動・バージョン依存は時期により変わるため、最新状況は出典を参照のこと(v0・2026-06時点)。

脚注・出典

  1. anthropics/claude-code Issue #60584「[BUG] tool_use input intermittently malformed — emits literal "court"/"<invoke>" text instead of a valid tool call」。症状(literal な court テキスト・無言の失敗)、引き金(長セッション・説明文の直後のツール呼び出し)、回避策(呼び出しを返信の先頭に置く)の出典。github.com/anthropics/claude-code/issues/60584
  2. anthropics/claude-code Issue #62344「[Bug] Malformed tool calls in long sessions due to in-context few-shot poisoning」。自己汚染メカニズム・「リトライが最悪手(4連続失敗)」・markup密ファイルの引き金・/clear による回復・土台側の寛容パース提案の出典。github.com/anthropics/claude-code/issues/62344
  3. 「サイレントな成功」=AIが「✅ 完了」と報告しながら実際は何もしていない失敗。本ブログ「シリーズ AIと"第二の脳"を作る #5・完」で詳述。court も「シグナルなき失敗」という同じ家系に属する。

「AIは​使ってるけど、​時々止まる​・​暴れる​——​その​癖まで​御して、​確実に​動かしたい」

AIの失敗モードまで織り込んだ、速く・確実な開発を。まずは相談から——問い合わせは、AIがその場でお応えします。

無料で相談する →

言語化できるものは、全て作る。

あなたの「作りたい」を、定価とスピードで形に。まずは無料の相談から。

制作事例を見る