⚙️

Claude Codeの設定: グローバル設定から権限管理まで

に公開1

🎨 Claude Codeの設定とカスタマイズ

こんにちは、イワケンです。
Claude Codeの設定についてまとめました。

引用元: 公式ドキュメント(日本語版)

Claude Codeはニーズに合わせて動作を設定するための様々な設定を提供しています。ターミナルでclaude configを実行するか、インタラクティブREPLを使用する際に/configコマンドを実行することでClaude Codeを設定できます。

設定の階層構造

新しいsettings.jsonファイルは、階層的な設定を通じてClaude Codeを構成するための公式メカニズムです:

  • ユーザー設定~/.claude/settings.jsonで定義され、すべてのプロジェクトに適用されます。
  • プロジェクト設定はプロジェクトディレクトリの.claude/settings.json(共有設定用)と.claude/settings.local.json(ローカルプロジェクト設定用)に保存されます。Claude Codeは作成時に.claude/settings.local.jsonをgitで無視するよう設定します。
  • Claude Codeのエンタープライズデプロイメントでは、エンタープライズ管理ポリシー設定もサポートしています。これらはユーザーおよびプロジェクト設定よりも優先されます。システム管理者はmacOSでは/Library/Application Support/ClaudeCode/policies.jsonに、LinuxおよびWSL経由のWindowsでは/etc/claude-code/policies.jsonにポリシーをデプロイできます。
{
  "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"
  }
}

利用可能な設定

settings.jsonは多くのオプションをサポートしています:

