settings.json で Claude Code を制御しよう
Claude Code の動作を細かくコントロールできる仕組みがあります。
それが settings.json という設定ファイルです。
この Lesson では、settings.json を使った効果的な設定方法を学びます。
settings.json の役割を理解しよう
settings.json は、Claude Code に対して OK行動 と NG行動 を伝えるためのファイルです。
子供にお使いを頼む時のルールに似ています。
- 「おつりでお菓子を買うのはOK」
- 「知らない人についていくのはダメ」
- 「1000円以内なら自分で判断していいよ」
settings.json も同じように動作します。
Claude Code に対して「これはやっていい」「これはダメ」「これは毎回聞いて」というルールを設定できるのです。
設定ファイルの優先順位
settings.json も CLAUDE.md と同じように、複数の場所に配置できます。
そして優先順位があります。
優先順位(上が最優先):
.claude/settings.local.json
- 個人用のプロジェクト設定(Git で無視)
- 「自分だけの特別ルール」
.claude/settings.json
- Git で管理したいプロジェクト設定
- 「プロジェクト固有のルール」
~/.claude/settings.json
- グローバル設定(全プロジェクト共通)
- 「基本的なルール」
この順番で設定が読み込まれ、上位の設定が優先されます。
基本的には、2番目の .claude/settings.json
から設定しましょう。
そして、色んなプロジェクトで使っているルールが増えてくれば、グローバル設定に切り出していきます。
基本的な構造を理解しよう
settings.json の基本構造を見てみましょう。
{ "permissions": { "allow": [ // 自動的に許可するコマンド ], "deny": [ // 絶対に実行しないコマンド ] }}
この構造がすべての基本になります。
権限設定(permissions)の仕組み
3つの判断パターン
Claude Code がコマンドを実行する時の判断順序があります。
以下の順番で判断します。
- deny リストにある → 実行しない
- allow リストにある → 自動実行
- どちらにもない → ユーザーに確認
信号機に例えるとわかりやすいかと思います。
- 赤信号(deny):止まれ
- 青信号(allow):進め
- 黄信号(どちらでもない):注意して確認
実践的な設定例
React/Next.js プロジェクト向けの設定例を紹介します。
こちらは、Claude Code を使い倒している著者が実際に使っているルールです。
{ "permissions": { "allow": [ "Bash(mkdir:*)", "Bash(touch:*)", "Bash(ls:*)", "Bash(tree:*)", "Bash(mv:*)", "Bash(cp:*)", "Bash(cat:*)", "Bash(grep:*)", "Bash(find:*)", "Bash(echo:*)", "Bash(do)", "Bash(then)", "Bash(else)", "Bash(fi)", "Bash(done)", "Bash(for:*)", "Bash(npm install:*)", "Bash(npm run dev:*)", "Bash(npm run build:*)", "Bash(npm run tsc:*)", "Bash(npm exec:*)", "Bash(npx:*)", "Bash(npm run test:*)", "Bash(npm run lint)", "Bash(npm run lint:*)", "Bash(npm run format:*)", "Bash(npm ls:*)", "Bash(curl:*)", "Bash(pkill:*)", "Bash(true)" ], "deny": [ "Bash(sudo:*)", "Bash(git reset:*)", "Bash(git rebase:*)", "Read(.env:*)", "Read(id_rsa)", "Read(id_ed25519)", "Read(**/*token*)", "Read(**/*key*)", "Write(.env:*)", "Write(**/secrets/**)", "Bash(wget:*)", ] }}
この設定では、開発中で必須となるファイルの閲覧や操作を許可しています。
一方で、破壊的な変更のコマンドは禁止しています。
機密情報の読み取りやインターネット上からのファイルダウンロードなど、セキュリティ上の問題がある操作も deny で禁止しています。
補足: rm
コマンドについて
ファイルなどの削除を行える rm
については allow にも deny にも設定していません。
その場合、Claude Code が実行しようとするタイミングで許可を求めてくれます。
実行内容を確認してから Yes を選択し、許可を出しましょう。
ファイルやフォルダの削除も常時許可する場合は、以下の内容を allow の欄に追記します。
"Bash(rm:*)",
設定のポイント
設定する際の重要なポイントを2つ紹介します。
1. ワイルドカード(*)の使い方
"Bash(npm run test:*)" // npm run test で始まるすべてのコマンド"Read(**/*.env)" // 任意の階層の .env ファイル
2. 安全性と利便性のバランス
バランスを考えて設定することが大切です。
- よく使う安全なコマンドは allow に
- 破壊的な操作は deny に
- 判断が必要なものは指定しない
初心者向けの最小限設定
最初はシンプルな設定から始めましょう。
たとえば、フロントエンドプロジェクトであれば以下のようなところからスタートします。
{ "permissions": { "allow": [ "Bash(ls:*)", "Bash(cat:*)", "Bash(npm run dev)", "Bash(npm run build)", "Bash(npm test)" ], "deny": [ "Bash(rm -rf:*)", "Bash(sudo:*)", "Read(.env)" ] }}
これで基本的な開発作業はスムーズに進められます。
慣れてきたら徐々に設定を追加していきましょう。
その他の便利な設定
自動更新の設定
Claude Code の自動更新を有効化する設定です。
{ "autoUpdates": true // Claude Code の自動更新を有効化}
環境変数の設定
プロジェクトで使用する環境変数を設定できます。
{ "env": { "NODE_ENV": "development", "NEXT_TELEMETRY_DISABLED": "1" }}
設定ファイルの作成と編集
プロジェクト設定の作成
プロジェクト用の設定ファイルを作成する手順です。
# .claude ディレクトリを作成mkdir -p .claude
# エディタで開くcode .claude/settings.json
グローバル設定の作成
全プロジェクト共通の設定を作成する手順です。
# ホームディレクトリの設定mkdir -p ~/.claudecode ~/.claude/settings.json
セキュリティのベストプラクティス
やってはいけない設定
以下のような設定は危険です。
// 危険!すべてを許可{ "permissions": { "allow": ["*"] }}
すべてを許可するのは避けましょう。
最悪、すべてのファイルを削除したり、危険なファイルをインターネット上からダウンロードも出来てしまいます。
推奨する段階的アプローチ
安全に設定を構築する方法として、以下のような考え方で設定ファイルを育てていきましょう。
- 最初は最小限の allow から始める
- 作業しながら必要なものを追加
- 定期的に見直して不要なものを削除
この順番で進めることで、安全性を保ちながら設定を育てられます。
まとめ
settings.json を使いこなすことで、Claude Code との作業が効率的になります。
今回学んだ重要なポイントをおさらいしておきます。
- 3つの判断パターン(deny → allow → 確認)
- 安全性と利便性のバランスを考える
- 段階的に設定を育てる