Claude Code の auto mode 完全ガイド — 権限確認を抑えて安全に自動実行する

Claude Code の auto mode 完全ガイド — 権限確認を抑えて安全に自動実行する

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) の問題

反対に、全確認を飛ばすオプションもあります。これは本当に危険:

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

Auto mode が埋める穴

Auto mode は、ツールの危険度を 3 分類 して:

という分類ロジックをツールごとに事前に書く 仕組みです。全確認でもなく全自動でもない、中間点。

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 は過剰気味に書く のがおすすめ:

誤検出を避ける

Glob パターンは誤検出することがあります。例:

対策:

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 パターンが gaps を作ることがあります:

対策: 定期的に deny リストをレビュー、使った危険コマンドを事後 deny に追加。

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

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

対策: 本番資格情報は専用マシン、auto mode は開発環境専用。環境変数 CLAUDE_ENV=prod のような区別も有効。

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

.claude/settings.json を commit するとチームで共有できる。でも、個人の安全度の違いで衝突する:

対策: 共通設定は .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 は hit しない。人間は本当に判断が要る数ヶ所だけに集中できます。

実測:

監督コストが 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:*)"
    ]
  }
}

これで:

まとめ

信頼より検証、auto mode で頻度を下げても、deny リストと監督は怠らない。

関連リンク


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

この記事をシェア

関連記事

記事一覧に戻る