キー 説明
apiKeyHelper Anthropic APIキーを生成するカスタムスクリプト /bin/generate_temp_api_key.sh
cleanupPeriodDays チャット履歴をローカルに保持する期間(デフォルト:30日) 20
env すべてのセッションに適用される環境変数 {"FOO": "bar"}
includeCoAuthoredBy gitコミットとプルリクエストにco-authored-by Claudeの署名を含めるかどうか(デフォルト:true false

設定の優先順位

設定は以下の優先順位で適用されます:

  1. エンタープライズポリシー
  2. コマンドライン引数
  3. ローカルプロジェクト設定
  4. 共有プロジェクト設定
  5. ユーザー設定

設定オプション

Claude Codeはグローバル設定とプロジェクトレベルの設定をサポートしています。

設定を管理するには、以下のコマンドを使用します:

  • 設定の一覧表示:claude config list
  • 設定の確認:claude config get <key>
  • 設定の変更:claude config set <key> <value>
  • 設定への追加(リスト用):claude config add <key> <value>
  • 設定からの削除(リスト用):claude config remove <key> <value>

デフォルトではconfigはプロジェクト設定を変更します。グローバル設定を管理するには、--global(または-g)フラグを使用します。

グローバル設定

グローバル設定を設定するには、claude config set -g <key> <value>を使用します:

キー 説明
autoUpdaterStatus 自動更新を有効または無効にする(デフォルト:enabled disabled
preferredNotifChannel 通知を受け取る場所(デフォルト:iterm2 iterm2iterm2_with_bellterminal_bell、またはnotifications_disabled
theme カラーテーマ darklightlight-daltonized、またはdark-daltonized
verbose bashとコマンドの出力を完全に表示するかどうか(デフォルト:false true

グローバル設定をsettings.jsonに移行するプロセスを進めています。

権限

/allowed-toolsを使用してClaude Codeのツール権限を管理できます。このUIはすべての権限ルールとそれらが取得されるsettings.jsonファイルを一覧表示します。

  • 許可ルールは、Claude Codeが指定されたツールを手動承認なしで使用できるようにします。
  • 拒否ルールは、Claude Codeが指定されたツールを使用できないようにします。拒否ルールは許可ルールよりも優先されます。

権限ルールはTool(optional-specifier)の形式を使用します。

例えば、WebFetchを許可ルールのリストに追加すると、ユーザー承認を必要とせずにウェブフェッチツールの使用が許可されます。Claudeが利用できるツールのリストを参照してください(括弧内の名前が提供されている場合はその名前を使用します)。

一部のツールでは、より細かい権限制御のためにオプションの指定子を使用します。例えば、WebFetch(domain:example.com)を含む許可ルールは、example.comへのフェッチを許可しますが、他のURLへのフェッチは許可しません。

BashルールはBash(npm run build)のような完全一致、またはBash(npm run test:*)のように:*で終わる場合はプレフィックス一致になります。

Read()Edit()ルールはgitignore仕様に従います。パターンは.claude/settings.jsonを含むディレクトリを基準に解決されます。絶対パスを参照するには//を使用します。ホームディレクトリを基準とするパスには~/を使用します。例えばRead(//tmp/build_cache)Edit(~/.zshrc)などです。Claudeは、Grep、Glob、LSなどの他のファイル関連ツールにもReadおよびEditルールを適用するよう最善の努力をします。

MCPツール名はmcp__server_name__tool_nameの形式に従います:

  • server_nameはClaude Codeで設定されたMCPサーバーの名前です
  • tool_nameはそのサーバーが提供する特定のツールです

その他の例:

ルール 説明
Bash(npm run build) 正確なBashコマンドnpm run buildに一致します。
Bash(npm run test:*) npm run testで始まるBashコマンドに一致します。コマンドセパレータの処理に関する注意点を以下に参照してください。
Edit(~/.zshrc) ~/.zshrcファイルに一致します。
Read(node_modules/**) 任意のnode_modulesディレクトリに一致します。
mcp__puppeteer__puppeteer_navigate puppeteer MCPサーバーのpuppeteer_navigateツールに一致します。
WebFetch(domain:example.com) example.comへのフェッチリクエストに一致します

Tip: Claude Codeはコマンドセパレータ(&&など)を認識するため、Bash(safe-cmd:*)のようなプレフィックス一致ルールでは、safe-cmd && other-cmdのようなコマンドを実行する権限は与えられません

自動更新の権限オプション

Claude Codeがグローバルnpmプレフィックスディレクトリ(自動更新に必要)に書き込むための十分な権限がないことを検出すると、このドキュメントページを指す警告が表示されます。自動更新の問題に関する詳細なソリューションについては、トラブルシューティングガイドを参照してください。

推奨:ユーザーが書き込み可能な新しいnpmプレフィックスを作成する

# まず、既存のグローバルパッケージのリストを後で移行するために保存します
npm list -g --depth=0 > ~/npm-global-packages.txt

# グローバルパッケージ用のディレクトリを作成します
mkdir -p ~/.npm-global

# 新しいディレクトリパスを使用するようにnpmを設定します
npm config set prefix ~/.npm-global

# 注意:~/.bashrcを使用しているシェルに応じて~/.zshrc、~/.profile、または他の適切なファイルに置き換えてください
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc

# 新しいPATH設定を適用します
source ~/.bashrc

# 新しい場所にClaude Codeを再インストールします
npm install -g @anthropic-ai/claude-code

# オプション:以前のグローバルパッケージを新しい場所に再インストールします
# ~/npm-global-packages.txtを見て、保持したいパッケージをインストールします
# npm install -g package1 package2 package3...

このオプションを推奨する理由:

  • システムディレクトリの権限を変更する必要がありません
  • グローバルnpmパッケージ用のクリーンで専用の場所を作成します
  • セキュリティのベストプラクティスに従います

Claude Codeは積極的に開発中であるため、上記の推奨オプションを使用して自動更新を設定することをお勧めします。

自動更新の無効化

権限を修正する代わりに自動更新を無効にしたい場合は、次のコマンドを使用できます:

claude config set -g autoUpdaterStatus disabled

ターミナル設定の最適化

Claude Codeは、ターミナルが適切に設定されている場合に最も効果的に動作します。以下のガイドラインに従って、エクスペリエンスを最適化してください。

サポートされているシェル

  • Bash
  • Zsh
  • Fish

テーマと外観

Claudeはターミナルのテーマを制御できません。それはターミナルアプリケーションによって処理されます。オンボーディング中または/configコマンドを使用していつでも、Claude Codeのテーマをターミナルに合わせることができます。

改行

Claude Codeに改行を入力するためのいくつかのオプションがあります:

  • クイックエスケープ\に続けてEnterを押して改行を作成
  • キーボードショートカット:適切な設定でOption+Enter(Meta+Enter)を押す

ターミナルでOption+Enterを設定するには:

Mac Terminal.appの場合:

  1. 設定 → プロファイル → キーボードを開く
  2. 「Option as Meta Key を使用」にチェックを入れる

iTerm2とVSCodeターミナルの場合:

  1. 設定 → プロファイル → キーを開く
  2. 一般の下で、左/右Optionキーを「Esc+」に設定

iTerm2とVSCodeユーザーへのヒント:Claude Code内で/terminal-setupを実行して、より直感的な代替手段としてShift+Enterを自動的に設定します。

通知設定

適切な通知設定で、Claudeがタスクを完了したときを見逃さないようにしましょう:

ターミナルベル通知

タスク完了時のサウンドアラートを有効にする:

claude config set --global preferredNotifChannel terminal_bell

macOSユーザーの場合:システム設定 → 通知 → [ターミナルアプリ]で通知権限を有効にすることを忘れないでください。

iTerm 2システム通知

タスク完了時にiTerm 2アラートを表示する:

  1. iTerm 2の環境設定を開く
  2. プロファイル → ターミナルに移動
  3. 「ベルを無音にする」と「フィルターアラート」→「エスケープシーケンス生成アラートを送信」を有効にする
  4. 希望する通知遅延を設定する

これらの通知はiTerm 2に固有のものであり、デフォルトのmacOSターミナルでは利用できないことに注意してください。

大量の入力の処理

広範なコードや長い指示を扱う場合:

  • 直接貼り付けを避ける:Claude Codeは非常に長い貼り付けられたコンテンツで苦労する場合があります
  • ファイルベースのワークフローを使用する:コンテンツをファイルに書き込み、Claudeに読み取りを依頼する
  • VS Codeの制限に注意する:VS Codeターミナルは特に長い貼り付けを切り詰める傾向があります

Vimモード

Claude Codeは/vimで有効にするか、/configで設定できるVimキーバインディングのサブセットをサポートしています。

サポートされているサブセットには以下が含まれます:

  • モード切り替え:Esc(NORMALモードへ)、i/Ia/Ao/O(INSERTモードへ)
  • ナビゲーション:h/j/k/lw/e/b0/$/^gg/G
  • 編集:xdw/de/db/dd/Dcw/ce/cb/cc/C.(繰り返し)

環境変数

Claude Codeは、その動作を制御するために以下の環境変数をサポートしています:

Note: すべての環境変数はsettings.jsonでも設定できます。これは各セッションの環境変数を自動的に設定したり、チーム全体や組織全体に環境変数のセットをロールアウトしたりするのに便利です。

変数 目的
ANTHROPIC_AUTH_TOKEN AuthorizationおよびProxy-Authorizationヘッダーのカスタム値(ここで設定した値にはBearer が前に付きます)
ANTHROPIC_CUSTOM_HEADERS リクエストに追加したいカスタムヘッダー(Name: Value形式)
ANTHROPIC_MODEL デフォルトモデルの名前
ANTHROPIC_SMALL_FAST_MODEL Haikuクラスモデルの名前
BASH_DEFAULT_TIMEOUT_MS 長時間実行されるbashコマンドのデフォルトタイムアウト
BASH_MAX_TIMEOUT_MS 長時間実行されるbashコマンドに対してモデルが設定できる最大タイムアウト
BASH_MAX_OUTPUT_LENGTH bash出力が中間で切り詰められる前の最大文字数
CLAUDE_CODE_API_KEY_HELPER_TTL_MS 認証情報を更新する間隔(apiKeyHelper使用時)
CLAUDE_CODE_USE_BEDROCK Bedrockを使用する
CLAUDE_CODE_USE_VERTEX Vertexを使用する
CLAUDE_CODE_SKIP_VERTEX_AUTH VertexのためのGoogle認証をスキップする(例:プロキシ使用時)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC DISABLE_AUTOUPDATERDISABLE_BUG_COMMANDDISABLE_ERROR_REPORTING、およびDISABLE_TELEMETRYの設定と同等
DISABLE_AUTOUPDATER 1に設定すると自動更新を無効にします
DISABLE_BUG_COMMAND 1に設定すると/bugコマンドを無効にします
DISABLE_COST_WARNINGS 1に設定するとコスト警告メッセージを無効にします
DISABLE_ERROR_REPORTING 1に設定するとSentryエラーレポートをオプトアウトします
DISABLE_TELEMETRY 1に設定するとStatsigテレメトリをオプトアウトします(Statsigイベントにはコード、ファイルパス、bashコマンドなどのユーザーデータは含まれないことに注意してください)
HTTP_PROXY ネットワーク接続用のHTTPプロキシサーバーを指定します
HTTPS_PROXY ネットワーク接続用のHTTPSプロキシサーバーを指定します
MAX_THINKING_TOKENS モデルの思考予算を強制します
MCP_TIMEOUT MCPサーバー起動のタイムアウト(ミリ秒)
MCP_TOOL_TIMEOUT MCPツール実行のタイムアウト(ミリ秒)

🔗 参考リンク

Discussion

たくみんたくみん

これ公式ドキュメントそのままコピペしてるだけじゃないですか?