コンテンツにスキップ

実行モードと権限管理

実行モードとは

Claude Code には、作業を進めるときの権限レベルを決める「実行モード」があります。どのくらい自動で作業を進めてよいかを制御する仕組みです。

たとえるなら、アシスタントへの信頼度に応じた指示の出し方です:

  • 「毎回確認してね」→ 通常モード
  • 「ファイル操作は自分でやっていいよ」→ オートアクセプトモード
  • 「まず計画を見せてね」→ プランモード

3 つの実行モード

通常モード(デフォルト)

Claude Code を普通に起動したときのモードです。ファイルの編集やコマンドの実行のたびに、許可を求めてきます。

Claude wants to run: git status
Allow? (y/n)

こんな人におすすめ:

  • Claude Code を使い始めたばかりの方
  • 何が行われるか一つ一つ確認したい方
  • 大切なファイルを扱うとき

初心者の方はこのモードから始めましょう

毎回確認が入るので手間はかかりますが、予期しない操作を防げる最も安全なモードです。

オートアクセプトモード

ファイルの読み書きなどの操作を自動的に許可するモードです。いちいち確認されないので、作業がスムーズに進みます。

起動時にオプションを付けるか、会話中に Shift+Tab キーで切り替えられます。

# 起動時に指定する場合
claude --allowedTools "Edit,Write,Read"

こんな人におすすめ:

  • Claude Code の動作に慣れてきた方
  • 定型的な作業を効率よく進めたい方

注意

確認なしに操作が実行されるため、CLAUDE.md で安全ルールを設定してから使うことをおすすめします。CLAUDE.md の使い方 を参照してください。

プランモード

Claude Code にいきなり作業させるのではなく、まず計画を立てさせて確認してから実行するモードです。

会話中に Shift+Tab キーを何度か押すと切り替えられます。

[Plan Mode] まず計画を作成します。実行はしません。

1. report.md を読み取り
2. データを集計
3. グラフを作成
4. レポートを更新

この計画で進めてよいですか?

こんな人におすすめ:

  • 大きな作業を始める前に全体像を確認したい方
  • 複数ファイルにまたがる変更を行うとき
  • 「何をするか」を先に知りたい方

プランモードは「見積もり」のようなもの

リフォーム業者にいきなり工事を始めてもらうのではなく、まず見積書と工事計画を出してもらう — プランモードはそれと同じ考え方です。

モードの切り替え方

起動時の指定

# 通常モード(デフォルト)
claude

# ワンショット(一度だけ実行、対話なし)
claude -p "ファイル一覧を表示して"

会話中の切り替え

会話中は Shift+Tab キーを押すことで、モードを切り替えられます。

Shift+Tab で切り替え:
  通常モード → オートアクセプトモード → プランモード → 通常モード ...

どのモードを使えばいい?

状況 おすすめモード
Claude Code を使い始めたばかり 通常モード
大切なファイルを扱う作業 通常モード または プランモード
定型的な文書作成 オートアクセプトモード
複数ファイルの大きな変更 プランモード → 確認後に実行
ちょっとした確認や質問 通常モード

迷ったら通常モードで

どのモードを使うか迷ったら、通常モードのままで大丈夫です。慣れてきたら、作業に応じてモードを使い分けてみてください。


権限設定ファイル(settings.local.json)

settings.local.json とは

実行モードが「どのくらい自動で進めるか」を決めるのに対し、settings.local.jsonどの操作を許可し、どの操作を禁止するかを細かく指定するファイルです。

たとえるなら、包丁の安全カバーのようなものです。実行モードが「包丁をどう持つか(慎重に / 手早く)」なら、settings.local.json は「刃の部分にカバーを付けて、危ない使い方を物理的にできなくする」仕組みです。

配置場所

プロジェクトフォルダ/
└── .claude/
    └── settings.local.json   ← このファイル

ファイル名に .local が付いているとおり、あなた個人専用の設定です。Git で共有されないため、チームメンバーには影響しません。

基本構造

settings.local.json には 3 種類のルールを書けます:

{
  "permissions": {
    "deny": [
      "許可しない操作(絶対にブロック)"
    ],
    "allow": [
      "許可する操作(確認なしで実行)"
    ],
    "ask": [
      "確認が必要な操作(毎回聞いてくる)"
    ]
  }
}

非エンジニア向けおすすめ設定

以下は、危険な削除コマンドをブロックし、安全なコマンドだけ許可する設定例です:

{
  "permissions": {
    "deny": [
      "Bash(rm *)",
      "Bash(rm -rf *)",
      "Bash(rm -r *)",
      "Bash(rmdir *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(**/*.key)",
      "Read(**/*.pem)"
    ],
    "allow": [
      "Bash(ls *)",
      "Bash(cat *)",
      "Bash(pwd)",
      "Bash(mkdir *)",
      "Bash(cp *)",
      "Bash(mv *)",
      "Bash(node --version)",
      "Bash(npm --version)",
      "Bash(python --version)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Read",
      "Edit",
      "Write"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(git commit *)",
      "Bash(npm install *)"
    ]
  }
}

まずは deny だけでも効果的

すべてを一度に設定する必要はありません。まずは deny に削除系コマンド(rm など)を入れるだけでも、誤操作を防ぐ大きな効果があります。

権限ルールの評価順序

Claude Code が操作を実行しようとすると、以下の順序でルールが評価されます:

① deny に該当する? → ブロック(実行されない)
     ↓ いいえ
② allow に該当する? → 確認なしで実行
     ↓ いいえ
③ ask に該当する? → ユーザーに確認を求める
     ↓ いいえ
④ どれにも該当しない → ユーザーに確認を求める(デフォルト)

ポイント: deny が最も強いルールです。allow に書いてあっても、deny にも書いてあればブロックされます。安全側に倒れる設計です。

パターンマッチングの書き方

ルールには ツール名(パターン) の形式で操作対象を指定します。* はワイルドカード(何にでもマッチ)です。

ルール 意味
Bash すべての Bash コマンド
Bash(npm run *) npm run で始まるコマンド
Bash(rm *) rm で始まるコマンド(削除)
Read(./.env) .env ファイルの読み取り
Read(./secrets/**) secrets フォルダ内のすべてのファイル
Read(**/*.key) すべての .key ファイル
Edit すべてのファイル編集
Write すべてのファイル作成

*** の違い

* は同じフォルダ内のファイルにマッチします。** はサブフォルダも含めてすべてにマッチします。たとえば secrets/*secrets/password.txt にマッチしますが、secrets/db/password.txt にはマッチしません。secrets/** ならどちらにもマッチします。

設定ファイルの階層

settings.local.json 以外にも設定ファイルがあり、それぞれ優先順位が異なります:

レベル ファイルの場所 効果の範囲 Git 共有 優先順位
Managed システム管理者が設定 PC 全体 最高(上書き不可)
Local .claude/settings.local.json 個人用 されない
Project .claude/settings.json チーム共有 される
User ~/.claude/settings.json 全プロジェクト共通 されない

通常は Local だけで十分

個人で使う場合は .claude/settings.local.json だけ設定すれば大丈夫です。チームで統一ルールを設ける場合は .claude/settings.json(Project レベル)を使います。

settings.local.json と CLAUDE.md の違い

どちらも Claude Code の動作を制御するファイルですが、役割が異なります:

settings.local.json CLAUDE.md
制御方法 技術的な強制(物理ブロック) 自然言語の指示
柔軟性 コマンド単位で厳密に制御 文脈に応じた柔軟な判断
回避の可能性 AI は回避できない AI の解釈に依存する場合がある
対象 コマンド実行・ファイル操作 作業方針・コミュニケーション
たとえ 包丁の安全カバー 「気をつけてね」という声かけ

両方揃って初めて安全です。 settings.local.json で危険な操作を物理的にブロックし、CLAUDE.md で作業の進め方を指示する — この組み合わせが、Claude Code を安心して使うための基本です。

CLAUDE.md の詳しい書き方は CLAUDE.md の使い方 をご覧ください。