Claude Media
CLAUDE_CODE_AUTO_MODE_SERVERでauto modeのサーバー側レビューを止める

CLAUDE_CODE_AUTO_MODE_SERVERでauto modeのサーバー側レビューを止める

auto modeの安全確認をサーバーへ投げるのをやめ、自前クラシファイアだけで判定させる環境変数の使い方とバージョン要件を解説します。

CLAUDE_CODE_AUTO_MODE_SERVERでできること

CLAUDE_CODE_AUTO_MODE_SERVERは、auto modeの安全確認をサーバーに投げるかどうかを切り替える環境変数です。0を設定すると、Claude Codeは常に自前のクラシファイアリクエストで行動を判定します。Claude Code v2.1.271以降が対象で、直接Anthropic APIへ接続する構成ではv2.1.281以降が条件です。

この変数を触る理由は、ほぼ次の2つに絞られます。

  • 「classifier request charges」の通知が出て、課金される経路に落ちている
  • The server-side auto mode classifier gave no verdictという拒否が続き、ターンが止まる

通知の原因で最も多いのは、LLMゲートウェイやプロキシです。「判定なし」の拒否も、ゲートウェイがレスポンスを途中で切る・書き換える場合に起こります。直接接続でも、サーバー側のチェックがタイムアウトなどで失敗すると起こります。

サーバー側レビューとは何か

auto modeでは、シェルコマンドやネットワークアクセスなどの行動を実行前にクラシファイア(判定用の別モデル)がチェックします。サーバー側レビューが有効な接続では、この判定がClaude Code自身の追加リクエストとしてではなく、セッションの通常のモデルリクエストの一部としてサーバー側で行われます。

サーバーが判定する接続は次の3種類です。

  • Anthropic APIへの直接接続: プランやアカウント種別を問わず、Anthropicが順次展開しています。対話型、-p、Agent SDK、VS Code拡張、デスクトップアプリで必要なバージョンは異なり、テレメトリを無効にしているセッションも対象です。
  • クラウドプロバイダー、LLMゲートウェイ、プロキシ経由: Claude Platform on AWS、Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundry、そしてANTHROPIC_BASE_URLをLLMゲートウェイやプロキシに向けた構成で、プランを問わず対象です。
  • サインイン済みのClaude apps gatewayセッション: こちらも対象です。

バージョンごとの条件は、後述の表にあります。

サーバーが判定した結果はそのまま採用されます。判定に至らないケースは2通りあり、Claude Codeの反応が正反対です。

くらべる

レビューされない場合と、判定が返らない場合

フォールバック

サーバーがそのセッションをレビューしない

レビュー結果なしで応答が完了するか、サーバーが「このセッションはレビューしない」と答えるケースです。原因の多くは、レビュー用のリクエストや結果を落とすLLMゲートウェイ・プロキシか、サーバー側チェックがまだ届いていないプラットフォーム・リージョン・認証情報です。Claude Code自身のクラシファイアリクエストに切り替わり、動作は続きます。

拒否

サーバーが行動に判定を返さない

レビュー結果が届く前に応答が終わった、または結果をClaude Codeが読めない形式で受け取ったときに起こります。Claude Codeは未審査の行動を実行せず拒否します。直接接続でも、サーバー側のチェックが失敗したとき(タイムアウトなど)に同じ拒否になります。

通知と拒否に当たったときの見分け方

症状によって、0が効く場面と効かない場面があります。

切り分け

症状別の対処

  • 「classifier request charges」の通知

    フォールバックが続くセッションで、クラシファイアリクエストが課金されるアカウントに出ます。Pro・Max・Teamプランには出ません。Enterprise、Claude APIアカウント、クラウドプロバイダー経由で出るなら、ゲートウェイの有無を確かめます。ゲートウェイが対応できないと分かっているなら0にします。

  • 「gave no verdict」の拒否

    ゲートウェイがストリーミングを途中で切る、または結果を書き換えている疑いがあります。0にすればサーバーへ問い合わせない構成になり、サーバー由来のこの拒否の原因そのものがなくなります。

  • 10回連続でターンが止まる

    ターンが止まる動作はv2.1.280からで、それ以前は拒否するだけでした。メッセージを送り直せば回数は0から数え直しです。止まる原因がゲートウェイなら、先にゲートウェイ側の修正を依頼するか0にします。

自前クラシファイアだけに切り替える手順

ゲートウェイやプロキシがレビュー用のリクエストとレスポンスを、認識できないフィールドも含めてそのまま通過させるように直せば、0にしなくてもサーバー側レビューを使い続けられます。ゲートウェイの提供元に改修をすぐ頼めない、あるいは対応していないと分かっている場合に、問い合わせ自体を止めます。

手順

