非エンジニアでも安心!Claude Code を安全に使うための 2 つの設定ファイル
Claude Code は強力なツールですが、ファイルの削除やシステムコマンドの実行など、意図しない操作が起きる可能性もあります。@tetumemo さんのポスト では、非エンジニアが Claude Code を安全に使うために設定すべき 2 つのファイルが紹介されています。
「包丁」に例えると、settings.local.json は安全カバー(物理的に危険な操作を防ぐ)、CLAUDE.md は『危ないから気をつけて』という声かけ(AI に判断基準を与える)。両方揃って初めて安全性が確保されるという、分かりやすい整理です。
1. settings.local.json — 「仕組みとして」操作を制限する
settings.local.json とは
Claude Code の権限設定ファイルです。AI がどのコマンドを実行でき、どのコマンドを実行できないかを JSON で定義します。
設定ファイルは .claude/settings.local.json に配置します。.local が付くファイルは自動的に .gitignore に追加されるため、個人の設定がチームに影響しません。
基本構造
| |
非エンジニア向け推奨設定
@tetumemo さんが紹介しているのは、以下のような設定方針です。
許可リスト(allow) — 安全な操作のみ許可:
| |
禁止リスト(deny) — ファイル削除系コマンドを全面禁止:
rm、rm -rf、rm -r— ファイル/ディレクトリの削除rmdir— ディレクトリの削除del、unlink— ファイルの削除
権限ルールの評価順序
Claude Code は権限ルールを以下の順序で評価します:
- deny(拒否)ルールを最初にチェック — マッチすれば即座にブロック
- allow(許可)ルールをチェック — マッチすれば確認なしで実行
- ask(確認)ルールをチェック — マッチすればユーザーに確認を求める
- どれにもマッチしなければ、ユーザーに確認を求める
つまり、deny は最強です。allow で許可していても、deny に該当すればブロックされます。
パターンマッチングの書き方
ルール形式: Tool(パターン)
| ルール | 効果 |
|---|---|
Bash | 全ての Bash コマンドに一致 |
Bash(npm run *) | npm run で始まるコマンドに一致 |
Bash(rm *) | rm で始まるコマンドに一致 |
Read(./.env) | .env ファイルの読み取りに一致 |
Read(./secrets/**) | secrets ディレクトリ以下の全ファイルに一致 |
* はワイルドカードとして機能し、任意の文字列にマッチします。
2. CLAUDE.md — 「文章で」ルールと理由を伝える
CLAUDE.md とは
Claude Code がセッション開始時に必ず読み込むルールファイルです。AI に対して「何をすべきか」「何を避けるべきか」を自然言語で伝えます。
@tetumemo さんの推奨内容
ポストでは、以下の 3 カテゴリのルールが紹介されています:
運用ルール
| |
作業スタイル
| |
安全ルール
| |
settings.local.json との違い
| 観点 | settings.local.json | CLAUDE.md |
|---|---|---|
| 制御方法 | 技術的に強制(物理的ブロック) | 自然言語で指示(AI の判断に委ねる) |
| 柔軟性 | コマンド単位の厳密な制御 | 文脈に応じた柔軟な判断が可能 |
| 回避可能性 | AI は回避できない | AI が「解釈」する余地がある |
| 適用範囲 | Bash コマンド、ファイル読み書き | 作業スタイル、コミュニケーション、判断基準全般 |
| 比喩 | 包丁の安全カバー | 「気をつけて」の声かけ |
重要: settings.local.json は技術的に操作をブロックしますが、CLAUDE.md は AI への「お願い」です。安全性の観点では settings.local.json が必須で、CLAUDE.md は補完的な役割を果たします。
設定ファイルの階層構造
Claude Code の設定は複数のレベルで管理されます:
| スコープ | 場所 | 影響範囲 | 共有 |
|---|---|---|---|
| Managed | システムレベル | マシン上の全ユーザー | IT が管理 |
| User | ~/.claude/settings.json | 全プロジェクト | 個人のみ |
| Project | .claude/settings.json | このリポジトリ全員 | Git 経由で共有 |
| Local | .claude/settings.local.json | このリポジトリの自分のみ | 共有されない |
優先順位は Managed > Local > Project > User です。Local 設定は Project 設定を上書きできるため、チームの共通ルールに加えて個人の安全設定を追加できます。
実践的なセットアップ手順
Step 1: settings.local.json を作成
プロジェクトのルートで .claude/ ディレクトリに設定ファイルを作成します:
| |
Step 2: CLAUDE.md を作成
プロジェクトのルートに CLAUDE.md を配置します:
| |
Step 3: 動作確認
Claude Code を起動し、禁止コマンドを試してみましょう:
> rm test.txt
settings.local.json の deny ルールによりブロックされることを確認できます。
さらに安全にするための追加設定
機密ファイルの保護
環境変数や秘密鍵へのアクセスを禁止します:
| |
危険なネットワーク操作の制限
| |
確認を求める操作(ask)
完全にブロックするほどではないが、確認は必要な操作:
| |
まとめ
Claude Code を安全に使うための 2 つの設定ファイル:
- settings.local.json = 物理的な安全装置。危険なコマンドを技術的にブロックする
- CLAUDE.md = 行動指針。AI に判断基準とルールを自然言語で伝える
@tetumemo さんの「包丁の例え」が示すように、安全カバー(settings.local.json)と声かけ(CLAUDE.md)の両方が揃って初めて安全です。特に非エンジニアの方は、まず settings.local.json で削除系コマンドを禁止するところから始めるのが最も効果的です。