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にポリシーを展開できます。

Example settings.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"
  }
}

設定の優先順位

設定は優先順位の順に適用され、後のソースが前のソースを上書きします:

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

設定オプション

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>を使用します:

キー説明
autoUpdaterStatusdisabledまたはenabled自動更新を有効または無効にする(デフォルト:enabled
envJSON(例:'{"FOO": "bar"}'すべてのセッションに適用される環境変数
preferredNotifChanneliterm2iterm2_with_bellterminal_bell、またはnotifications_disabled通知を受け取る場所(デフォルト:iterm2
themedarklightlight-daltonized、またはdark-daltonizedカラーテーマ
verbosetrueまたはfalsebashとコマンドの完全な出力を表示するかどうか(デフォルト:false

プロジェクト設定

プロジェクト設定を管理するには、claude config set <key> <value>を使用します(-gフラグなし):

キー説明
allowedToolsツールの配列手動承認なしで実行できるツール
ignorePatternsglob文字列の配列ツール使用時に無視されるファイル/ディレクトリ

例:

# npm testを承認なしで実行できるようにする
claude config add allowedTools "Bash(npm test)"

# npm testとそのサブコマンドを承認なしで実行できるようにする
claude config add allowedTools "Bash(npm test:*)"

# Claudeにnode_modulesを無視するよう指示する
claude config add ignorePatterns node_modules
claude config add ignorePatterns "node_modules/**"

権限

Claude Codeのツール権限は/allowed-toolsで管理できます。この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_navigatepuppeteer MCPサーバーのpuppeteer_navigateツールに一致します。
WebFetch(domain:example.com)example.comへのフェッチリクエストに一致します

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をメタキーとして使用」をチェック

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は、その動作を制御するために以下の環境変数をサポートしています:

変数目的
DISABLE_AUTOUPDATER1に設定すると自動更新を無効にします
DISABLE_BUG_COMMAND1に設定すると/bugコマンドを無効にします
DISABLE_COST_WARNINGS1に設定するとコスト警告メッセージを無効にします
DISABLE_ERROR_REPORTING1に設定するとSentryエラーレポートをオプトアウトします
DISABLE_TELEMETRY1に設定するとStatsigテレメトリをオプトアウトします(Statsigイベントにはコード、ファイルパス、bashコマンドなどのユーザーデータは含まれないことに注意)
HTTP_PROXYネットワーク接続用のHTTPプロキシサーバーを指定します
HTTPS_PROXYネットワーク接続用のHTTPSプロキシサーバーを指定します
MCP_TIMEOUTMCPサーバー起動のタイムアウト(ミリ秒)
MCP_TOOL_TIMEOUTMCPツール実行のタイムアウト(ミリ秒)