Claude Codeを使い始めると、すぐに「許可」ダイアログの洗礼を受けます。

そんなとき、こう感じたことはないでしょうか。

  • 作業の流れを止めずに使いたいのに、何度も許可を求めてくる
  • 「何を許可しているのかよくわからないまま、とりあえずOKを押している」
  • セキュリティが心配で、許可を押すのをためらって手が止まる

結論から言うと、「危険な操作だけをブロックする」という発想の逆転が、快適さとセキュリティを両立するコツです。 すべての操作を一つひとつ確認するのではなく、本当に危険なものだけを明示的に禁止する設定にすると、許可待ちはほぼゼロになります。

そしてもう一つ、重要なことをお伝えします。設定ファイルを自分で手書きする必要はありません。 Claude Code にプロンプトを渡すと、Claude Code 自身が設定ファイルを作成・編集してくれます。読者がやることは「この記事で紹介するプロンプトをコピーして、Claude Code に貼るだけ」です。

本記事では実際に使えるプロンプトを用意しながら、設定の考え方を確認していきます。

この記事でわかること

  • Claude Code の「許可」ダイアログが頻出する理由と、快適・安全に使うための考え方
  • settings.json を Claude Code 自身に設定させるコピペ用プロンプト
  • CLAUDE.md を Claude Code 自身に書かせるコピペ用プロンプト
  • 両ファイルの役割の違いと、それぞれ何を制御するか
  • Claude Code に絶対に入力してはいけない情報の種類
  • バイパス権限モードと auto モードの特徴・プラン対応状況

本記事は特定のツール利用を推奨するものではありません。設定の考え方と判断軸をお渡しするのが目的です。


この設定にたどり着くまでの話

この設定を最初から知っていたわけではありません。

使い始めた頃は、毎回表示される許可ダイアログに対して「許可を取らないようにしてください」と Claude Code に直接お願いしていました。しかしそれでも許可を求めてくる。何度お願いしても状況は変わりませんでした。

さすがに「もっとうまい方法があるはず」と思い、Claude Code 自身に聞いてみました。

「毎回許可を求めてくるのを減らしたい。何かいい方法はないか?」

すると Claude Code が提案してきたのが、settings.jsonCLAUDE.md への設定でした。「この2つのファイルに書いておけば、セッションをまたいでも設定が有効になる」という説明とともに、具体的な設定内容まで提案してくれました。

さらに、ただ「何でも許可」にするのではなく、「こういう操作のときは必ず確認を取って」という条件もあわせて設定することを勧められました。たとえば「課金が発生しうる操作の前は確認する」「APIキーを外部に送信しようとしたら警告を出す」といった内容です。

その提案に従ってファイルを書いてもらったところ、許可ダイアログはほぼ出なくなり、かつ本当に止まってほしい場面ではきちんと確認が入る、という今の環境が手に入りました。

設定ファイルの存在を調べたのではなく、Claude Code に相談したら Claude Code 自身が答えを教えてくれた——これが実態です。


そもそもなぜ許可を求めるのか

Claude Code の設計思想は「ユーザーが確認してから実行する」がデフォルトです。

AI エージェントはツールを呼び出しながら自律的に動きます。コードを書く・ファイルを読む・コマンドを実行する、これらをすべて自動で行う性質上、「ユーザーが意図していない操作」が混入するリスクが常にあります。

特に注意が必要な操作は次の3種類です。

操作の種類 リスクの内容
ファイルの削除・上書き 元に戻せない変更が発生する
git の強制書き換え リモートリポジトリの履歴が壊れる
外部への通信 意図しないデータ送信が起きる可能性

「無制限に許可するのは怖い」という感覚は正しいです。ただし「何でも聞いてくる」も実用上は支障があります。そこで「危険な操作だけを明示的にブロックする」という方法が有効になります。

設定前は毎回許可ダイアログが発生、設定後はdenyリストに該当する操作だけブロックされ自動実行される比較図


「Claude Codeに設定してもらう」という発想

設定で使うファイルは2種類あります。

ファイル 役割
settings.json 「何のツール・コマンドを実行してよいか」(OS・権限レベルの制御)
CLAUDE.md 「どう振る舞うか」(Claude 自身の判断・行動の基準)

settings.json は「ツールへのアクセス権」、CLAUDE.md は「仕事の進め方のルール」と考えると理解しやすいです。次のセクションで、それぞれのプロンプトをそのままコピーして使えるように用意しました。

settings.jsonは権限レベルの制御、CLAUDE.mdは行動ルールの設定という役割分担を示す図


プロンプト①:settings.json の設定

settings.json とは何か

settings.json は Claude Code の権限を一括で管理するファイルです。 これを書いておくと、個別の操作ごとに許可を求めなくなります。

ファイルの置き場所は以下のとおりです(Windows の場合)。

  • 全プロジェクト共通の設定C:\Users\(ユーザー名)\.claude\settings.json
  • 特定プロジェクトだけの設定:プロジェクトフォルダ直下の .claude\settings.json

.claude はドット始まりの隠しフォルダです。ただし場所を自分で探す必要はありません。プロンプトに「グローバル設定として作成して」と伝えれば、Claude Code が正しい場所にファイルを作ります。

コピペ用プロンプト

以下をそのままコピーして、Claude Code のチャットに貼ってください。

以下の内容でグローバルな settings.json を作成してください。
ファイルの場所は ~/.claude/settings.json です。

{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "WebFetch",
      "WebSearch",
      "Write",
      "Edit",
      "Read",
      "Bash(*)"
    ],
    "deny": [
      "Bash(rm -rf /*)",
      "Bash(rm -rf ~*)",
      "Bash(git push * --force*)",
      "Bash(git push * -f*)",
      "Bash(git reset --hard*)"
    ]
  }
}

ファイルがすでに存在する場合は内容を確認し、permissions ブロックを上記で置き換えてください。

設定内容の意味

プロンプトの中身を確認しておきます。

defaultMode: acceptEdits ファイルの編集操作を自動的に受け入れるモードです。コードや記事の書き換えで毎回確認が入らなくなります。

allow リスト 明示的に許可するツール・操作の一覧です。Bash(*) は「すべての bash コマンド」を意味します。まず広く許可し、危険なものだけを deny で絞る構成にしています。

deny リスト 絶対に実行させたくないコマンドを列挙します。ここが最も重要です。

