◉CLAUDE LABEN
●2.1.292 — Claude Code 2.1.292(10月6日)。cloud session が許可プロンプトへの回答を落とす不具合と、終了時に直近メッセージが失われる不具合を直しました●MODELS API — thinking を無効にできるモデルかどうかを、Models API の capabilities で確認できるようになりました(10月)●11/30 — Sonnet 4.5 の Claude API 提供終了まで残り54日。移行先は Sonnet 5.5 で、呼び出し側の確認点は thinking の指定と tool_choice です●MODS — Claude Code の Mods をどう安全に入れるか、という手順の記事が Zenn に出ています。論点は導入前に確認する項目と戻し方です●NEW — Pro を払ったのに無料のままに見えるとき、買った場所が Web かストアかで見る画面が変わります。その切り分けをまとめました●THINKING — Sonnet 5.5 の thinking ブロックは、作ったアカウントでしか使えません。別のアカウントから送ると黙って落とされます●2.1.292 — Claude Code 2.1.292(10月6日)。cloud session が許可プロンプトへの回答を落とす不具合と、終了時に直近メッセージが失われる不具合を直しました●MODELS API — thinking を無効にできるモデルかどうかを、Models API の capabilities で確認できるようになりました(10月)●11/30 — Sonnet 4.5 の Claude API 提供終了まで残り54日。移行先は Sonnet 5.5 で、呼び出し側の確認点は thinking の指定と tool_choice です●MODS — Claude Code の Mods をどう安全に入れるか、という手順の記事が Zenn に出ています。論点は導入前に確認する項目と戻し方です●NEW — Pro を払ったのに無料のままに見えるとき、買った場所が Web かストアかで見る画面が変わります。その切り分けをまとめました●THINKING — Sonnet 5.5 の thinking ブロックは、作ったアカウントでしか使えません。別のアカウントから送ると黙って落とされます
記事一覧/API & SDK
⬡ API & SDK/2026-06-22上級

pause_turn の継続ループに上限を入れる — 無人で長時間サーバーツールを安全に回す

web_search や code execution など長時間サーバーツールを使うと返ってくる pause_turn を、無人運用で安全に継続する設計をまとめました。4種類の stop_reason を1ループで分岐し、継続回数と時間に上限を入れ、セグメントを跨ぐ usage を数える実装まで扱います。

Claude48API27pause_turntool-use23production87

✦ プレミアム記事

個人開発で Dolice Labs の4サイトぶんの記事生成を毎晩まとめて回しているのですが、ある朝だけ「検索したはずの最新情報が本文に入っていない」記事が混じっていました。エラーログには何も出ていません。レスポンスを保存しておいたものを開くと、stop_reason が pause_turn で返っていて、私の生成ループがそこで満足して止まっていたのです。web_search が一度の往復で終わらず「区切り」を返してきたのに、ループ側がそれを完了だと読んでしまっていました。

pause_turn は普段あまり目にしません。短いプロンプトでは出ないからです。けれど web_search・web_fetch・コード実行のような長時間サーバーツールを挟むと、ある日突然返ってきます。しかも例外ではなく正常応答として返るので、握りつぶしている限り気づけません。無人運用ではここが静かな取りこぼしの温床になります。

pause_turn は「エラー」でも「完了」でもない、第三の状態

stop_reason を「応答が終わった理由」だと一括りにすると、pause_turn で必ず足をすくわれます。値の性格を「終わった系」と「まだ続く系」に分けて捉えるのが出発点です。

stop_reason状態必要な後続処理
end_turn正常終了なし。出力を確定してよい
max_tokens途中で打ち切り継続するか、不完全と記録する判断が要る
tool_use継続要求(クライアント側)tool_result を積んで再リクエスト
pause_turn継続要求(サーバー側)応答をそのまま積んで再リクエスト
refusal安全上の拒否再試行せず設計で受け止める

tool_use と pause_turn は似ていますが、積み直すものが違います。tool_use は自分でツールを実行して tool_result という新しいユーザーメッセージを足す必要があります。一方 pause_turn は、サーバー側ツール(検索や実行)の途中経過がすでに assistant の応答に入っているので、追加入力なしで応答ブロックをそのまま積み直すだけで続きが走ります。基本的な分岐そのものはstop_reason を取りこぼさないための実装パターンで整理していますので、まだ max_tokens すら見ていないという段階の方はそちらから入るのが早いです。本稿はその先、「無人で長時間ツールを回すときに pause_turn をどう設計するか」に絞ります。

まず再現する — どのツールで pause_turn が出るか

闇雲に対策する前に、自分のコードで pause_turn を一度出しておくと判断が速くなります。サーバーサイドツールを有効にして、複数回の検索が要りそうな問いを投げます。

import anthropic
 
client = anthropic.Anthropic(api_key="YOUR_API_KEY")
 
resp = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    tools=[{"type": "web_search_20260318", "name": "web_search"}],
    messages=[{
        "role": "user",
        "content": "2026年6月のClaude Developer Platformの更新を3件、出典つきで要約して",
    }],
)
print(resp.stop_reason)        # pause_turn になることがある
print([b.type for b in resp.content])
# 例: ['text', 'server_tool_use', 'web_search_tool_result', 'text']

ここで覚えておきたいのは、pause_turn のときも content には途中までの text・server_tool_use・web_search_tool_result といったブロックがすでに入っているという点です。つまり「空の応答」ではありません。だからこそ握りつぶすと、中途半端な本文がそのまま採用されてしまいます。私が最初にやらかしたのも、まさにこの「途中の text を完成品だと思い込む」失敗でした。

✦

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

この記事の続きを読む

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

この記事で得られること
✦pause_turn・tool_use・end_turn・max_tokens を1つの継続ループで分岐し、サーバーツールが途中で黙って切れる取りこぼしを塞げる
✦無人運用向けに継続回数の上限・経過時間ガード・セグメント横断の usage 加算を入れ、暴走するターンのコストを事前に止められる
✦ストリーミング時のイベント順序と、pause_turn を end_turn と誤読しないための観測ログ設計まで、そのまま貼れる実装で持ち帰れる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ API & SDK2026-07-24
メモリストアの棚卸しが半分しか返らない — path_prefix セグメント一致への移行
agent-memory-2026-07-22 で memories.list が変わりました。順序固定・depth 厳格化・path_prefix のセグメント一致。件数が音もなく半減した実例と、破壊的変更に耐える棚卸し層、呼び出し箇所を ast で洗い出す方法、depth=1 再帰の走査コストの実測をまとめます。
⬡ API & SDK2026-05-26
Claude API の構造化レスポンスを本番で安定させる — tool_use と JSON Schema、多層検証の実装メモ
Claude API の応答を JSON で受け取る実装は数行で書けますが、本番運用では「形は正しいが意味が壊れている」レスポンスにどう備えるかが分かれ目になります。tool_use・JSON Schema・ドメイン検証を組み合わせた多層パイプラインを、壁紙アプリの分類処理での実体験を交えて整理しました。
⬡ API & SDK2026-05-22
Claude API の tool_result could not be submitted が再発しないための回復ハンドラ設計
Claude API でエージェントを長時間動かしていると、ある日突然 'tool_result could not be submitted' が連発し始めることがあります。再試行しても直らない、ストリーミング途中で死ぬ、そして次のセッションでもまた出る — 常時稼働のエージェント基盤で実際に踏み抜いた4種類の原因と、TypeScript で書いた回復ハンドラの実装を整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます