Claude Code の auto mode が中継経由で毎ターン失敗?2.1.317 でゲートウェイの 403/422 を修正(アップデートと検証)

Claude Code 2.1.317(11 月 3 日リリース)は、ANTHROPIC_BASE_URL が LLM ゲートウェイを指し、そのゲートウェイがサーバー側の安全チェックに 403 や 422 を返すと auto mode が毎ターン失敗する問題を修正しました。変更点、影響を受けるサードパーティゲートウェイや中継の利用者、アップデートとバージョン確認、Base URL とキーの設定、auto mode の有効化、2.1.316 と 2.1.317 の比較検証、エラー対照表と FAQ をまとめます。

9 分钟阅读
Claude Code の auto mode が中継経由で毎ターン失敗?2.1.317 でゲートウェイの 403/422 を修正(アップデートと検証)

結論:サードパーティのゲートウェイや中継(独自の ANTHROPIC_BASE_URL)経由で Claude Code を使っていて、auto mode にすると毎ターン 403 や 422 で失敗する場合は、2.1.317 にアップデートすれば解決します。

  • Claude Code 公式 CHANGELOG によると、2.1.317 は「base URL に設定した LLM ゲートウェイがサーバー側の安全チェックに 403 または 422 を返すと、auto mode が毎ターン失敗する」問題を修正しました。apiKeyHelper 使用時の 403 は変わりません。npm での 2.1.317 の公開は 2026 年 11 月 3 日 07:57(北京時間)です。
  • 11 月 3 日午後(北京時間)、ローカルプロキシで安全チェックを拒否するゲートウェイを再現しました。2.1.316 は最初のリクエストで失敗し、以降も毎ターン失敗。2.1.317 はチェック用フィールドを外して 1 回再試行し、タスクを完了しました。
  • aicodewith(https://api.aicodewith.ai)に直接つないだ場合、2.1.316 と 2.1.317 のどちらでも auto mode はタスクを完了しました。当サイトの API は安全チェックのリクエストに 200 を返し、Claude Code はローカル分類器に切り替わります。
  • すぐにアップデートできない場合は CLAUDE_CODE_AUTO_MODE_SERVER=0 を設定すると、auto mode がサーバーにチェックを依頼しなくなります。2.1.316 で動作を確認済みです。

API Key を作成して、Claude Code・Codex・Cursor で Claude を使う →

2.1.317 の変更点

auto mode は Claude Code の権限モードの一つで、操作ごとに承認する代わりに、分類器がバックグラウンドで各操作の安全性をチェックします。公式の権限モードのドキュメントによると、ANTHROPIC_BASE_URL が LLM ゲートウェイやプロキシを指している場合、Claude Code はまずサーバーにチェックを依頼し(サーバー側分類器)、サーバーがチェックしないときはローカル分類器に切り替えます。

問題はこの「サーバー側チェック」の段階です。Claude Code はリクエストに safeguards フィールドと beta ヘッダーを追加します。これを認識できないゲートウェイは 403(拒否)や 422(不正なフィールド)を返し、旧バージョンはこれを通常の失敗として扱うため、毎ターン失敗していました。

CHANGELOG によると、2.1.317 の auto mode とゲートウェイ関連の項目は次のとおりです。

項目内容
主な修正base URL のゲートウェイがサーバー側安全チェックに 403 / 422 を返しても、auto mode が毎ターン失敗しなくなった(apiKeyHelper 使用時の 403 は変更なし)
新しい通知サブエージェントのツール呼び出しに対して auto mode のチェックが答えを返さないとき、通知を表示。以前はメイン画面に何も出なかった
403 の表示地域やネットワークのブロック(HTTP 403)がサインイン失敗として表示されなくなり、ブロックであることを説明する
OTelメトリクス、イベント、span に anthropic.plan、anthropic.seat_type、anthropic.provider、anthropic.custom_base_url を追加

それ以前のバージョンでも同じ領域が修正されています。

バージョン関連項目
2.1.316プロキシや LLM ゲートウェイの背後で、ホストアプリ(Claude Desktop など)が実験的 beta をオフにして起動したセッションで CLAUDE_CODE_AUTO_MODE_SERVER=1 が無視される問題を修正
2.1.314安全チェックが判定を返さないとき、auto mode が呼び出しを blocked と報告し /permissions に載せる問題を修正
2.1.304ガイド付き設定 /auto-mode-setup が Bedrock、Vertex、Foundry、Claude apps gateway、テレメトリ無効のセッションでも利用可能に
2.1.302クライアント側分類器のモデルを選ぶ CLAUDE_CODE_AUTO_MODE_MODEL を追加(サーバー側 auto mode には影響しない)。サードパーティプロバイダー、テレメトリ無効、新規インストールでは、権限モード未指定の claude -p は default で開始し、--permission-mode auto なら auto のまま

影響を受けるのは誰か

次の 3 つすべてに当てはまる場合です。

  1. auto mode を使っている。ドキュメントによると、2.1.283 以降はターミナルと VS Code の開始モードが auto mode です。
  2. ANTHROPIC_BASE_URL がサードパーティの LLM ゲートウェイ、中継、社内プロキシを指している。
  3. そのゲートウェイが、safeguards フィールドや dangerous-tool-use beta ヘッダーを含むリクエストに 403 や 422 を返す。よくある原因は、リクエストボディの厳格な検証(未知のフィールドで 422)やセキュリティポリシー(403)です。

Anthropic API に直接サインインしている場合や、未知のフィールドをそのまま転送するゲートウェイの場合は影響しません。ゲートウェイが転送すべき内容は公式 LLM ゲートウェイのドキュメントを参照してください。

安全チェックのリクエストの中身

Claude Code と aicodewith の間に、リクエストを記録するだけのローカルプロキシを置きました。auto mode セッションの最初のリクエストには次の内容が含まれていました(抜粋)。

text
POST /v1/messages?beta=true
anthropic-beta: claude-code-20250219, ..., dangerous-tool-use-2026-09-03, afk-mode-2026-01-31

"safeguards": [{"type": "dangerous_tool_use",
                "classifier_context": {"v": 1, "permission_mode": "auto", "platform": "linux", ...}}]

サーバーがチェックしない場合、以降のリクエストには safeguards が付きません。その代わり、Bash などを実行する前に、ローカル分類器のモデル(既定は claude-sonnet-5)へ別のリクエストを送ります。

検証:2.1.316 と 2.1.317 の比較

環境:2026 年 11 月 3 日 15:12〜15:35(北京時間)、Linux、モデル claude-opus-5-5、当サイトのキー、毎回新しい設定ディレクトリ。タスクは、フィボナッチ数列を出力する fib.py を書いて python3 で実行させるもので、ファイル書き込み 1 回と、auto mode のチェックを通る Bash コマンド 1 回が発生します。

bash
claude -p "Create a file fib.py that prints the first 10 Fibonacci numbers, then run it with python3 and tell me the output." \
  --permission-mode auto --model claude-opus-5-5 \
  --output-format json --debug-file ./cc-debug.log

grep -E "server-classifier|API error" ./cc-debug.log

「模擬ゲートウェイ」は、ローカルプロキシに追加したルールです。safeguards フィールドを含むリクエストには 403 または 422 を返し、それ以外は aicodewith にそのまま転送します。CHANGELOG に書かれた状況を再現するためのもので、aicodewith の実際の挙動ではありません。

ケース2.1.3162.1.317
aicodewith に直接接続成功、3 ターン、12.0 秒成功、4 ターン、17.7 秒
模擬ゲートウェイが安全チェックに 4030.6 秒で失敗、Failed to authenticate. API Error: 403 ...。次のターンも失敗成功、3 ターン、11.8 秒
模擬ゲートウェイが安全チェックに 4220.7 秒で失敗、API Error: 422 ...。次のターンも失敗成功、3 ターン、15.7 秒
模擬 403 + apiKeyHelper—11 回再試行後に失敗、248.4 秒、Failed to authenticate
2.1.316 + CLAUDE_CODE_AUTO_MODE_SERVER=0、模擬 403 / 422成功、13.7 秒 / 10.8 秒不要

2.1.317 の直接接続で 1 ターン多いのは、Claude が出力確認のためにスクリプトをもう一度実行したためで、バージョンとは無関係です。成功したすべての実行で 0、1、1、2、3、5、8、13、21、34 が出力されました。

aicodewith に直接接続:両バージョンとも正常

当サイトの API は safeguards 付きのリクエストに 200 を返しますが、判定結果は返しません。debug ログでは、Claude Code がサーバー側はチェックしないと判断し、セッションの残りでローカル分類器を使っていることがわかります。

text
[server-classifier] the platform gave no classification for this request (server_no_result);
  treating that as this deployment's answer: auto mode classifies locally for the rest of
  this session and stops sending the classifier context
[auto-mode] new action being classified: tool=Bash actionChars=26
[Stall] classifier_request_finished tool=Bash stage=xml_s1 outcome=ok durationMs=2727

Bash コマンドごとのローカルチェックは約 2.5〜2.7 秒でした。起動時に stderr へ、現在のアドレスは新しいサーバー側分類に対応していないが auto mode は引き続き動作する、という英語の案内が出ますが、無視してかまいません。

2.1.316 で安全チェックを拒否するゲートウェイ:毎ターン失敗

{OLD403}

403 が Failed to authenticate(認証失敗)と表示されるため、キーの間違いに見えます。実際にはキーは正しく、manual モードなら同じ設定で動きます。

2.1.317:チェック用フィールドを外して 1 回再試行

アップデート後、同じゲートウェイでの debug ログは次のとおりです。

text
[ERROR] API error (attempt 1/11): 403 403 {"type":"error","error":{"type":"permission_error",
        "message":"gateway policy: field safeguards is not allowed"}}
[WARN] [server-classifier] HTTP 403 with no cause Claude Code recognises, on a request that
       carried the dangerous-tool-use beta header; sending it once more without that header
       and the safeguards field, to learn whether they caused the refusal
[WARN] [server-classifier] a request was refused (HTTP 403) and answered when sent again
       without the dangerous-tool-use beta header and the safeguards field. Until Claude Code
       restarts, neither is sent and auto mode does not ask the server to check actions.
       To keep the check, let the gateway pass that header and field, then restart Claude Code.

つまり 2.1.317 は原因のわからない 403 / 422 を受け取ると、dangerous-tool-use beta ヘッダーと safeguards フィールドを外して 1 回だけ再送します。成功すれば、再起動まではサーバーにチェックを依頼せず、ローカル分類器を使います。操作のチェックは引き続きローカルで行われます。サーバー側チェックに戻すには、ゲートウェイでこのヘッダーとフィールドを通してから Claude Code を再起動します。

apiKeyHelper 使用時の 403 は引き続き失敗

CHANGELOG には apiKeyHelper 使用時の 403 は変更なしとあり、検証でもそのとおりでした。2.1.317 は 11 回再試行し、約 4 分後にエラー終了しました。

text
# 2.1.317 + apiKeyHelper, gateway answers 403 to the safety check
[ERROR] API error (attempt 1/11): 403 ...
...
[ERROR] API error (attempt 10/11): 403 ...
Failed to authenticate. API Error: 403 gateway policy: field safeguards is not allowed
# exit 1 after 248.4 s

apiKeyHelper を使う場合は、ゲートウェイで safeguards を通すか、後述の CLAUDE_CODE_AUTO_MODE_SERVER=0 を使ってください。

2.1.317 へのアップデート

公式インストールドキュメントによると、ネイティブインストールはバックグラウンドで自動更新されます。npm、Homebrew、WinGet でのインストールは手動更新が必要です。npm では npm update -g ではなく npm install -g ...@latest を使います。

bash
# native install (curl -fsSL https://claude.ai/install.sh | bash)
claude update

# npm install
npm install -g @anthropic-ai/claude-code@latest

# Homebrew (the claude-code cask follows the stable channel)
brew upgrade claude-code@latest

# Windows WinGet
winget upgrade Anthropic.ClaudeCode

# check
claude --version
# 2.1.317 (Claude Code)

claude --version が 2.1.317 以上なら OK です。Homebrew の claude-code cask は stable チャネルに従い、通常 latest より 1 週間ほど遅れます。今すぐ修正を入れるなら claude-code@latest を使ってください。セッション内で /status を実行すると、Auto mode server が Enabled かどうか確認できます。

ANTHROPIC_BASE_URL とキーの設定

まず aicodewith で API キーを作成します。

API Key を作成して Claude Code に接続 →

macOS / Linux:

bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY"
claude --permission-mode auto

Windows PowerShell:

powershell
$env:ANTHROPIC_BASE_URL = "https://api.aicodewith.ai"
$env:ANTHROPIC_AUTH_TOKEN = "YOUR_API_KEY"
claude --permission-mode auto

常に有効にするなら ~/.claude/settings.json に書きます。permissions.defaultMode を auto にする設定はユーザー設定でのみ有効で、プロジェクトの .claude/settings.json では効きません(ドキュメントより)。

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
  },
  "permissions": {
    "defaultMode": "auto"
  }
}

ほかの書き方(Windows の永続環境変数、モデル設定)は「Claude Code をサードパーティ API に接続する方法」を参照してください。

auto mode を有効にする

  • 起動時:claude --permission-mode auto。
  • セッション中:Shift+Tab で切り替え、ステータスバーに ⏵⏵ auto mode on と出れば auto mode です。
  • 非対話(claude -p):2.1.302 の CHANGELOG によると、サードパーティプロバイダー、テレメトリ無効、新規インストールでは権限モード未指定だと default で始まるため、--permission-mode auto を明示します。
  • ローカル分類器のモデルを変える:CLAUDE_CODE_AUTO_MODE_MODEL(2.1.302 以降)。サーバー側チェックには影響しません。

まだアップデートできず、ゲートウェイが安全チェックを拒否する場合は、サーバー側チェックをオフにしてローカル分類器だけを使えます。

{SERVER0}

2.1.316 と模擬 403 / 422 ゲートウェイの組み合わせで検証し、どちらもタスクを完了しました。

よくあるエラー対照表

症状原因対処
毎ターン API Error: 403 ...、前に Failed to authenticate。manual モードなら動くゲートウェイが auto mode のサーバー側安全チェックを拒否2.1.317 にアップデート、または CLAUDE_CODE_AUTO_MODE_SERVER=0
毎ターン API Error: 422 ...、メッセージに safeguardsゲートウェイがボディを厳格に検証し、safeguards フィールドを拒否同上、またはゲートウェイでフィールドを通す
apiKeyHelper 使用時の 4032.1.317 でも挙動は変わらず、認証失敗として扱われるゲートウェイで safeguards と beta ヘッダーを通す、または CLAUDE_CODE_AUTO_MODE_SERVER=0
地域やネットワークのブロックによる 403地域・ネットワークの制限2.1.317 からはサインイン失敗ではなくブロックと説明される。ネットワークを変えるか、到達できるゲートウェイを使う
操作が止まり、安全チェックが判定を返さないサーバーがその操作の判定を返さなかった2.1.314 から blocked と誤報されない。2.1.317 からサブエージェントでも通知が出る。ドキュメントによると判定なしが 10 回続くとターンが止まる
manual モードでも毎ターン 403 / 401キーが無効、または Base URL の誤りキーと ANTHROPIC_BASE_URL を確認。auto mode とは無関係

よくある質問

aicodewith を使っています。アップデートは必要ですか?

検証では 2.1.316 と 2.1.317 のどちらも当サイトの API で auto mode が正常に動いたので、この不具合には当たりません。2.1.317 にはほかの修正もあるので、通常どおりアップデートをおすすめします。

2.1.317 以降も auto mode は安全ですか?

チェックは続いています。省かれるのは「サーバーにチェックを依頼する」段階だけで、チェックが必要な操作はローカル分類器が判断します。ログでも Bash コマンドごとにローカルチェックの記録がありました。

なぜ 403 が「Failed to authenticate」と表示されるのですか?

旧バージョンは auto mode の安全チェックで受け取った 403 を認証失敗として扱っていました。キーが正しく、manual モードでは動き、auto mode のときだけ 403 になるなら、ほぼこの問題です。

この問題かどうかを確かめるには?

--debug-file を付けて一度実行し、ログで server-classifier と API error を検索します。エラーに safeguards が含まれる、または 2.1.317 が「sending it once more without that header and the safeguards field」と出力していれば、ゲートウェイが安全チェックを拒否しています。

Codex にも似た権限設定はありますか?

Codex はサンドボックスと承認ポリシーでコマンド実行を制御します。設定方法は「Codex のサンドボックスと /permissions の設定」を参照してください。

関連記事

相关文章

DeepSeek Harness Creator Mode の使い方:インストール、サードパーティ API 接続、初めてのプラグイン作成を実機検証

DeepSeek Harness Creator Mode の使い方:インストール、サードパーティ API 接続、初めてのプラグイン作成を実機検証

11 月 2 日、DeepSeek Harness 公式アカウントが Creator Mode を紹介しました。作りたいツールを一文で伝えると、エージェントがプラグインを書き、Harness にインストールし、読み込まれたかまで確認します。本記事では Creator Mode とは何か、npx での Harness の起動方法、OpenAI 互換のサードパーティ API(aicodewith の Base URL と Key)をつないで Claude・GPT・DeepSeek モデルを使う方法、Creator Mode で todo_scan プラグインを作る手順を、実際の出力、よくあるエラー、Claude Code / Codex での対応方法とあわせて解説します。

Claude Message Threads の使い方:Messages API メッセージスレッド公開ベータ、新しいメッセージだけ送信・初回トークン約 35% 高速化(Claude Code / API 検証)

Claude Message Threads の使い方:Messages API メッセージスレッド公開ベータ、新しいメッセージだけ送信・初回トークン約 35% 高速化(Claude Code / API 検証)

Anthropic は 11 月 2 日、Messages API の Message Threads(メッセージスレッド)を公開ベータにしました。最初のリクエストで会話全体を送ってスレッドを作り、以降は新しいメッセージと直前の応答の id だけを送ります。長い会話では最初のトークンが早く返りますが、トークン使用量と課金は変わりません。本記事では公式ドキュメントに沿って thread パラメータ、ベータヘッダー、5 分での失効と 404 時の再送を説明し、curl・Python・TypeScript の例を示します。さらに aicodewith の Key で検証した結果、aicodewith 経由では現在 thread フィールドが無視され、継続ターンで前の文脈が失われること、Claude Code には影響がないこと、代替の書き方とよくあるエラーをまとめます。

Karpathy の HackerTube の作り方:Claude Code / Codex で Hacker News のコメントから動画を掘り出し、アルゴリズムのない動画サイトを作る(実測)

Karpathy の HackerTube の作り方:Claude Code / Codex で Hacker News のコメントから動画を掘り出し、アルゴリズムのない動画サイトを作る(実測)

Karpathy は Claude Code と Opus 5.5 で約 2 時間かけて HackerTube を作り、Hacker News で 20 年間くり返し勧められてきた YouTube 動画 6,454 本を選び出しました。本記事では当サイトの API Key で Claude Code と Codex にそれぞれ縮小版を作らせました。HN 公式の Algolia API で 2 か月分のコメントを取得し、YouTube リンクを抽出・重複排除・集計して静的ページを生成します。プロンプト全文、所要時間、両クライアントの比較、HackerTube までに足りない手順をまとめます。