CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-04-28上級

Claude API × Inngest で耐障害性のある AI ワークフローを本番運用する — リトライ・冪等性・人間承認を組み込んだ実装ガイド

Claude API と Inngest を組み合わせて、リトライ・冪等性・人間承認・ファンアウトを TypeScript の動くコードで実装します。Next.js / Vercel / Cloudflare Workers に乗せられる軽量な耐障害ワークフローの設計指針です。

claude-api81inngestdurable-executionworkflow24production87anthropic-api3

プレミアム記事

「動かしっぱなしの AI バッチが、ある日突然真夜中に止まっていた」— Claude API を本番に投入してしばらく経つと、ほぼ全員がこの壁にぶつかります。私自身、4 サイト分のブログを Claude API で自動生成・更新する仕組みを運用していますが、最初の数ヶ月は「サーバーレス関数のタイムアウト」「Anthropic 側の一時的な 529」「ツール呼び出し中の API ダウン」といった事故で何度も冷や汗をかきました。

その経験から得た結論は、プロダクションの AI ワークフローには『途中から再開できる仕組み』が必要だということです。リトライを try/catch で書く、ジョブテーブルを自前で設計する、タイムアウトをキューで分割する——どれも一度はやりましたが、コードがすぐに爆発します。

ここではTypeScript ファーストの耐障害ワークフローエンジン Inngest を使って、Claude API を呼ぶ AI ワークフローを本番品質に引き上げる設計と実装を、動くコードとともに解説します。Next.js や Cloudflare Workers にそのまま乗るので、別サーバーや別インフラを増やす必要がありません。

なお Python 主体の重厚なワークフローエンジンが好みであれば、Claude Agent SDK × Temporal.io で耐障害性のある長期実行AIワークフローを構築する をご覧ください。本記事はそれよりも軽量で、TypeScript の Web 開発者が「いつものスタックのまま」始められる構成に振り切っています。

なぜ「ただの Promise ループ」では本番に出せないのか

Claude API でエージェントを書くとき、最初は誰もが次のような形にたどり着きます。

// よくある最初の実装(本番に出すと壊れる)
async function runAgent(userInput: string) {
  const messages = [{ role: "user", content: userInput }];
  while (true) {
    const res = await anthropic.messages.create({
      model: "claude-sonnet-4-6",
      max_tokens: 1024,
      tools,
      messages,
    });
    messages.push({ role: "assistant", content: res.content });
    if (res.stop_reason === "end_turn") return res;
    if (res.stop_reason === "tool_use") {
      const toolResult = await runTool(res); // ← ここで外部APIを叩く
      messages.push({ role: "user", content: toolResult });
    }
  }
}

テストの一発実行なら問題なく動きます。ところがこのコードを本番に出すと、次のような症状が必ず出てきます。

  • タイムアウト: Vercel の Serverless Function は最大 5 分、Cloudflare Workers は CPU 時間 30 秒。3 ターン以上の Tool Use で簡単に超えます。
  • 二重実行による二重課金: タイムアウト後にユーザーがリトライしたら、Stripe の請求 API を 2 回叩きました——という事故が起きます。
  • どこまで進んだか分からない: ログを掘り返しても、messages 配列のどの時点で落ちたかが特定できません。
  • 人間承認を挟みづらい: 「危険な操作だけ承認してから実行したい」となった瞬間、コードが破綻します。

これらは個別に直せる問題ではなく、「長く走る処理を、途中でクラッシュしても安全に再開できる」という設計が必要です。私は最初、Redis でチェックポイントを書いて、PostgreSQL にジョブテーブルを作って、自前で再開ロジックを書きました。が、そのうち「これはワークフローエンジンを自作している」と気づきました。

Inngest を 5 分で理解する

Inngest は TypeScript/JavaScript ファーストの耐障害ワークフローエンジンです。Temporal と同じ「Durable Execution」の考え方を持ちながら、開発体験は Next.js の API ルート一つで完結する軽さを持ちます。

押さえるべき概念は 4 つだけです。

  • Function: イベントを受けて走る関数。inngest.createFunction() で定義します。
  • Step: Function の中で「ここまで進んだら結果をキャッシュしてほしい」と Inngest に伝える単位。step.run() で囲んだコードは、再実行時に既に成功していればスキップされます。
  • Event: Function を起動するトリガー。inngest.send({ name, data }) で発火します。
  • Sleep / WaitForEvent: 関数が「待つ」ためのプリミティブ。step.sleep()step.waitForEvent() を使うと、関数自体は終了し、後で Inngest が起こしてくれます。

ここでの肝は Step の境界が再開ポイントになる ことです。step.run() の中身が成功すると結果が永続化され、関数全体が落ちても次の実行ではその step はスキップされます。これが「途中から続行できる」を実現します。

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

この記事の続きを読む

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

この記事で得られること
Claude API を本番で叩いていて『途中で止まる・タイムアウトする・リトライで二重課金される』に悩んでいた人が、Inngest の step.run で安全に復旧できるワークフローを今日から TypeScript で組めるようになります
AI エージェントのループをイベント駆動で分割し、リトライポリシー・冪等性キー・人間承認ゲート・ファンアウトを動くコードで習得できます
Temporal や独自ジョブキューを抱え込まず、Vercel / Cloudflare Workers 上にそのまま乗る軽量な耐障害ワークフローを手に入れられます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-13
Claude API の同時実行を束ねる — シングルフライトで重複推論とキャッシュ・スタンピードを防ぐ
同一プロンプトが同時に何度も Claude へ飛ぶ重複推論を、シングルフライト(request coalescing)で束ねる設計です。プロセス内・分散環境の実装、ジッター付きリトライ、負のキャッシュまで実測付きでまとめました。
API & SDK2026-07-03
同時リクエスト数はいくつまで持つのか — Little の法則と実測メモリで決める Claude API 本番デプロイのインフラ要件
同時リクエスト数・待ち行列長・メモリはいくつに設定すべきか。Claude API 本番デプロイのインフラ要件を Little の法則と実測ハーネスで数字から導く手順を、夜間バッチで OOM を踏んだ経験をもとに整理しました。
API & SDK2026-06-28
弱いモデルへ静かに落ちる方がエラーより怖い — Claude API のモデル降格に「下限」を設ける設計
無人運用のパイプラインでモデルが使えなくなったとき、弱いモデルへ自動で落ちる実装は危険です。タスクごとの能力契約と降格予算で「どこまで落ちたら止めるか」を決める設計を、個人開発の自動運用の実体験から解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →