はじめに

Claude Codeは強力なAIコーディングアシスタントですが、その「強力さ」はときに諸刃の剣となります。ファイルを編集し、コマンドを実行できる能力は、適切に制御しなければ意図しない変更を引き起こす可能性があります。

Claude Codeには、この課題を解決するための3つのパーミッションモードが用意されています。Plan Mode(読み取り専用)、Accept Mode(編集を個別確認)、Auto-Accept Mode(編集を自動適用)です。これらのモードを適切に使い分けることで、安全性と効率性を両立した開発が可能になります。

本記事では、各モードの特徴と切り替え方法、そしてタスクの性質に応じた最適なモード選択について詳しく解説します。この記事を読むことで、以下のことができるようになります。

  • 3つのパーミッションモードの違いを理解する
  • Shift+Tabによるモードの即時切り替えを習得する
  • タスクの性質に応じた適切なモードを選択できる
  • 設定ファイルでデフォルトモードをカスタマイズできる

実行環境

  • オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
  • ハードウェア: 4GB以上のRAM
  • Node.js 18以上(npmインストールの場合のみ必要)
  • インターネット接続(認証およびAI処理に必要)
  • シェル環境: Bash、Zsh、またはFish推奨

前提条件

  • コマンドライン操作の基礎知識
  • Gitの基本操作(clone、commit、push等)
  • プログラミングの基礎知識(言語は問わない)
  • Claude.aiまたはAnthropic Consoleアカウント
  • Claude Codeのインストールと認証が完了していること

パーミッションモードの概要

Claude Codeは、AIが実行できるアクションを制御するためのパーミッションシステムを採用しています。このシステムは、セキュリティと利便性のバランスを取りながら、ユーザーが作業の安全性レベルを柔軟に調整できるように設計されています。

ツールカテゴリと権限

Claude Codeが使用するツールは、権限レベルによって以下のように分類されています。

ツールカテゴリ 具体例 権限要求 永続性
読み取り専用 ファイル読み取り、LS、Grep 不要 N/A
Bashコマンド シェル実行 必要 プロジェクトディレクトリとコマンドごとに永続
ファイル変更 編集/書き込み 必要 セッション終了まで

読み取り専用の操作は権限不要で実行されますが、Bashコマンドやファイル変更には明示的な承認が必要です。この承認のタイミングと方法を制御するのが、パーミッションモードの役割です。

3つのパーミッションモード

Claude Codeには、以下の3つの主要なパーミッションモードがあります。

graph LR
    A[Plan Mode<br/>読み取り専用] -->|Shift+Tab| B[Accept Mode<br/>通常モード]
    B -->|Shift+Tab| C[Auto-Accept Mode<br/>自動承認]
    C -->|Shift+Tab| A
    
    style A fill:#e1f5fe,stroke:#01579b
    style B fill:#fff3e0,stroke:#e65100
    style C fill:#fce4ec,stroke:#880e4f

それぞれのモードの特徴を詳しく見ていきましょう。

Plan Mode(プランモード)

Plan Modeは、Claude Codeを読み取り専用で動作させるモードです。ファイルの編集やコマンドの実行を一切行わず、コードの分析と計画立案に特化します。

Plan Modeの特徴

項目 内容
ファイル編集 不可
コマンド実行 不可
ファイル読み取り 可能
コード分析 可能
計画立案 可能

Plan Modeでは、以下のような読み取り専用ツールのみが使用されます。

  • ファイルの読み取り
  • ディレクトリ一覧の取得
  • Grepによるコード検索
  • シンボルの参照と定義の確認

Plan Modeの適切な使用シーン

Plan Modeは、以下のようなシーンで特に効果を発揮します。

新しいコードベースの理解

新しいプロジェクトに参画した際、コードベース全体の構造を把握したい場合にPlan Modeは最適です。誤って既存のコードを変更するリスクなく、安全にコードを調査できます。