禁止コマンド なぜ危険か
rm -rf /* ルートディレクトリ以下を全削除する。PC が起動不能になる
rm -rf ~* ホームディレクトリ(自分のファイル全部)を削除する
git push * --force リモートリポジトリを強制上書きし、他の人の作業を消す
git push * -f 上と同じ(省略形)。意図せず実行するとデータが戻らない
git reset --hard ローカルの変更をすべて破棄する。保存し忘れたコードが消える

deny は「これだけは絶対にやらせない」というリストです。使い続ける中で「これも禁止したい」と気づいたものをあとから追記していけばよいです。


プロンプト②:CLAUDE.md の設定

CLAUDE.md とは何か

CLAUDE.md は Claude 自身の行動指針を書く場所です。

settings.json が「技術的な権限の制御」なのに対して、CLAUDE.md は「仕事の進め方のルール」を書く場所です。Claude Code はセッション開始時にこのファイルを読み込み、自分の行動指針として参照します。

settings.json だけでは「コマンドは実行できるが、どこで止まるべきかわからない」という状態になりがちです。両方を使うことで、技術的な権限とふるまいの基準を分けて管理できます。

コピペ用プロンプト

以下をそのままコピーして、Claude Code のチャットに貼ってください。

以下の内容を ~/.claude/CLAUDE.md に追記してください。
ファイルがなければ新規作成してください。
すでに同じ内容が書かれている場合は変更不要です。

## 作業の進め方

- ローカルファイルの読み取り・編集・新規作成は確認不要で実行してよい
- git の add・commit・push(force なし)は確認不要で実行してよい
- 個人情報・パスワード・APIキーを含む可能性のある情報を外部に送信する前は必ず警告を出す
- 本番データベースへの変更を行う前は必ず確認を取る
- 課金が発生しうる操作の前は確認する

自分の作業に合わせてカスタマイズする

上のプロンプトはあくまでも出発点です。自分の用途に合わせて「確認不要な操作」と「必ず止まるべき操作」を書き足していくと、ストレスなく使える環境になっていきます。

たとえば、Netlify へのデプロイを自動化したい場合は「Netlify へのデプロイは確認不要で実行してよい」と追記するだけです。この追記作業も、Claude Code に「CLAUDE.md にこの一行を追記して」と伝えれば自分でやってくれます。


補足:バイパス権限モードと auto モード

本記事で紹介した acceptEdits + deny リストの方法以外にも、許可チェックを省略するモードが存在します。ただし用途・前提・プラン制限が異なるため、整理しておきます。

バイパス権限モード(bypassPermissions)

バイパス権限モードは、すべての許可チェックを一切スキップするモードです。

  • VS Code の場合(Visual Studio Code:Microsoft 製のデスクトップ型コードエディタ。Claude Code の拡張機能をインストールして使う形式):設定パネルで「Allow bypass permissions mode(バイパス権限モードを許可)」を有効にすると、チャット入力欄下部のモードインジケーターに「Bypass permissions」が追加され、そこから切り替えできます
  • CLI の場合(ターミナルでコマンドを直接入力して使う形式):起動時に --dangerously-skip-permissions フラグを付ける必要があります(起動後の切り替えは不可)
  • deny リストに登録したコマンドは引き続きブロックされます
  • Pro・Max どちらのプランでも使用可能です

なお、チャット入力欄のモードインジケーターはモードの事前切り替えに使うものです。Claude がコマンドを実行し始めた後に途中で止めることはできないため、deny リストに含まれていない操作は確認なしで一気に実行されます。

deny リストをきちんと設定している場合、最も危険な操作(rm -rf など)はバイパスモードでもブロックされるため、実質的なリスクは限定的です。ただし公式の推奨用途はコンテナや VM などの隔離された環境専用という位置づけは変わりません。deny リストに含まれていない操作が想定外のタイミングで実行されるリスクは常に残るためです。

auto モード

auto モードは、AI がバックグラウンドで安全性を判断しながら自動実行するモードです(研究プレビュー段階)。

バイパス権限モードとは異なり、安全性チェックは維持されます。ただしMax・Team・Enterprise・API プランのみ対応しており、Pro プランでは使用できません。

3つの方法の比較

方法 安全性チェック 利用可能なプラン 推奨環境
acceptEdits + deny リスト(本記事) あり(deny リストで制御) Pro・Max 共通 通常の PC
バイパス権限モード deny リストのみ Pro・Max 共通 隔離された環境専用
auto モード あり(AI が自動判断) Max・Team・Enterprise・API のみ -

Pro プランで使っている場合、現実的な選択肢は本記事で紹介した方法だけです。 バイパス権限モードは技術的には使えますが、隔離環境外での使用はリスクが高く、公式も推奨していません。acceptEdits + deny リストで必要十分な快適さを確保できます。


Claude Codeに入力してはいけない情報

設定を整えて快適に使えるようになっても、入力する情報のルールを守らないと別のリスクが生まれます。

絶対に入力してはいけない情報

次の情報は Claude Code のチャットや CLAUDE.md に書かないでください。

  • 氏名・住所・電話番号・メールアドレスなどの個人情報(自分のものも他人のものも)
  • クレジットカード番号・銀行口座番号・証券口座番号
  • パスワード・PINコード・秘密の質問の答え
  • APIキー・アクセストークン・シークレットキー

なぜリスクがあるのか

Claude Code が直接、外部に情報を送信するリスクだけを心配するのではなく、もう一つの経路を意識する必要があります。

Claude が生成したコード・スクリプト・設定ファイルに、入力した情報が埋め込まれてしまうリスクです。

たとえば「このAPIキーを使ってスクリプトを書いて」と依頼すると、生成されたコードにAPIキーがハードコードされる場合があります。そのコードを git にコミットしてしまうと、GitHub 等で公開状態になり、第三者に悪用されます。

また、会話ログはローカルに保存されます。共用PCや管理が甘い環境では、ログファイルを通じた情報漏洩のリスクがあります。

APIキーをコードに直接書いてGitHubに公開してしまうNGパターンと、.envファイルで環境変数管理するOKパターンの比較図

APIキーは環境変数で管理する

APIキーが必要な作業は、コードに直接書くのではなく環境変数(.env ファイルや OS の環境変数)に入れます。そして Claude Code には「環境変数から読み込んでください」と指示します。

# Claude への指示例(チャットに直接入力する)
APIキーはソースコードに直接書かない。
必ず環境変数(.env ファイル)から読み込む形で実装してください。

この習慣を守るだけで、コード流出時のリスクを大幅に下げられます。


まとめ:プロンプトを渡すだけで設定は完了する

Claude Code の許可問題を解決するポイントをまとめます。

  • 設定ファイルは自分で書かなくていい:プロンプトを渡せば Claude Code 自身が作成・編集してくれる
  • settings.jsondeny リストが核心:「何でも許可」ではなく「危険な操作だけをブロック」する逆転の発想が有効
  • CLAUDE.md でふるまいを制御する:技術的な権限と行動ルールは別ファイルで管理する
  • 入力情報のルールが最重要:設定が整っても、入力する情報次第で別のリスクが生まれる

まずはこの記事で紹介したプロンプトを2つ、Claude Code に貼ってみてください。それだけでも許可ダイアログの頻度はかなり減り、作業の流れが変わります。

慣れてきたら deny リストや CLAUDE.md を自分の環境に合わせて育てていくと、さらに快適になります。「この操作は毎回止まらなくていい」と気づいたタイミングで、Claude Code に「CLAUDE.md にこの一行を追記して」と伝えるだけで設定が更新できます。

何かの参考になれば幸いです。