Skip to Content
ユーザーガイド機能Auto Mode

Auto Mode

Auto Mode はLLM分類器を使用して各ツール呼び出しを評価し、自動承認するかどうかを判断します。Auto-Edit(ファイル編集のみ自動承認)とYOLO(すべてを自動承認)の中間に位置します。

このページはAuto Modeの設定とトラブルシューティングのリファレンスです。概要については 承認モードの概要を参照してください。

仕組み

Auto Modeでエージェントがツールを実行しようとすると、Qwen Codeは次の3つの層を順番に評価します。

  1. acceptEditsファストパス — ターゲットパスがワークスペース内にあるEdit / Writeは、分類器を呼び出さずに自動承認されます。 例外: Qwen Code自身の自己変更サーフェス (.qwen/settings*.jsonQWEN.mdAGENTS.mdQWEN.local.md、 設定済みコンテキストファイル名、.qwen/rules/.qwen/commands/.qwen/agents/.qwen/skills/.qwen/hooks/.mcp.json) や 永続化サーフェス (.git/.husky/package.json.npmrcMakefile.github/workflows/など) への書き込みは、ワークスペース内であっても分類器を通過します。保護されたパスを対象とするシンボリックリンクも解決されて拒否されます。cd && bash -lc '...'などのラッパー経由でこれらのパスにアクセスするシェルコマンドも分類器を通過します。
  2. 安全ツール許可リスト — 読み取り専用およびメタデータのみの組み込みツール (Read、Grep、Glob、LS、LSP、TodoWrite、AskUserQuestionなど) は、分類器を呼び出さずに自動承認されます。
  3. LLM分類器 — それ以外のすべて(シェルコマンド、Webフェッチ、サブエージェントの起動、ワークスペース外の編集、MCP ツール)は2段階の分類器に送られます:
    • Stage 1(高速){ shouldBlock } のみを出力します。約300ms。 shouldBlockfalse の場合、アクションは許可されて呼び出しが続行されます。
    • Stage 2(思考) — Stage 1がブロックと判断した場合のみ実行されます。 チェーンオブソート(chain-of-thought)レビューによってStage 1の誤検知を減らします。Stage 1のブロックを許可に変更することができます。ブロック時にユーザーに表示される reason を出力します。

分類器は設定済みの高速モデル (/model --fast) を使用します。高速モデルが設定されていない場合は、メインセッションモデルが代わりに使用されます。

ハードルールは引き続き優先されます