1
2
3
4
5
> このプロジェクトのアーキテクチャを説明して

> 認証フローがどのように実装されているか調べて

> このAPIエンドポイントの依存関係を洗い出して

大規模リファクタリングの計画

実際にコードを変更する前に、変更の影響範囲を把握し、実装計画を立てたい場合にPlan Modeを活用します。

1
2
> このレガシーコードをモダンな実装にリファクタリングする計画を立てて。
> 変更が必要なファイルと、それぞれの変更内容を詳しく説明して。

セキュリティレビュー

コードのセキュリティ上の問題点を分析する際、Plan Modeを使用することで、レビュー中に誤ってコードを変更するリスクを排除できます。

1
> このAPIの認証ロジックにセキュリティ上の脆弱性がないか分析して

Plan Modeの制約事項

Plan Modeでは、以下の操作は実行できません。

  • ファイルの作成・編集・削除
  • シェルコマンドの実行
  • Git操作(commit、pushなど)
  • 外部サービスへのリクエスト

これらの操作を行いたい場合は、Accept ModeまたはAuto-Accept Modeに切り替える必要があります。

Accept Mode(アクセプトモード)

Accept Modeは、Claude Codeの標準的な動作モードです。ファイルの編集やコマンドの実行は可能ですが、それぞれの操作について個別に承認を求めます。

Accept Modeの特徴

項目 内容
ファイル編集 可能(要承認)
コマンド実行 可能(要承認)
編集の確認 操作ごとに確認
承認の粒度 個別操作

Accept Modeでは、Claude Codeがファイルを編集しようとすると、変更内容のプレビューが表示され、承認を求められます。これにより、すべての変更を事前にレビューできます。

Accept Modeの動作フロー

sequenceDiagram
    participant U as ユーザー
    participant C as Claude Code
    participant F as ファイルシステム
    
    U->>C: 指示を入力
    C->>C: 分析・計画
    C->>U: 変更内容のプレビュー表示
    U->>C: 承認 or 拒否
    alt 承認された場合
        C->>F: ファイルを編集
        F->>C: 完了
        C->>U: 結果を報告
    else 拒否された場合
        C->>U: 次の提案または終了
    end

Accept Modeの適切な使用シーン

Accept Modeは、以下のようなシーンで使用することを推奨します。

新機能の実装

新しいコードを書く際、Accept Modeを使用することで、各変更を確認しながら段階的に実装を進められます。

1
2
3
4
5
> ユーザー認証用のミドルウェアを実装して

(Claude Codeが実装を提案、変更内容を確認)

[Y] 承認 / [N] 拒否 / [E] 編集

バグ修正

バグを修正する際、修正内容が意図したものかどうかを確認してから適用できます。

1
2
3
4
5
6
> ログイン時にセッションが保存されないバグを修正して

(原因分析と修正案が表示される)
(変更内容のdiffを確認)

[Y] 承認して適用

コードレビュー後の修正

レビューで指摘された内容を修正する際、各修正を個別に確認しながら対応できます。

Accept Modeでの承認オプション

ファイル編集の承認時には、以下のオプションが利用可能です。

オプション 動作
Y(Yes) 変更を承認して適用
N(No) 変更を拒否
A(Always) このタイプの操作を常に承認
E(Edit) 変更内容を手動で編集

「Always」を選択すると、そのセッション中は同様の操作が自動的に承認されるようになります。

Auto-Accept Mode(オートアクセプトモード)

Auto-Accept Modeは、ファイル編集の承認を自動化するモードです。Claude Codeが提案するファイル変更は、確認なしに即座に適用されます。

Auto-Accept Modeの特徴

項目 内容
ファイル編集 自動承認
コマンド実行 依然として承認が必要
作業速度 最速
安全性 要注意

重要な点として、Auto-Accept Modeであっても、シェルコマンドの実行には引き続き承認が求められます。これは、コマンド実行がシステムに与える影響が大きいため、安全策として維持されています。

