settings.json(設定ファイル)とは?
読み方: セッティングス ジェイソン
定義
Claude Code の挙動を制御する JSON 設定ファイル。パーミッション・環境変数・フック・MCP サーバーなどを宣言的に定義する。
詳しい解説
settings.json は Claude Code の挙動を JSON で定義する設定ファイルです。まず意味を分けると、(1) User: ~/.claude/settings.json は自分の全プロジェクトに適用する個人設定、(2) Project: .claude/settings.json はリポジトリに置いてチームで共有する設定、(3) Local: .claude/settings.local.json はそのプロジェクトだけの個人設定で、実験や端末固有の変更に使い、通常は gitignore に入れます。Project のファイルに個人の API キーや実験的な許可を混ぜず、共有してよいルールだけをコミットするのが安全です。詳しい項目と適用範囲は公式の Settings(https://code.claude.com/docs/en/settings)を確認してください。最小構成の例は {"permissions": {"allow": ["Bash(bun test)"], "ask": ["Bash(git push)"], "deny": ["Read(.env*)", "Edit(.env*)"]}} です。パーミッションの判定は deny → ask → allow の順で評価されるため、広い allow を先に足すのではなく、必要なコマンドを具体的に書きます。変更後は /status で現在の設定・環境を確認し、/permissions で許可・確認・拒否ルールを確認してから、テスト用の操作を 1 件だけ実行してください。公式仕様は Permissions(https://code.claude.com/docs/en/permissions)を参照できます。よくある誤りは、settings.json を JSONC のつもりでコメントや末尾カンマを入れる、Project に秘密情報をコミットする、Bash(bun *) のように広すぎる許可を与える、CLAUDE.md の指示だけで安全境界を作ったつもりになる、Read/Edit の deny だけで任意の subprocess から完全に隔離できると思うことです。CLAUDE.md は作業上の指示であり強制的なセキュリティ境界ではありません。Read/Edit の deny はツールの読み書きを制限しますが、任意の subprocess まで完全に隔離するものではないため、必要なら OS レベルの sandbox を併用します。Sandboxing の制約と設定は公式ドキュメント(https://code.claude.com/docs/en/sandboxing)で確認してください。次の行動は、まず Local に安全な 1 ルールだけ追加し、/status と /permissions で反映を確認し、問題なければ共有対象だけを Project に移すことです。
使用例
{"permissions": {"allow": ["Bash(bun test)", "Bash(git status)"]}}