Auto Mode
Auto Mode は LLM クラシファイアを使用して各ツール呼び出しを評価し、自動承認するかどうかを決定します。これは Auto-Edit(ファイル編集のみを自動承認)と YOLO(すべてを自動承認)の間に位置します。
このページは Auto Mode の設定とトラブルシューティングのリファレンスです。概要については、Approval Mode overview を参照してください。
仕組み
Auto Mode 中にエージェントがツールの実行を試みると、Qwen Code は以下の 3 つのレイヤーを順番に処理します。
- acceptEdits ファストパス — ワークスペース内のターゲットパスに対する Edit / Write は、クラシファイアを呼び出さずに自動承認されます。例外: Qwen Code 自身の自己変更サーフェス(
.qwen/settings*.json,QWEN.md,AGENTS.md,QWEN.local.md, 設定されたコンテキストファイル名,.qwen/rules/,.qwen/commands/,.qwen/agents/,.qwen/skills/,.qwen/hooks/,.mcp.json)および永続化サーフェス(.git/,.husky/,package.json,.npmrc,Makefile,.github/workflows/など)への書き込みは、ワークスペース内であってもクラシファイアを経由します。保護されたパスをターゲットとするシンボリックリンクも解決され、拒否されます。cd && bash -lc '...'やその他のラッパーを介してこれらのパスに到達するシェルコマンドも、同様にクラシファイアを経由します。 - セーフツール許可リスト — 読み取り専用およびメタデータのみの組み込みツール(Read, Grep, Glob, LS, LSP, TodoWrite, AskUserQuestion など)は、クラシファイアを呼び出さずに自動承認されます。
- LLM クラシファイア — その他すべて(シェルコマンド、Web フェッチ、サブエージェントの生成、ワークスペース外の編集、MCP ツール)は 2 段階のクラシファイアに送信されます。
- Stage 1 (fast) —
{ shouldBlock }のみを出力します。約 300ms です。shouldBlockがfalseの場合、アクションは許可され、呼び出しが進行します。 - Stage 2 (thinking) — Stage 1 がブロックと判定した場合にのみ実行されます。chain-of-thought レビューを使用して Stage 1 の誤検知(false positives)を減らします。Stage 1 のブロックを許可にダウングレードできます。ブロック時にユーザーに表示される
reasonを出力します。
- Stage 1 (fast) —
クラシファイアは設定された高速モデル(/model --fast)を使用します。高速モデルが設定されていない場合は、代わりにメインセッションモデルが使用されます。
許可システムが読み取り専用と検出したシェルコマンド(ls, cat, git log など)は、クラシファイアに到達する前に自動承認されます。これをオーバーライドしてすべてのシェルコマンドをクラシファイア経由にするには、permissions.autoMode.classifyAllShell: true を設定します。詳細は以下の すべてのシェルコマンドを分類する を参照してください。
ハードルールが優先される
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.json から permissions.autoMode を読み取ります。エントリはルールパターンではなく自然言語の説明であり、組み込みのデフォルトと共にクラシファイアのシステムプロンプトに追加的に注入されます。
ヒントには 3 つのカテゴリと環境リストがあります。
allow— クラシファイアが自動承認すべきアクション。softDeny— ユーザーの直近の明示的なリクエストが正確にそのアクションとスコープを要求していない限り、クラシファイアがブロックすべき破壊的または不可逆的なアクション。ソフト拒否はユーザーの意図によってクリアされる可能性があります。「とにかく何でもやれ」という一般的な指示はカウントされません。hardDeny—autoMode.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.allow、hints.softDeny、hints.hardDenyはそれぞれ最大 50 個のエントリを受け付けます。environmentは最大 20 個のエントリを受け付けます。
設定ファイル間のレイヤリング
autoMode は他の許可設定と同じ方法で、システム / ユーザー / ワークスペースの設定間でマージされます。配列は連結され、重複が排除されます。
すべてのシェルコマンドを分類する
デフォルトでは、読み取り専用のシェルコマンド(ls, cat, git status など)は、クラシファイアを呼び出さずに自動承認されます。許可システムはレイヤー 3 でこれらを安全と検出し、クラシファイアを完全にスキップします。classifyAllShell を true に設定すると、読み取り専用のものを含め、すべてのシェルコマンドを強制的にクラシファイア経由にすることができます。
{
"permissions": {
"autoMode": {
"classifyAllShell": true
}
}
}これは、多層防御が必要な本番環境や高セキュリティ環境で役立ちます。一見無害なコマンドでも、実行前にクラシファイアによってレビューされます。トレードオフは、追加のレイテンシ(読み取り専用のシェル呼び出しごとに約 300ms)と、クラシファイアの可用性への依存です。クラシファイア API に到達できない場合、読み取り専用のシェルコマンドもブロックされます(フェイルクローズ)。
classifyAllShell はシェルコマンド(run_shell_command と monitor)にのみ影響します。組み込みの読み取り専用ツール(read_file, grep_search, glob, list_directory など)は影響を受けず、引き続きファストパス許可リストを使用します。
判定の読み取り
クラシファイアがアクションをブロックすると、ツール呼び出しは次のいずれかのエラーテキストで失敗します。
Blocked by auto mode policy: <reason>— クラシファイアがアクションを安全でないと判断しました。理由はクラシファイアの Stage 2 から出力されます。Auto mode classifier unavailable; action blocked for safety— クラシファイア API に到達できなかった、タイムアウトした、または解析不能なレスポンスを返しました。これはフェイルクローズの動作です。疑わしい場合はブロックします。
どちらのメッセージにも、エージェントに対して、拒否されたアクション自体を、別のツール、シェルの間接指定、生成されたスクリプト、エイリアス、シンボリックリンク、設定の変更、フック、コマンドファイル、MCP 設定、エンコードされたペイロード、または同等のパスを介して完了させてはならないことを伝えるガイダンス行が続きます。無関係な安全な作業や真に安全な代替手段は引き続き許可されます — 異なるサーフェスを通じて同じ拒否された意図を達成しようとする試みだけがブロックされます。
拒否されたアクションが本当に必要な場合、エージェントは拒否を回避しようとするのではなく、停止して明示的な承認を求めるべきです。
クラシファイアの理由の言語
クラシファイアの理由は LLM によって生成され、翻訳されません。英語以外の理由を出力させたい場合は、permissions.autoMode.environment に Respond reasons in Chinese のようなヒントを追加してください。
手動承認へのフォールバック
Auto Mode は立ち往生しないように保護します。
- 3 回連続でポリシーによってブロックされると、次のツール呼び出しは標準の手動承認プロンプトにフォールバックします。これは、エージェントが禁止されたコマンドのマイナーなバリエーションを繰り返し試みるケースを捕捉します。
- 2 回連続で利用不可(クラシファイア API の障害)になると、次のツール呼び出しもフォールバックします。これにより、壊れたクラシファイアを待ち続けることを回避します。
セッション自体は Auto Mode のままです。フォールバックする単一の呼び出しだけが手動承認を経由します。カウンターは、フォールバック呼び出しを承認するか、モードを切り替えるとリセットされます。
頻繁にフォールバックが発生する場合は、クラシファイア API の障害か、ヒントのチューニングが必要である可能性が最も高いです。調査中は Default Mode に切り替えてください。
トラブルシューティング
「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 Mode に戻ってください:/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 と、新旧のコンテンツの最初の 80 文字。完全なコンテンツは転送されません。run_shell_command:完全なコマンド(クラシファイアが判定するため、これが必要です)。web_fetch:URL のみ。プロンプトフィールドは転送されません。agent:サブエージェントのタイプと完全なプロンプト。プロンプトはサブエージェントが従う指示であるため、サブエージェントを破壊的なアクションに向かわせる攻撃を検出するために、クラシファイアはそれを完全に必要とします。これはrun_shell_commandが完全なコマンドを転送するのと同じ理由です。
ツールの結果(ツールによって返される実際のコンテンツ)は、クラシファイアのトランスクリプトから完全に削除されます。
MCP ツール(mcp__*)はより厳格なデフォルトに従います。MCP ツールの作成者が toAutoClassifierInput オーバーライドを介して明示的にオプトインしない限り、パラメータは転送されません。クラシファイアはツール名を参照しますが引数は参照しないため、ユーザーが明示的な許可ルールを記述していない限り、ほとんどの MCP 呼び出しは保守的にブロックされます。これは設計上フェイルクローズです。サードパーティツールが意図せずに認証情報や大量のファイルコンテンツをクラシファイア LLM に漏洩させるべきではないためです。
初回の情報メッセージを無効にできますか?
これはユーザー設定ファイルごとに 1 回のみ表示されます。閉じた後、ユーザー設定に ui.autoModeAcknowledged: true が設定されます。
Auto-Edit とはどう違いますか?
Auto-Edit はファイル編集のみを自動承認し、それ以外は何もしません。シェルコマンドは引き続き確認を求めます。Auto Mode はクラシファイアを使用して、安全なシェルコマンドやその他のツール呼び出しも自動承認しますが、リスクの高いものはブロックします。
YOLO とはどう違いますか?
YOLO はレビューなしですべてを自動承認します。Auto Mode はクラシファイアをループに組み込み、リスクの高いアクションをブロックします。