はじめに
Claude Code 使ってますか?ターミナルから Claude に直接コーディングタスクを投げられる便利なツールなんですが、デフォルト設定のまま使うのはちょっともったいない。というかいちいちいろんなことを聞いてきてめちゃくちゃダルい。
settings.json をちゃんと設定すると、セキュリティも保ちつつ、もっと快適に使えるようになります。全体的に疲れている時の~/.claude/settings.json と~/.claude/CLAUDE.md · GitHub 私のデフォルトの設定も公開してますのでよかったら参考にしてください。
ここで読むのをやめる人のために言っておくと Claude Codeの設定は優先順位があるので覚えておくと良い です。あと、比較的に今は黎明期なので非推奨や追加機能が多いのでその点も注意が必要かもです。
正直なところ、Anthropic の公式ドキュメント(日本語)が最高に分かりやすいので、まずはそっちを読んでほしいんですが、このブログは公式ドキュメントに赤線を引いたようなもので、実際に使ってみて「これは設定しといた方がいいよ」っていうポイントをピックアップしてまとめました。
settings.json って何?
settings.json は Claude Code の動作を制御する設定ファイルです。公式ドキュメントによると、こんな設定ができます。
{ "permissions": { "allow": [ "Bash(npm run lint)", "Bash(npm run test:*)", "Read(~/.zshrc)" ], "deny": [ "Bash(curl:*)" ] }, "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_METRICS_EXPORTER": "otlp" } }
設定できる項目
| キー | 説明 | 例 |
|---|---|---|
apiKeyHelper |
Anthropic APIキーを生成するカスタムスクリプト | /bin/generate_temp_api_key.sh |
cleanupPeriodDays |
チャット記録をローカルに保持する期間(デフォルト:30日) | 20 |
env |
すべてのセッションに適用される環境変数 | {"FOO": "bar"} |
includeCoAuthoredBy |
gitコミットにco-authored-by Claudeを含めるか(デフォルト:true) |
false |
permissions |
ツールのアクセス権限設定 | 後述 |
権限設定をちゃんとやろう
Claude Code の一番重要な機能がこの権限設定。/permissions コマンドで現在の設定を確認できます。/permissionsはとても良いので覚えておいてほしいです。また、便利なCLIの使い方も覚えておいたほうが多分良いです。
Bash コマンドの制御
{ "permissions": { "allow": [ "Bash(npm run build)", // 特定のコマンドだけ許可 "Bash(npm run test:*)", // プレフィックスで許可 "Bash(git:*)" // git コマンドは全部OK ], "deny": [ "Bash(curl:*)" // curl は使わせない ] } }
Claude Code はシェル演算子(&&など)も認識してるので、Bash(safe-cmd:*)みたいなルールでもsafe-cmd && dangerous-cmdみたいなのは実行できません。賢い!
ファイルアクセスの制御
Read と Edit のルールは gitignore の仕様に従います:
{ "permissions": { "allow": [ "Edit(docs/**)", // プロジェクトの docs ディレクトリ内を編集可能 "Read(~/.zshrc)", // ホームディレクトリの .zshrc を読める "Edit(//tmp/scratch.txt)" // 絶対パスは // で指定 ] } }
Web アクセスの制御
{ "permissions": { "allow": [ "WebFetch(domain:example.com)" // 特定ドメインのみ許可 ] } }
環境変数の活用
公式ドキュメントに載ってる環境変数をうまく使うと便利:
{ "env": { "ANTHROPIC_API_KEY": "your-key-here", "CLAUDE_CODE_ENABLE_TELEMETRY": "0", "DISABLE_COST_WARNINGS": "1", "BASH_DEFAULT_TIMEOUT_MS": "300000", "BASH_MAX_TIMEOUT_MS": "1200000" } }
主要な環境変数
| 変数名 | 用途 |
|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY |
テレメトリの有効/無効 |
DISABLE_COST_WARNINGS |
コスト警告を無効化 |
BASH_DEFAULT_TIMEOUT_MS |
Bashコマンドのデフォルトタイムアウト |
DISABLE_AUTOUPDATER |
自動更新を無効化 |
設定の優先順位を理解しよう
公式ドキュメントによると、設定は以下の順番で適用されます(上が優先):
- エンタープライズポリシー
- コマンドライン引数
- ローカルプロジェクト設定(
.claude/settings.local.json) - 共有プロジェクト設定(
.claude/settings.json) - ユーザー設定(
~/.claude/settings.json)
プロジェクトごとに設定を変えたければ、プロジェクトフォルダに .claude/settings.json を置けばOK。Git で共有したくない設定は .claude/settings.local.json に書こう。
実践的な設定例
制限的な設定(仕事用)
{ "permissions": { "allow": [ "Bash(npm run lint)", "Bash(npm run test:*)", "Bash(git:*)", "Read(./src/**)", "Edit(./src/**)" ], "deny": [ "Bash(npm publish:*)", "WebFetch(domain:*)" ] }, "includeCoAuthoredBy": false }
もう少しゆるい設定(個人用)
{ "permissions": { "allow": [ "Bash(npm:*)", "Bash(git:*)", "Bash(cargo:*)", "Read(**)", "Edit(~/projects/**)", "WebFetch(domain:*)" ] }, "cleanupPeriodDays": 60 }
MCP (Model Context Protocol) を使う場合
MCP サーバーを使ってる人向けの権限設定:
{ "permissions": { "allow": [ "mcp__puppeteer", // puppeteer サーバーの全ツール "mcp__puppeteer__puppeteer_navigate" // 特定のツールだけ ] } }
複数の設定を切り替えたいなら
ちなみに、複数の~/.claude/settings.jsonを簡単に切り替えたい人向けに cctx っていうツールも作ってみました。
cargo install cctx
まとめ
Claude Code の settings.json は、ちゃんと設定すると作業効率とセキュリティが大幅に向上します。ちゃんとしましょう。
特に重要なのは:
詳しい設定方法は Anthropic の公式ドキュメント(日本語)がマジで分かりやすいので、ぜひ読んでみてください。Anthropic の公式ドキュメント最高!
Claude Code の 公式ドキュメントやベストプラクティス はとりあえず読んだ方がいい。
参考リンク
- Claude Code 公式ドキュメント(日本語) - これ読めば全部分かる
- cctx - Claude Context Manager - 設定切り替えツール
- Claude Code 設定例(Gist) - 実際の設定例