Auto Modeはハードな権限ルールを置き換えません。分類器が実行される前に:

  • permissions.deny ルールはそのルールの理由でアクションをブロックします。分類器はそれを参照しません。
  • 特定の指定子を持つ permissions.allow ルール (例: Bash(git status)Read(./docs/**)) は、引き続き分類器なしで自動許可されます。ただし、呼び出しが保護された自己変更または永続化パスへの書き込みとして解決される場合は除きます(「仕組み」の一覧を参照)。その場合、Auto Modeは呼び出しを分類器で再チェックするため、Bash(*) の許可ルールがQwen Codeの設定、コマンド、フック、スキル、MCP サーバーの書き換え権限に暗黙的に変わることはありません。
  • permissions.ask ルールはAuto Modeでも手動確認を強制します。

Auto Mode中は過度に広い許可ルールが除去されます

以下のようなルールは、分類器のレビューなしにエージェントが任意のコードを実行することを許可してしまいます:

  • Bash / Bash(*) / Bash() — すべてのシェルコマンドを自動許可
  • Bash(python:*)Bash(node*)Bash(bash*) — インタープリターのワイルドカード
  • Agent / Agent(coder) — Agentツールへの許可
  • Skill / Skill(pdf) — Skillツールへの許可

Auto Modeに入ると、Qwen Codeはこれらのルールをアクティブな権限セットから一時的に削除し、そのリストを通知として表示します。Auto Modeを終了すると、ルールは元に戻ります。settings.json は変更されません。

これらの広範なルールが本当に必要な場合は、代わりにYOLOモードを使用してください。

ヒントの設定

Auto Modeは settings.jsonpermissions.autoMode を読み取ります。 エントリはルールパターンではなく自然言語の説明です。これらは組み込みのデフォルトと並んで、分類器のシステムプロンプトに追加的に注入されます。

ヒントカテゴリは3つと環境リストがあります:

  • allow — 分類器が自動承認すべきアクション。
  • softDenyユーザーの直近の明示的なリクエストがその特定のアクションとスコープを求めていない限り、分類器がブロックすべき破壊的または不可逆なアクション。ソフト拒否はユーザーの意図によって解除できますが、「何でもやって」という一般的な指示はカウントされません。
  • hardDenyautoMode.hints.allow や直近のユーザーの意図に関わらず、Auto Modeで分類器が必ずブロックすべきセキュリティ境界アクション。これは分類器ポリシーであり、決定論的な権限ルールではありません。permissions.allow をオーバーライドしません。権限マネージャーで絶対に許可してはならないアクションには permissions.deny を使用してください。
{ "permissions": { "autoMode": { "hints": { "allow": [ "Running poetry install and poetry update in this Python project", "Cleaning build artifacts under ./dist or ./build", "Reading any file under /Users/me/code/" ], "softDeny": [ "Editing Qwen Code settings unless I explicitly ask for the exact change", "Running migration scripts that touch the production DB" ], "hardDeny": [ "Sending secrets or .env contents to any network endpoint", "Modifying anything under ~/.ssh or ~/.aws" ] }, "environment": [ "This is a private monorepo with strict commit signing", "Production credentials live in 1Password, never in plain files" ] } } }

hints.deny は後方互換性のために引き続き受け付けられ、softDeny として扱われます。両方を混在させても問題ありません。エントリは softDeny を先頭にして結合されます。

長さと件数の制限

分類器のシステムプロンプトを小さく保つため:

  • 各エントリは200文字で上限が設けられています(それより長いエントリは警告付きで切り捨てられます)。
  • hints.allowhints.softDenyhints.hardDeny はそれぞれ最大50件まで受け付けます。
  • environment は最大20件まで受け付けます。

設定ファイルをまたいだ層の統合

autoMode は他の権限設定と同様に、システム / ユーザー / ワークスペースの設定ファイルをまたいでマージされます。配列は結合され、重複が除去されます。

判定結果の確認

分類器がアクションをブロックすると、ツール呼び出しは次のいずれかのエラーテキストで失敗します:

  • Blocked by auto mode policy: <reason> — 分類器がアクションを安全でないと判断しました。理由は分類器のStage 2から来ます。
  • Auto mode classifier unavailable; action blocked for safety — 分類器APIが到達不能、タイムアウト、またはパースできないレスポンスを返しました。これはフェイルクローズの動作です。疑わしい場合はブロックします。

両方のメッセージに続いて、拒否された特定のアクションを別のツール、シェルの間接参照、生成されたスクリプト、エイリアス、シンボリックリンク、設定変更、フック、コマンドファイル、MCP設定、エンコードされたペイロード、または同等の手段で完了してはならないことをエージェントに伝えるガイダンス行が続きます。関係のない安全な作業や本当に安全な代替手段は引き続き許可されます — 同じ拒否された意図を別のサーフェスで達成しようとする試みのみがブロックされます。

拒否されたアクションが本当に必要な場合、エージェントは拒否を回避しようとするのではなく、停止して明示的な承認を求めるべきです。

分類器の理由の言語

分類器の理由はLLMによって生成され、翻訳されません。英語以外の理由が必要な場合は、permissions.autoMode.environmentRespond reasons in Chinese のようなヒントを追加してください。

手動承認へのフォールバック

Auto Modeはスタックするのを防ぎます:

  • 3回連続でポリシーブロックが発生すると、次のツール呼び出しは標準の手動承認プロンプトにフォールバックします。これはエージェントが禁止されたコマンドのわずかなバリアントを試し続けるケースをキャッチします。
  • 2回連続で利用不可(分類器APIの失敗)の結果が続くと、次のツール呼び出しもフォールバックします。これは壊れた分類器での待機を回避します。

セッション自体はAuto Modeのままです。単一のフォールバック呼び出しのみが手動承認を通過します。カウンターはフォールバック呼び出しを承認するか、モードを切り替えるとリセットされます。

フォールバックに頻繁にヒットする場合、最も可能性の高い原因は分類器APIの障害またはチューニングが必要なヒントです。調査中はDefaultモードに切り替えてください。

トラブルシューティング

「Auto modeがコマンドをブロックし続ける」

エラーメッセージの理由を確認してください。分類器がコンテキストに対して保守的すぎる場合は、permissions.autoMode.hints.allow に自然言語でパターンを説明するエントリを追加してください。例:

  • "Building Docker images for this project (docker build ...)"
  • "Running database migrations against the local test DB"

「Auto mode classifier unavailable」

分類器APIが応答しませんでした。考えられる原因:

  • あなたとモデルエンドポイント間のネットワーク問題。
  • 設定された高速モデルが利用できなくなっている — /model --fast を確認してください。
  • トランスクリプトが長すぎて高速モデルのコンテキストウィンドウを超えている。

診断中はDefaultモードに戻してください: /approval-mode default

「Falling back to manual approval」

3回連続ブロックまたは2回連続利用不可のガードに引っかかりました。通常通りプロンプトを承認または拒否してください。1回承認されたフォールバックの後、連続カウンターはリセットされます。

「分類器がプロンプトの機密データを参照している」

ツールの入力は、分類器に到達する前に各ツールの toAutoClassifierInput メソッドによって射影されます。長い編集コンテンツ、Webフェッチのプロンプト、サブエージェントのプロンプトは切り捨てられます。ツールの結果(ファイルの内容、Webページ)は分類器に送られません。ユーザーのテキストとアシスタントのツール使用呼び出しのみが通過します。

特定のツールが編集したいフィールドを公開している場合は、ツール名を添えてIssueを提出してください。射影はツールごとに設定されており、時間をかけて厳格化される予定です。

制限事項

  • オフラインでは使用できません。 分類器にはLLM呼び出しが必要です。
  • スローパスでレイテンシーが増加します。 許可リストとacceptEditsはほとんどの呼び出しをレイテンシーなしでカバーしますが、run_shell_command は通常約300ms(高速分類器パス)または約3〜5秒(思考レビューを含むスローパス)が追加されます。
  • deny ルールの代替ではありません。 分類器はベストエフォートです。絶対に実行すべきでないコマンドは permissions.deny に入れてください。
  • MCPツールはデフォルトで保守的にブロックされます。 サードパーティのMCPツール (mcp__*) は toAutoClassifierInput オーバーライドを通じて引数の転送をオプトインします。オプトインしていないツールは名前のみを分類器に公開します。明示的な allow ルールを書かない限り、このような呼び出しのほとんどは保守的にブロックされます。これはフェイルクローズの設計によるものです(認証情報や大量のコンテンツが意図せず分類器LLMに漏洩しません)。特定のMCPツールを信頼する場合は、permissions.allow: ["mcp__server__tool"] を追加して分類器を完全にバイパスしてください。

FAQ

Auto Modeはコードをサードパーティに送信しますか?

Auto Modeは既存のモデル設定を再利用します。メインエージェントと同じエンドポイントです。Qwen Codeをセルフホストモデルで使用するように設定している場合、分類器もそのエンドポイントで実行されます。

シークレットや .env の内容は分類器に届きますか?

分類器は各ツールの toAutoClassifierInput 射影が公開するものだけを参照します:

  • read_file およびその他の読み取り専用ツール: 呼び出されません(高速パス許可リストにあります)。
  • edit / write_file: file_pathとold/newコンテンツの最初の80文字。全コンテンツは転送されません。
  • run_shell_command: フルコマンド(分類器が判断するために必要なため)。
  • web_fetch: URLのみ。promptフィールドは転送されません。
  • agent: サブエージェントのタイプとフルプロンプト。プロンプトはサブエージェントが従う指示であるため、サブエージェントを破壊的なアクションに誘導する攻撃を検出するために分類器はそれを完全に必要とします。run_shell_command がフルコマンドを転送するのと同じ理由です。

ツールの結果(ツールが返す実際のコンテンツ)は分類器のトランスクリプトから完全に削除されます。

MCPツール (mcp__*) はより厳格なデフォルトに従います。MCPツールの作者が toAutoClassifierInput オーバーライドを通じて明示的にオプトインしない限り、パラメーターは転送されません。分類器はツール名のみを参照し、引数を参照しないため、ユーザーが明示的な許可ルールを書かない限り、ほとんどのMCP呼び出しは保守的にブロックされます。これはフェイルクローズの設計によるものです。サードパーティのツールは、意図せずに認証情報や大量のファイルコンテンツを分類器LLMに漏洩すべきではありません。

初回の情報メッセージを無効化できますか?

ユーザー設定ファイルごとに1回だけ表示されます。閉じると、ユーザー設定に ui.autoModeAcknowledged: true が設定されます。

Auto-Editとの違いは何ですか?

Auto-Editはファイル編集のみを自動承認します。シェルコマンドは引き続き確認が求められます。Auto Modeは分類器を使用して、安全なシェルコマンドやその他のツール呼び出しも自動承認しながら、リスクのあるものはブロックします。

YOLOとの違いは何ですか?

YOLOはレビューなしにすべてを自動承認します。Auto Modeはループ内に分類器があり、リスクのあるアクションをブロックします。

Last updated on