Claude Code auto mode 完全ガイド — deny リスト設計と blast radius 分類で安全に自動実行する

Claude Code auto mode 完全ガイド — deny リスト設計と blast radius 分類で安全に自動実行する

Claude Code で 1 日 100 回「yes」を押していると、作業時間の相当部分がこの確認クリックに消えます。しかも、慣れると考えずに yes を押すようになり、安全確認の意味も失われます。これを解くのが、Anthropic が 2026 年 3 月に導入した Claude Code auto mode です。

ツールの blast radius を分類して、安全なものは自動実行、危険なものだけ確認を取る。

本稿では auto mode を使うべき判断基準、deny リストの書き方、落とし穴と対策、MulmoTerminal の 9 セル並列運用での実用例を整理します。

課題:全確認か、全自動か の 2 択

デフォルトモード(全確認)の問題

Claude Code のデフォルトでは、Bash tool を呼ぶたびに「実行していい?」と確認が出ます。安全ですが、

全自動 (--dangerously-skip-permissions) の問題

反対に、全確認を飛ばすオプションもあります。

claude --dangerously-skip-permissions

これは本当に危険で、次が全部通ります。

実際、auto skip を有効にして「数時間放置してたら本番 DB を壊した」事例がちらほらあります。

Auto mode が埋める穴

Auto mode は、ツールの危険度を 3 分類 します。安全なものは自動実行してユーザーに確認を取らず、グレーなものは確認を取り、危険なものは deny で実行しません。この分類ロジックをツールごとに事前に書く仕組みです。全確認でもなく全自動でもない中間点になります。

Auto mode の有効化

設定ファイル (.claude/settings.json)

{
  "permissions": {
    "autoAllow": [
      "Read",
      "Grep",
      "Glob",
      "Bash(yarn:*)",
      "Bash(git status)",
      "Bash(git log:*)",
      "Bash(git diff:*)"
    ],
    "allow": [
      "Edit",
      "Write",
      "Bash(git commit:*)",
      "Bash(git branch:*)",
      "Bash(gh pr:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(git push:*main*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "WebFetch"
    ]
  }
}

起動オプション

# Auto mode を有効にして起動
claude --auto-mode

または、設定ファイルの permissions.mode で "auto" を指定します。

Blast radius の分類原則

Anthropic は auto mode のドキュメントで、blast radius(影響範囲) による分類を推奨しています。

Category 1: ローカル読み取り

Category 2: ローカル書き込み

Category 3: ネットワーク送信

Category 4: 共有リソースへの変更

Category 5: 破壊的操作

原則

Deny を書く量を増やし、autoAllow を増やし、allow は中間

安全側に deny を広く、autoAllow は本当にゼロリスクなものだけ。

Deny リストの書き方

Glob パターンの活用

{
  "permissions": {
    "deny": [
      "Bash(rm -rf:*)",        // rm -rf 全部
      "Bash(git push * main)",  // main への push
      "Bash(git push * master)", // master への push
      "Bash(curl:*)",           // 全 curl
      "Bash(* > /etc/*)",       // /etc への書き込み
      "Bash(sudo:*)"            // sudo 全般
    ]
  }
}

Deny は過剰気味に

Auto mode で動かすなら、deny は過剰気味に書く のがおすすめです。使わないはずのコマンドも、将来も使わないと判断できるなら deny に入れておきます。「本当に必要になったら allow に移す」という逐次緩和の方針で運用します。

誤検出を避ける

Glob パターンは誤検出することがあります。たとえば Bash(git push:*) と書くと git push origin feature-branch まで deny されてしまいます。Bash(curl:*) も、API 動作確認で curl を使いたいときに止まります。

対策は 2 つです。具体的なパターンだけ deny する(Bash(git push * main) のように main 限定にする)か、deny が強すぎた場合に allow で例外を書くかです。

Allow での例外

{
  "permissions": {
    "deny": [
      "Bash(git push:*)"
    ],
    "allow": [
      "Bash(git push origin feature/*)",
      "Bash(git push origin fix/*)"
    ]
  }
}

Allow が deny に優先するので、feature/* と fix/* ブランチへの push だけ許可。

落とし穴と対策

落とし穴 1: Auto mode に慣れると監督を忘れる

Auto mode で快適になると、「Claude が勝手に動いているのを放置して席を離れる」が増えます。でも、auto mode は自動化ではなく確認の省略です。暴走しないよう、ある程度は見ている必要があります。

対策として、タイマーをセットするか、MulmoTerminal のスマホ通知で呼び戻してもらう運用にします。

落とし穴 2: Deny リストの穴

Deny パターンに抜けができることがあります。Bash(rm -rf:*) は書いたのに Bash(rm -r:*) の 1 文字違いを書き忘れる、Bash(git push --force:*) は書いたのに Bash(git push -f:*) の短縮形を忘れる、どちらも事故につながります。

対策は、定期的に deny リストをレビューし、使った危険コマンドを事後 deny に追加していくことです。

落とし穴 3: 本番環境と開発環境の混同

本番 DB の資格情報が入ったマシンで auto mode を使うと、間違えて本番を触る可能性があります。

対策として、本番資格情報は専用マシンに閉じ込め、auto mode は開発環境専用にします。環境変数 CLAUDE_ENV=prod のような区別も有効です。

落とし穴 4: チームで共有する設定ファイルの差

.claude/settings.json を commit するとチームで共有できますが、個人の安全度の違いで衝突します。A さんは auto mode 100% で快適でも、B さんは全部確認したい、という温度差が普通に発生します。

対策は、共通設定を .claude/settings.json に、個人カスタムを .claude/settings.local.json(gitignored)に分けて書くことです。

落とし穴 5: Hooks との相互作用

Claude Code の hooks は auto mode でも走ります。PreToolUse hook で block しても、auto mode の確認はスキップされます。

これは正しい挙動ですが、「hook と auto mode の両方で防御する」構造として意識しておきます。

MulmoTerminal 9 セル並列での実用

MulmoTerminal で 9 セル並列で動かしているとき、auto mode の価値が爆発的に上がります。

デフォルトモードの場合

9 セルで同時に「このコマンド実行していい?」が出ると、人間は 9 ヶ所をクリックで回る必要があります。これは生産性の桁が落ちます。

Auto mode の場合

9 セル全部が autoAllow の範囲で自動実行され、allow は 1-2 セルだけ琥珀色で止まり、deny はヒットしません。人間は本当に判断が要る数ヶ所だけに集中できます。

実測では、デフォルトは 1 セッション 100 回のクリック、auto mode は 1 セッション 5-10 回のクリックです。監督コストが 10 分の 1 になります。

推奨設定(MulmoTerminal + Auto mode)

{
  "permissions": {
    "autoAllow": [
      "Read", "Grep", "Glob",
      "Bash(yarn:*)",
      "Bash(npm:*)",
      "Bash(git status)",
      "Bash(git log:*)",
      "Bash(git diff:*)",
      "Bash(git branch:*)",
      "Bash(ls:*)",
      "Bash(cat:*)",
      "Bash(mkdir:*)",
      "Bash(cd:*)"
    ],
    "allow": [
      "Edit", "Write",
      "Bash(git add:*)",
      "Bash(git commit:*)",
      "Bash(git checkout:*)",
      "Bash(git push origin agent/*)",
      "Bash(git push origin fix/*)",
      "Bash(git push origin feat/*)",
      "Bash(gh pr create:*)",
      "Bash(gh pr view:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(rm -r:*)",
      "Bash(git push --force:*)",
      "Bash(git push -f:*)",
      "Bash(git push * main)",
      "Bash(git push * master)",
      "Bash(git reset --hard:*)",
      "Bash(gh pr merge:*)",
      "Bash(curl:*)",
      "WebFetch",
      "Bash(sudo:*)"
    ]
  }
}

これで、読み取り系は全自動で情報取得が止まらず、ローカル書き込みとコミットは確認なしで通ります(git worktree で隔離してあるので安全です)。チーム共有に影響する push だけは allow で確認を取り、対象は agent/fix/feat ブランチだけで main は deny です。破壊的操作と外部送信は常に deny で事故を根本的に防げます。

使い始める前に

Auto mode は確認頻度を減らすだけで、監督の責任を減らすものではありません。deny リストを過剰気味に書き、allow で例外を絞り、週に一度は実行ログを眺めて漏れを追加していく運用が前提になります。信頼より検証という原則そのものは、確認の自動化が進んだあとも変わりません。

関連リンク


Singularity Society はテクノロジー集団として MulmoClaude / MulmoTerminal / MulmoCast を開発しています。エンジニア・起業家向けの実践プログラム BootCamp も運営しています。

この記事をシェア

関連記事

記事一覧に戻る