Auto-Accept Modeの動作フロー

sequenceDiagram
    participant U as ユーザー
    participant C as Claude Code
    participant F as ファイルシステム
    
    U->>C: 指示を入力
    C->>C: 分析・計画
    C->>F: ファイルを自動編集
    F->>C: 完了
    C->>U: 変更結果を報告
    
    Note over U,C: Bashコマンドは引き続き承認が必要
    C->>U: コマンド実行の確認
    U->>C: 承認
    C->>F: コマンド実行

Auto-Accept Modeの適切な使用シーン

Auto-Accept Modeは、以下のような条件が揃った場合に有効です。

定型的なタスクの自動化

リンターの修正やフォーマットの適用など、変更内容が予測可能な定型タスクでは、Auto-Accept Modeが作業効率を大幅に向上させます。

1
2
3
4
5
> ESLintの警告をすべて修正して

> すべてのファイルにPrettierを適用して

> importの順序を整理して

信頼できるコードベースでの作業

自分がよく理解しているコードベースや、十分なテストカバレッジがあるプロジェクトでは、Auto-Accept Modeを活用してもリスクは限定的です。

プロトタイピング

素早くアイデアを形にしたい場合、Auto-Accept Modeで実装速度を優先できます。後でコードをレビューし、必要に応じて修正すればよいでしょう。

Auto-Accept Modeの注意点

Auto-Accept Modeを使用する際は、以下の点に注意してください。

Gitの活用

変更前にコミットしておくか、Git worktreeを使用することで、意図しない変更があっても簡単に元に戻せます。

1
2
3
4
5
# 作業前にコミット
git add -A && git commit -m "WIP: 作業前の状態を保存"

# Claude Codeでの作業後、変更を確認
git diff

テストの実行

Auto-Accept Modeでの作業後は、必ずテストを実行して変更が正しく機能するか確認しましょう。

1
> 変更したコードのテストを実行して結果を教えて

段階的なアプローチ

大きな変更を一度に行うのではなく、小さな単位で作業し、各段階で結果を確認することを推奨します。

モードの切り替え方法

パーミッションモードの切り替えは、非常に簡単に行えます。

Shift+Tabによる即時切り替え

Claude Codeのセッション中にShift+Tabを押すと、パーミッションモードが順番に切り替わります。

1
Plan Mode → Accept Mode → Auto-Accept Mode → Plan Mode → ...

モードが切り替わると、画面上部のステータス表示が更新され、現在のモードが確認できます。

一部の環境ではAlt+Mでも同様の操作が可能です。

設定による切り替え

/configコマンドを使用して、設定画面からモードを変更することもできます。

1
> /config

設定画面でパーミッションモードの項目を選択し、希望するモードに変更します。

コマンドライン引数での指定

Claude Code起動時に、デフォルトのモードを指定することも可能です。

1
2
3
4
# Plan Modeで起動
claude --dangerously-skip-permissions

# 注意: このフラグは安全な環境でのみ使用してください

設定ファイルでのデフォルトモード指定

プロジェクトやユーザーごとにデフォルトのパーミッションモードを設定できます。

settings.jsonの設定

.claude/settings.jsonファイルでdefaultModeを指定します。

1
2
3
4
5
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

利用可能なdefaultModeの値は以下の通りです。

説明
default 標準動作(ツール初回使用時に権限を要求)
acceptEdits ファイル編集を自動承認(Accept Mode相当)
plan Plan Mode(読み取り専用)
dontAsk 事前承認済みのツール以外は自動拒否
bypassPermissions すべての権限プロンプトをスキップ(安全な環境のみ)

設定ファイルの優先順位

