じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

Claude Code の settings.json は設定した方がいい

はじめに

Claude Code 使ってますか?ターミナルから Claude に直接コーディングタスクを投げられる便利なツールなんですが、デフォルト設定のまま使うのはちょっともったいない。というかいちいちいろんなことを聞いてきてめちゃくちゃダルい。

syu-m-5151.hatenablog.com

settings.json をちゃんと設定すると、セキュリティも保ちつつ、もっと快適に使えるようになります。全体的に疲れている時の~/.claude/settings.json と~/.claude/CLAUDE.md · GitHub 私のデフォルトの設定も公開してますのでよかったら参考にしてください。

ここで読むのをやめる人のために言っておくと Claude Codeの設定は優先順位があるので覚えておくと良い です。あと、比較的に今は黎明期なので非推奨や追加機能が多いのでその点も注意が必要かもです。

正直なところ、Anthropic の公式ドキュメント(日本語)が最高に分かりやすいので、まずはそっちを読んでほしいんですが、このブログは公式ドキュメントに赤線を引いたようなもので、実際に使ってみて「これは設定しといた方がいいよ」っていうポイントをピックアップしてまとめました。

docs.anthropic.com

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の使い方も覚えておいたほうが多分良いです。

docs.anthropic.com

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 自動更新を無効化

設定の優先順位を理解しよう

公式ドキュメントによると、設定は以下の順番で適用されます(上が優先):

  1. エンタープライズポリシー
  2. コマンドライン引数
  3. ローカルプロジェクト設定(.claude/settings.local.json
  4. 共有プロジェクト設定(.claude/settings.json
  5. ユーザー設定(~/.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 の 公式ドキュメントやベストプラクティス はとりあえず読んだ方がいい。

www.anthropic.com

参考リンク