環境変数で固定する

  1. 1

    環境変数を設定する

    Claude Codeを起動するシェルで0を設定します。

  2. 2

    新しいセッションを始める

    変数はセッションを始める前に設定します。起動済みのセッションには効かないので、新しくclaudeを起動します。

  3. 3

    使われている経路を確かめる

    auto modeのセッションで/statusを実行し、Auto mode serverの行を見ます。この行はv2.1.278で追加されたので、それより前のバージョンでは表示されません。

export CLAUDE_CODE_AUTO_MODE_SERVER=0

シェルで直接設定する代わりに、設定ファイルのenvキーに書いてもかまいません。

{
  "env": {
    "CLAUDE_CODE_AUTO_MODE_SERVER": "0"
  }
}

/statusのAuto mode serverの行は、サーバー側レビューが有効な間はEnabled、フォールバックした後はDisabledと表示されます。

直接接続で1を設定すると、まだサーバー側レビューが有効でないセッションでも有効にできます。CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1も設定している場合は、この限りではありません。CLAUDE_CODE_AUTO_MODE_SERVERを未設定のままCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1だけを設定したときも、サーバーへの問い合わせは止まります。

これには例外があります。Claude Codeを組み込むホストがCLAUDE_CODE_PROVIDER_MANAGED_BY_HOSTを設定している環境です。Bedrock、Agent Platform、Foundry、Claude apps gatewayでは、DISABLE_EXPERIMENTAL_BETAS=1を設定しても問い合わせは止まりません。止めるにはCLAUDE_CODE_AUTO_MODE_SERVER=0が要ります。

CLAUDE_CODE_AUTO_MODE_SERVERは暫定的な設定で、公式ドキュメントは将来のリリースで削除される可能性があるとしています。

切り替えると課金と通知はどう変わるか

0を設定すると、クラシファイアリクエストは常にClaude Code自身が発行する形に統一されます。この方式はサーバー側レビューが導入される前からある挙動で、対象のアカウントではトークン使用量としてそのまま課金されます。サーバー側レビューが有効なセッションでは、判定がセッション自体のモデルリクエストに含まれるため無課金です。

課金される経路から落ちたセッションには、次の通知が出ます。

We're changing auto mode to no longer charge for classifier requests in Claude Code. However, this session isn't eligible.

通知は、課金対象のアクションを最初に判定する直前で止まって答えを待ちます。Enterで続行するとセッションの残りは自前のクラシファイアで動き、同じセッションでは再び出ません。ゲートウェイの名前が通知に出ている場合は、続行すると同じマシンで24時間は再表示されません。EscまたはCtrl+Cならその行動は実行されずにターンが止まり、auto modeのまま次のアクションで再び通知が出ます。

答えを待てない場面もあります。-pの非対話実行では同じ文面がstderrに出て、stream-json出力ではsystemの警告メッセージとして流れるので、Agent SDKのアプリからも読めます。あらかじめCLAUDE_CODE_AUTO_MODE_SERVER=0を設定しておけば、この通知自体が出なくなります。

サーバーが応答しないときの挙動

サーバーがレビュー結果を返せなかった行動は、実行されずに拒否されます。エラーメッセージは次の形で表示されます。

The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

この拒否が10回連続で続くと、auto modeはターンを止めます。

Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.

対話セッションでは警告としてターンが終了し、-pを使う非対話実行では実行エラーとして終了します。サブエージェントが上限に達した場合は、サブエージェントが途中で停止して、そこまでの成果物と「auto modeが停止させた」という注記が呼び出し元に渡ります。

一部の拒否の前には、Claudeの次の試行がすぐ後を追わないよう、Claude Codeが意図的に待ち時間を挟みます。対話セッションではその間、スピナーにAuto mode check unavailableとカウントダウンが出ます。Escでそのターンを中断できます。

公式の対処法には、メッセージの再送、ゲートウェイの確認、auto modeを抜けて自分で承認する方法と並んで、起動前にCLAUDE_CODE_AUTO_MODE_SERVER=0を設定する方法が挙がっています。

接続方法別のバージョン要件

サーバー側レビューが既定で有効になる条件は、接続方法ごとにバージョンが異なります。自分の環境がどの行に当てはまるか確認してください。