複数の設定ファイルが存在する場合、以下の優先順位で適用されます。

  1. 管理者設定(managed-settings.json
  2. コマンドライン引数
  3. ローカルプロジェクト設定(.claude/settings.local.json
  4. 共有プロジェクト設定(.claude/settings.json
  5. ユーザー設定(~/.claude/settings.json

この階層構造により、組織のポリシーを維持しながら、プロジェクトやユーザーレベルでの柔軟なカスタマイズが可能です。

プロジェクトごとの設定例

セキュリティが重要なプロジェクトでは、Plan Modeをデフォルトに設定し、安全性を優先できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "permissions": {
    "defaultMode": "plan",
    "allow": [
      "Read(**)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(sudo *)"
    ]
  }
}

プロトタイピング用のプロジェクトでは、効率を重視した設定にできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Edit(**)",
      "Bash(npm *)",
      "Bash(yarn *)"
    ]
  }
}

実践的なモード選択ガイド

タスクの性質に応じた最適なモードを選択するためのガイドラインを示します。

タスク別推奨モード

flowchart TD
    A[タスクを開始] --> B{コードを変更する?}
    B -->|いいえ| C[Plan Mode]
    B -->|はい| D{変更内容を確認したい?}
    D -->|はい| E[Accept Mode]
    D -->|いいえ| F{定型的なタスク?}
    F -->|はい| G[Auto-Accept Mode]
    F -->|いいえ| E
    
    C --> H[分析・計画・調査]
    E --> I[新機能実装・バグ修正]
    G --> J[フォーマット・リント修正]
    
    style C fill:#e1f5fe
    style E fill:#fff3e0
    style G fill:#fce4ec

具体的なシナリオ

シナリオ1: 新しいプロジェクトへの参画

  1. Plan Modeでコードベースの構造を把握
  2. 重要なファイルと依存関係を理解
  3. Accept Modeに切り替えて小さな修正から開始

シナリオ2: 大規模リファクタリング

  1. Plan Modeで変更計画を立案
  2. 影響範囲を特定
  3. Accept Modeで段階的に実装
  4. 各段階でテストを実行

シナリオ3: CI/CDでの自動化

  1. 設定ファイルで適切な権限を事前定義
  2. 必要に応じてbypassPermissionsを使用(安全な環境限定)
  3. 実行ログを監視

モード切り替えのベストプラクティス

以下のベストプラクティスを参考に、モードを効果的に活用してください。

原則1: 最小権限の原則

必要な権限のみを許可し、不要なリスクを避けます。迷ったらPlan ModeまたはAccept Modeを選択しましょう。

原則2: 段階的なアプローチ

大きなタスクはPlan Modeで計画し、Accept Modeで実装し、定型作業はAuto-Accept Modeで効率化するという段階的なアプローチが効果的です。

原則3: バージョン管理との連携

Auto-Accept Modeを使用する前に、必ずGitでコミットまたはスタッシュしておきましょう。

1
2
3
4
5
6
7
8
# 作業前
git stash

# Claude Codeでの作業

# 変更を確認してからコミット
git diff
git add -A && git commit -m "feat: 新機能を実装"

原則4: 定期的なモード確認

長時間の作業中は、現在のモードを定期的に確認し、タスクの性質に応じて適切に切り替えましょう。

まとめ

本記事では、Claude Codeの3つのパーミッションモードについて解説しました。

  • Plan Mode: 読み取り専用で安全にコードを分析・計画
  • Accept Mode: ファイル編集を個別に確認しながら作業
  • Auto-Accept Mode: ファイル編集を自動承認して効率的に作業

Shift+Tabで即座にモードを切り替えられるため、タスクの性質に応じて柔軟に対応できます。また、設定ファイルでデフォルトモードを指定することで、プロジェクトやチームのポリシーに合わせた運用が可能です。

適切なモードを選択することで、Claude Codeの強力な能力を安全かつ効率的に活用できます。最初はAccept Modeから始め、Claude Codeの動作に慣れてきたら、状況に応じてPlan ModeやAuto-Accept Modeを活用していくことをお勧めします。

参考リンク