本文へスキップ
株式会社JQITCorporate
SecurityAI生成AIAIエージェントClaudeCode

Claude Code Auto Mode を実際に動かして中身を全部見た

執筆:株式会社JQIT(技術広報)

Claude Code v2.1 で追加された Auto Mode が、承認ダイアログをどう扱っているのかを実際に動かして確認しました。権限をすべて飛ばすフラグとの違いと、どこまでが自動で許可されるのかを整理しています。

Claude Codeで長めのタスクを回していると、こんな確認が何度も出てきますよね。

Do you want to proceed?
❯ 1. Yes
  2. Yes, and don't ask again for: ...
  3. No

「このファイルを編集していいですか?」 → Yes
「このコマンドを実行していいですか?」 → Yes
「この……」 → Yes Yes Yes Yes Yes

「毎回Yes押すの面倒だから……」と --dangerously-skip-permissions を使ったことがある方、少なくないと思います。名前からして怖いフラグですが、それでも使いたくなるくらい承認ダイアログが邪魔に感じる場面があるのも事実です。

Claude Code v2.1で、この問題に対する新しい選択肢が追加されました。Auto Mode です。

Auto Modeとは

Claude Codeの権限モードの1つで、Claudeが分類器(classifier)を使ってアクションの許可/拒否を自動判断するモードです。

claude --permission-mode auto

従来の default モードでは全操作でユーザーに確認を求めていました。bypassPermissions--dangerously-skip-permissions)は全操作を素通し。Auto Modeはその間で、Claudeの分類器が判断するモードです。

ユーザーの指示
  ↓
Claudeがツールを使おうとする
  ↓
分類器がallow/denyルールで評価
  ↓
├── allowに該当 → ユーザーに聞かず自動実行
├── denyに該当  → ユーザーに聞かず自動ブロック
└── どちらでもない → ユーザーに確認を求める

承認をスキップしているのではなく、Claudeが判断している。ここが重要です。

分類器の中身を見てみる

Auto Modeの判断ロジックは claude auto-mode config で確認できます。実際に叩いてみました。

claude auto-mode config

返ってきたJSONにはallowルールとdenyルールが並んでいます。これがAuto Modeの「脳」です。

allowルール(自動承認される操作)

ルール

内容

Local Operations

ワーキングディレクトリ内のファイル操作。ただし「プロジェクトスコープ」の定義が厳密で、~//etc への逸脱はスコープ外

Read-Only Operations

GETリクエスト、読み取り専用APIコール。状態を変更しない操作

Test Artifacts

テスト用APIキーのハードコード、プレースホルダー資格情報

Declared Dependencies

