◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/API & SDK
⬡ API & SDK/2026-05-05中級

Claude API のツール実行エラーを Claude 自身に診断させる — 自己修正ループの設計と本番実装

Tool Use実装で避けられないツール実行エラーの対処法を解説。is_errorフラグを活用してエラー情報をClaudeに返し、自己診断・修正ループを実装する実践的なPythonコードと本番でのアンチパターンも紹介します。

claude-api83tool-use23error-handling10python22api-sdk13agentic

✦ プレミアム記事

Claude APIのTool Useを実装していると、早い段階で「ツールが失敗したとき、どう処理するか」という壁にぶつかります。

外部APIがダウンしていた。入力値のバリデーションが通らなかった。タイムアウトした。そのたびに例外を丸ごと握りつぶすか、アプリ全体をエラー終了させるか、という二択になりがちです。でも実は、Claude自身にエラーを診断させて、入力を修正させる「自己修正ループ」が実装できます。これを知ってから、エージェント系の実装がずいぶん楽になりました。

ツール実行エラーは「想定内」という前提で設計する

多くの実装では、ツールが成功することを前提にコードが書かれています。

# よくある実装(エラー考慮なし)
result = execute_tool(tool_name, tool_input)
messages.append({
    "role": "user",
    "content": [{"type": "tool_result", "tool_use_id": id, "content": str(result)}]
})

この設計だと、execute_tool が例外を投げた瞬間にエージェントループ全体が停止します。APIが一時的に503を返しただけでも、ユーザーへのリクエスト全体が失敗として記録されてしまいます。

本番環境でのツール失敗率は、思っているよりずっと高いものです。外部API連携を含むエージェントでは、月間0.5〜2%程度の失敗が現実的に発生します。リクエスト数が増えるにつれて、この数字は無視できなくなっていきます。

is_error フラグ — Claude へのエラーフィードバック

Anthropic APIのtool_resultメッセージには is_error というフィールドがあります。これを true にすると、ツールが失敗したことをClaudeに明示的に伝えられます。

# エラー時のtool_result
{
    "type": "tool_result",
    "tool_use_id": block.id,
    "is_error": True,
    "content": "エラーの詳細説明..."
}

重要なのは、content に渡すエラー情報の質です。ただ "Error: 500" と渡しても、Claudeは何もできません。「何が失敗したか」「どんな入力で失敗したか」「何を試せば解決できるか」が含まれていると、Claudeは自分で入力を修正して再試行を試みます。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦ツール失敗を入力起因・一時的・構造的の3種に分類し、自己修正させるエラーと即中止すべきエラーを切り分ける実装
✦is_error フィードバックで400を避ける tool_use と tool_result の対応付け、会話履歴の肥大を抑える運用知見
✦プロトタイプ・ユーザー対面の本番・バッチ処理それぞれに向けた終了条件と再試行戦略の使い分け
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ API & SDK2026-05-22
Claude API の tool_result could not be submitted が再発しないための回復ハンドラ設計
Claude API でエージェントを長時間動かしていると、ある日突然 'tool_result could not be submitted' が連発し始めることがあります。再試行しても直らない、ストリーミング途中で死ぬ、そして次のセッションでもまた出る — 常時稼働のエージェント基盤で実際に踏み抜いた4種類の原因と、TypeScript で書いた回復ハンドラの実装を整理しました。
⬡ API & SDK2026-06-12
Claude API の Code Execution ツールに月次の売上CSV集計を任せる — Files API 連携から課金の落とし穴まで
月末に形式の違う売上CSVを突き合わせる作業を、Claude API の Code Execution ツールに任せた実装をまとめます。Files API 連携、コンテナ再利用、5分最小課金やファイルプリロード課金などの注意点を実例ベースで扱います。
⬡ API & SDK2026-05-26
Claude API の構造化レスポンスを本番で安定させる — tool_use と JSON Schema、多層検証の実装メモ
Claude API の応答を JSON で受け取る実装は数行で書けますが、本番運用では「形は正しいが意味が壊れている」レスポンスにどう備えるかが分かれ目になります。tool_use・JSON Schema・ドメイン検証を組み合わせた多層パイプラインを、壁紙アプリの分類処理での実体験を交えて整理しました。