接続方法サーバーが既定で判定する条件CLAUDE_CODE_AUTO_MODE_SERVERの要件
直接API接続の対話型(Pro・Max・Team)サーバーが既定で判定する条件v2.1.271以降CLAUDE_CODE_AUTO_MODE_SERVERの要件値を設定する場合はv2.1.281以降
直接API接続の対話型(Enterprise・Claude APIアカウント)サーバーが既定で判定する条件v2.1.278以降CLAUDE_CODE_AUTO_MODE_SERVERの要件値を設定する場合はv2.1.281以降
直接API接続の-p・Agent SDK・VS Code拡張・デスクトップアプリサーバーが既定で判定する条件v2.1.281以降CLAUDE_CODE_AUTO_MODE_SERVERの要件値を設定する場合はv2.1.281以降
直接API接続・フィーチャーフラグを取得しないセッションサーバーが既定で判定する条件v2.1.282以降で種類を問わず既定CLAUDE_CODE_AUTO_MODE_SERVERの要件値を設定する場合はv2.1.281以降
Claude Platform on AWS・Bedrock・Google CloudのAgent Platform・Foundry・LLMゲートウェイ経由サーバーが既定で判定する条件v2.1.278以降CLAUDE_CODE_AUTO_MODE_SERVERの要件v2.1.271以降(直接接続の制限は対象外)
サインイン済みClaude apps gatewayサーバーが既定で判定する条件v2.1.280以降CLAUDE_CODE_AUTO_MODE_SERVERの要件v2.1.271以降(直接接続の制限は対象外)

変数そのものはv2.1.271以降で認識されますが、直接API接続で値を変えるにはv2.1.281以降が必要という2段構えです。直接接続では、バージョンが足りないと設定したつもりでも反映されません。

Bedrock・Vertex AI・Foundryでは、v2.1.273から既定がローカルのクラシファイアに変わりました。プラットフォーム側のサーバー判定を使うには、CLAUDE_CODE_AUTO_MODE_SERVER=1を設定します。v2.1.278で、既定がサーバー側に変わります。

ルールの中身を実機で確かめる

サーバーに任せても自前に固定しても、判定の基準になるルールは同じauto modeの設定です。claude auto-modeには、その設定を読むサブコマンドがあります。v2.1.287で--helpを実行した出力の抜粋は次のとおりです。

claude auto-mode --help
Usage: claude auto-mode [options] [command]
 
Inspect or reset auto mode classifier configuration
 
Commands:
  config              Print the effective auto mode config as JSON: your
                      settings where set, defaults otherwise
  critique [options]  Get AI feedback on your custom auto mode rules
  defaults [options]  Print the default auto mode environment, allow, soft_deny,
                      and hard_deny rules as JSON
  reset [options]     Reset auto mode configuration to the shipped defaults by
                      removing the autoMode section from your user settings file

ユーザー設定が空の環境でclaude auto-mode defaultsを実行すると、allowが17件、soft_denyが72件、hard_denyが1件、environmentが21件のJSONが出ます。configも、設定が空なら同じ件数です。defaultsには--label <prefix>があり、ラベルの先頭文字列で絞り込めます。resetはautoModeセクションを消して既定に戻す操作、critiqueは独自ルールをモデルに評価させる操作なので、試すときは意図を決めてから実行します。

名前が似た環境変数と混同しない

auto mode関連の環境変数は名前が似ているため、CLAUDE_CODE_AUTO_MODE_SERVERと区別しておくと事故を避けられます。

  • CLAUDE_CODE_ENABLE_AUTO_MODE: 古いリリース向けの互換用変数で、現在は効果がありません。v2.1.158からv2.1.206の間だけ、Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundryでauto modeを使うために1を設定する必要がありました。
  • CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT: rm -rf /のような重要パスの削除で、確認の時間制限を外す変数です。v2.1.281以降が必要です。1を設定すると、auto modeではこの削除がクラシファイアの判定に回ります。bypassPermissionsでは、確認が回答を待ち続けます。起動するシェルの環境で設定する必要があり、設定ファイルのenvブロックに書いても無視されます。この点はCLAUDE_CODE_AUTO_MODE_SERVERと逆で、サーバー側レビューを使うかどうかの設定でもありません。
  • CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: CLAUDE_CODE_AUTO_MODE_SERVERを未設定のまま1にすると、副作用としてサーバーへの問い合わせが止まります。ただしホストがCLAUDE_CODE_PROVIDER_MANAGED_BY_HOSTを設定した環境は、先に述べた例外に当たります。ベータ機能全体を止めるための変数なので、サーバー側レビューだけを止めたい場合はCLAUDE_CODE_AUTO_MODE_SERVER=0のほうが意図が明確です。

まとめ

Pro・Max・Teamプランの直接接続のように既定で無課金に動いている環境では、この変数を触らずに既定のままにする選択肢があります。ゲートウェイやプロキシ経由で通知や拒否が続く環境では、0が課金経路と挙動を固定する一時的な設定になります。

auto modeの基本挙動と、サーバー側レビューが既定になった経緯はClaude Code v2.1.278とClaude Code v2.1.282で扱っています。直接接続でこの変数が効くようになったバージョンはClaude Code v2.1.281の記事にあります。クラシファイアが実際にどのような行動を止めるかは、Claude Codeのサーバー側プロンプトインジェクション対策も参考になります。コマンドごとにネットワーク許可を絞るauto modeのallowed_domainsも、この審査の対象になります。

この記事を共有:XはてブLinkedIn