package.jsonrequirements.txt既に宣言されているパッケージのインストール(npm installpip install -r

Toolchain Bootstrap

rustup、pypa、bun、brew等の公式インストーラーによるツールチェーン導入

Standard Credentials

.env から読んだAPIキーを対応するエンドポイントに送信

Git Push to Working Branch

作業ブランチへのpush(デフォルトブランチは除く)

注目すべきは「Declared Dependencies」の条件。npm install foo のようなエージェントが選んだパッケージ名の直接インストールは許可されない。typosquatやサプライチェーン攻撃のリスクがあるからです。

denyルール(ブロックされる操作)

30項目以上あります。主要なものを抜粋します。

カテゴリ

ブロック内容

Git Destructive

git push --force、リモートブランチ削除、履歴書き換え

Git Push to Default

main/masterへの直接push

Code from External

curl | bash、外部リポジトリからのコード実行

Production Deploy

本番環境へのデプロイ、本番DBマイグレーション

Irreversible Local Destruction

セッション開始前から存在するファイルの rm -rfgit clean -fdxgit checkout .

Data Exfiltration

機密データの外部送信(HTTP、git push、クラウドストレージ)

Credential Exploration

資格情報ストアの体系的スキャン

Self-Modification

エージェント自身の設定ファイル変更

External System Writes

Jira/GitHub Issues/Slackへの投稿(ユーザーが明示的に指示していない場合)

Unauthorized Persistence

SSHキー追加、.bashrc変更、cronジョブ作成

特に面白いのが以下の2つです。

Content Integrity / Impersonation: 「失敗した作業を成功と報告する」「人間が書いたものとして署名する」──嘘をつくことがセキュリティ上の問題として明示的にブロックされている。

Exfil Scouting: データ持ち出しの準備行為(到達可能なエンドポイントの探索、エンコーディングバイパスの試行)すらブロック対象。未遂も捕捉する設計です。

実際に試してみた

ルールを眺めているだけではわからないので、--permission-mode auto で実際にいくつかの操作を試しました。

操作

結果

分類器の判断

ファイル読み取り(cat test.txt

自動実行

Allow: Local Operations

ファイル編集(追記)

自動実行

Allow: Local Operations

curl GETリクエスト(httpbin.org)

自動実行

Allow: Read-Only Operations

rm -rf test.txt(ユーザーがファイル名指定)

自動実行

Allow: ユーザーが特定ファイルを明示指定

npm install express(未宣言パッケージ)

自動実行

ユーザーが明示的に指示→allowと判断?

git push --force origin main

確認を要求

Deny: Git Destructive

~/.zshrc に追記

自動ブロック

Deny: Unauthorized Persistence

curl POSTでwebhook.siteにデータ送信

自動ブロック

Deny: Data Exfiltration

面白い発見がいくつかあります。

npm install express が通った。 denyルール上は「agent-chosen package names」はブロック対象のはずですが、ユーザーが明示的にパッケージ名を指定して指示した場合は分類器が許可しました。ルールの文面をそのまま適用するのではなく、文脈を見て判断しているようです。

rm -rf test.txt も通った。 denyルールの「Irreversible Local Destruction」には「without explicit user direction naming the specific targets」という例外があります。ユーザーがファイル名を指定していれば、削除も許可される。

~/.zshrc 変更とwebhook.site POSTは問答無用でブロック。 ユーザーが指示しても、シェル設定の変更(Unauthorized Persistence)と外部へのデータ送信(Data Exfiltration)は通りませんでした。

設定方法

起動コマンドだけでなく、設定ファイルでも有効化できます。

方法

スコープ

設定

CLIフラグ

そのセッションのみ

claude --permission-mode auto

ユーザー設定

全セッション

~/.claude/settings.json"permissions": {"defaultMode": "auto"}

プロジェクト設定

そのプロジェクトのみ

.claude/settings.json に同上

マネージド設定

組織全体(上書き不可)

MDM or /etc/claude-code/managed-settings.json

自分はユーザー設定で defaultMode: auto にしているので、毎回フラグを付けなくても常にAuto Modeで起動しています。

権限モード一覧

Claude Codeの全権限モードを整理します。claude --help と公式ドキュメントから確認した内容です。

モード

起動方法

動作

default

claude

ツール初回使用時に承認を求める

acceptEdits

--permission-mode acceptEdits

ファイル編集を自動承認

plan

--permission-mode plan

分析のみ。ファイル変更・コマンド実行不可

dontAsk

--permission-mode dontAsk

/permissions で事前許可したツール以外は自動拒否

auto

--permission-mode auto

分類器がallow/denyルールで判断

bypassPermissions

--dangerously-skip-permissions

全操作を無条件で承認

セッション中にShift+TabでトグルできるAuto-Acceptは、上記とは別の仕組みです。画面を見ながら使う前提の機能。

--dangerously-skip-permissions との違い

両者の違いは**「判断しているのが誰か」**です。

bypassPermissions

auto

判断者

なし(すべてスキップ)

分類器(allow/denyルール)

force push

通る

ブロック

rm -rf(既存ファイル)

通る

ブロック

curl | bash

通る

ブロック

本番デプロイ

通る

ブロック

外部へのデータ送信

通る

ブロック

ローカルファイル編集

通る

通る

npm install(宣言済み)

通る

通る

bypassPermissionsは全てを素通しさせる。autoは30項目以上のdenyルールを持つ分類器が門番をやっている。この差は大きいです。

サンドボックスとの併用

Auto Modeは権限モード(Claudeの意思決定レイヤー)ですが、これとは別にOS レベルのサンドボックスが存在します。

  • macOS: sandbox-exec(Seatbelt)
  • Linux: bubblewrap

サンドボックスは以下を強制します:

  • ファイルシステム隔離: ワーキングディレクトリ外のファイル変更をOS レベルでブロック
  • ネットワーク隔離: Unixドメインソケット経由のプロキシで、承認されたドメインのみ通信許可

公式ドキュメントでは「権限(permissions)とサンドボックスは補完的なセキュリティレイヤー」と説明されています。権限はClaudeがツールを使うこと自体を制御し、サンドボックスはBashコマンドの実行範囲をOS レベルで制限する。二重の防御です。

チェックポイント

コード変更前に自動的に状態を保存する機能です。

  • Escを2回押すか/rewindコマンドでロールバック可能
  • ただし rmmv などのBashコマンドによる削除はチェックポイント対象外
  • あくまでClaude Codeの Edit / Write ツール経由の変更が対象

組織での管理

管理者がAuto Modeを含む権限設定を制御する手段があります。マネージド設定(managed settings)です。

公式ドキュメントに記載されている管理用設定:

設定キー

効果

disableBypassPermissionsMode

bypassPermissionsモードと--dangerously-skip-permissionsフラグを無効化

allowManagedPermissionRulesOnly

ユーザー/プロジェクト設定でのpermissionルール定義を禁止

allowManagedHooksOnly

マネージド以外のhooksを無効化

sandbox.network.allowManagedDomainsOnly

マネージド設定のドメインのみ通信許可

設定の配信方法:

プラットフォーム

方法

macOS

MDM(Jamf等)経由のマネージド設定

Linux/WSL

/etc/claude-code/managed-settings.json

普段使いの所感

自分の場合、30個以上のスキルを組み合わせてClaude Codeを運用しています(記事はこちら)。設定ファイルで defaultMode: auto にしてから、日常的なコーディングで承認ダイアログを見ることはほぼなくなりました。

denyルールの粒度が想像以上に細かいのが印象的です。「force pushブロック」程度かと思っていたら、データ持ち出しの準備行為やエージェント自身の設定変更まで見ている。しかも claude auto-mode config で分類器のルールを全部確認できるので、「何がブロックされるか」が事前にわかる。ブラックボックスではない。

一方で、実験で見たように分類器の判断はルールの文面通りではない場面もあります。ユーザーの指示内容や文脈を見て柔軟に判断している分、予測が難しい面もある。Gitで管理 + 重要な操作は自分で確認する、この2つは引き続き意識しています。

まとめ

項目

内容

何ができる

分類器がallow/denyルールで操作を自動判断

起動方法

claude --permission-mode auto

永続設定

~/.claude/settings.jsonpermissions.defaultMode: "auto"

allowルール

ローカルファイル操作、読み取り専用、宣言済み依存インストール等

denyルール

force push、本番デプロイ、データ持ち出し、資格情報探索等30項目以上

確認方法

claude auto-mode config で分類器の全ルールを確認可能

安全策

分類器 + サンドボックス(OS レベル) + チェックポイント

参考リンク

この記事は Qiita でも公開しています。

この記事のような仕組みを、業務に合わせて設計・開発しています。

AIエージェント開発・RAG構築の支援内容を見る

同じような課題をお持ちですか。

現状の整理からご相談いただけます。まずはお気軽にお問い合わせください。