Claude Code の挙動を起動時の設定値で調整したい、設定ファイルやターミナルを多少触ったことがある人向け
モデルを切り替えたい、自動アップデートを止めたい、会社の中継サーバ経由で通信させたい、といった調整をしたい場面で使う。お試しなら画面で export して claude を起動し、毎回効かせたいなら settings.json の env 欄に名前と値を書いて立ち上げ直す。
Claude Code を使っていると、「モデルを切り替えたい」「自動アップデートを止めたい」「会社の通信経路を通したい」みたいに、ちょっと挙動を変えたくなる場面が出てきます。そのとき手で毎回コマンドに書き足すのではなく、パソコンやその画面が起動時に覚えている設定値(英語名は Environment Variables)に値を入れておくと、Claude Code が起動した瞬間にそれを読んで動きを変えてくれます。
1つの設定値の深掘りではなく、ここでは「そもそもこの設定値とは何か」「Claude Code をどう調整できるか」「代表的なものは何か」「どこに書くか」を一気に見ていきます。
そもそも Environment Variables って何のこと?
パソコンには、アプリが起動するたびに参照する「名前つきの設定値」をしまっておく置き場があります。これが Environment Variables です。たとえば ANTHROPIC_API_KEY という名前に自分のキーを入れておくと、Claude Code は起動時にそこを覗いて「あ、このキーで認証すればいいんだな」と判断します。
中身を確認するのは簡単で、黒い画面で次の1行を打つと、その名前に入っている値が表示されます。
$ echo $ANTHROPIC_MODEL
何か文字列が返ってくれば設定済み、空っぽなら未設定です。ここがこのページの土台になります。
噛み砕くと
新しい職場の初日を思い浮かべてください。受付に「私の内線は◯番、所属は△課」と書いた札を置いておけば、社内の人はその札を見て勝手に取り次いでくれます。いちいち口で説明しなくていい。
この設定値も同じ仕組みです。「使うモデルはこれ」「自動更新はオフ」と札を立てておけば、Claude Code は起動のたびにその札を読んで、書いてある通りに振る舞ってくれます。毎回コマンドの後ろに同じ指定を足す手間が消えるわけです。
地味だけど効きます。
Claude Code が読む代表的なものを表で見る
公式が現在公開している一覧から、初心者でも出番がありそうな代表格を拾いました。名前と効果は公式記載どおりです。創作した名前は1つも入れていません。
| 名前 | 何が変わるか | 書く例 |
|---|---|---|
ANTHROPIC_API_KEY |
このキーで認証する。入れると定期サブスクより優先される | export ANTHROPIC_API_KEY="sk-..." |
ANTHROPIC_MODEL |
使うモデルを指定する。起動後の /model や --model が優先される |
export ANTHROPIC_MODEL="claude-..." |
ANTHROPIC_DEFAULT_OPUS_MODEL |
Opus 系として使うモデルIDを差し替える | export ANTHROPIC_DEFAULT_OPUS_MODEL="..." |
API_TIMEOUT_MS |
通信の待ち時間の上限をミリ秒で決める(初期値60万=10分) | export API_TIMEOUT_MS="600000" |
DISABLE_TELEMETRY |
使用状況の送信(テレメトリ)を止める | export DISABLE_TELEMETRY="1" |
DISABLE_AUTOUPDATER |
自動アップデートの確認を止める | export DISABLE_AUTOUPDATER="1" |
CLAUDE_CODE_DISABLE_CLAUDE_MDS |
1 にすると CLAUDE.md を一切読み込ませない |
export CLAUDE_CODE_DISABLE_CLAUDE_MDS="1" |
ANTHROPIC_BASE_URL |
通信先の窓口を別のURLに差し替える(会社の中継サーバ向け) | export ANTHROPIC_BASE_URL="https://..." |
CLAUDE_CODE_MAX_RETRIES |
通信が失敗したときの再挑戦回数(初期値10) | export CLAUDE_CODE_MAX_RETRIES="3" |
これで全部ではありません。公式ページにはレンダリング調整・プラグイン・通信証明書まわりなど、ずらっと並んでいます。まずはこの9個が「自分に効くやつあるかも」の入口として使えます。
どこに書くか:その画面だけ/ずっと残す の2通り
書き場所は大きく2つあります。違いは「いつまで効くか」です。
その画面だけ効かせる
いま開いている黒い画面でだけ一時的に効かせたいなら、export で値を入れてから claude を起動します。画面を閉じたら消えるので、お試しに向いています。
$ export ANTHROPIC_MODEL="claude-..."
$ claude
Windows の PowerShell なら $env:ANTHROPIC_MODEL = "claude-..." という書き方になります。
ずっと残す
毎回打つのが面倒なら、設定ファイルに書いておけば次回以降も自動で効きます。Claude Code の場合、settings.json の env という欄に名前と値を並べて書くのが正攻法です。
{
"env": {
"DISABLE_TELEMETRY": "1",
"ANTHROPIC_MODEL": "claude-..."
}
}
このファイルは置き場所が3段階あって、全員共通の ~/.claude/settings.json、プロジェクト共通の .claude/settings.json、自分だけの .claude/settings.local.json と使い分けられます。ここで初心者がやりがちな勘違いがあって、設定ファイルに書いてもその場では反映されません。値は起動の瞬間に読まれるので、書き換えたら claude を立ち上げ直す必要があります。
「料理ブログを作る」場面で、実際の流れを見る
cooking-blog という名前で料理ブログを作る前提で、最初から順に追います。世界の家庭料理を紹介するサイトを Claude Code で組んでいくイメージです。
ステップ1: いまどう動いているか確認する
まず黒い画面を開いて、使うモデルが指定されているか覗きます。
$ echo $ANTHROPIC_MODEL
(空っぽ)
空っぽなら未指定で、Claude Code は自分のデフォルトで動きます。これはこれで問題ありません。
ステップ2: お試しで通信の待ち時間を延ばす
レシピ画像を大量に処理させたら通信が途中で切れた、としましょう。待ち時間の上限を一時的に伸ばします。
$ export API_TIMEOUT_MS="900000"
$ claude
これでこの画面の間だけ、上限が15分に伸びます。画面を閉じれば元通りです。
ステップ3: テレメトリ送信を止めたくなる
料理ブログのソースを GitHub に上げる前に、利用状況の自動送信を切っておきたい。一時的なら次の通りです。
$ export DISABLE_TELEMETRY="1"
$ claude
ステップ4: 毎回効かせたいので設定ファイルへ移す
ステップ2と3を毎回打つのは面倒です。cooking-blog フォルダの中の .claude/settings.json に書き写して、このプロジェクトでは常に効くようにします。
{
"env": {
"API_TIMEOUT_MS": "900000",
"DISABLE_TELEMETRY": "1"
}
}
ステップ5: 立ち上げ直して反映させる
ここを忘れると「書いたのに効かない」と悩みます。値は起動時に読まれるので、いったん抜けてもう一度 claude を起動します。
$ claude
ステップ6: 優先順位を体で覚える
仮に設定ファイルに ANTHROPIC_MODEL を書いていても、起動時に --model を後ろに足したらそっちが勝ちます。さらに export で画面に直接入れた値は、設定ファイルの値より優先されます。「画面で直接入れた値 > 設定ファイル」「コマンドの後ろの指定 > 画面で入れた値」と覚えておくと混乱しません。
つまりこの設定値は何をしてくれるのか
- やってくれる: 起動時にモデル・認証・通信先・各種オン/オフを読んで、Claude Code の挙動をその通りに変える
- やってくれない: 起動中にこっそり書き換えても反映しない。値は起動の瞬間にだけ読まれる
- 意味が薄い場面: 標準のままで困っていないなら、無理に何か設定する必要はない。空っぽでも普通に動く
使いどころ3シナリオ(具体題材で再現)
シナリオ1: 料理ブログの自動更新を止めたいとき
cooking-blog の作業中に勝手にバージョンが上がると、検証していた挙動が変わって困ることがあります。DISABLE_AUTOUPDATER を 1 にして、自動アップデートの確認を止めておく。安定して書き上げたいときの定番です。私はリリース直前のプロジェクトでよく使います。
シナリオ2: 会社の家計簿アプリで通信経路を指定するとき
社内ネットワークから外に出る通信を1か所に集約している会社だと、Claude Code の通信先を中継サーバに向ける必要があります。ANTHROPIC_BASE_URL に会社指定のURLを入れて、全員共通の設定ファイルに書いておけば、チーム全員が同じ経路を通れます。情報システム部門から渡されたURLをそのまま入れるだけです。
シナリオ3: OSSを git clone した直後にCLAUDE.mdを読ませたくないとき
他人の公開プロジェクトを自分のパソコンにコピーしてきた直後は、相手が同梱した CLAUDE.md の指示に引っ張られたくない場面があります。CLAUDE_CODE_DISABLE_CLAUDE_MDS を 1 にすれば、いったん素の状態で中身を読めます。様子を見てから外せばいい。
初心者が踏みやすい落とし穴
- 書き換えたのに反映されない。値は起動の瞬間にしか読まれません。設定ファイルや画面で直しても、
claudeを立ち上げ直すまで古いままです。 - 名前の大文字・小文字を間違える。
ANTHROPIC_API_KEYを小文字で書くと別物扱いで効きません。名前は公式の表記そのままで打ちます。 - 公式に無い名前を勝手に作る。「それっぽい名前なら効くだろう」は通じません。一覧に載っている名前だけが意味を持ちます。
- 設定ファイルに書く場所を間違える。
settings.json直下ではなくenv欄の中に名前と値を並べます。場所がズレると読まれません。 - 優先順位を忘れて二重指定で混乱する。設定ファイルに書いたのに、起動時に
--modelを足していて「指定が無視された」と勘違いしがちです。後ろの指定が勝ちます。 - キーを設定ファイルに直書きして共有してしまう。
ANTHROPIC_API_KEYをチーム共有のファイルに書くと、キーが他人に見えます。各自のsettings.local.jsonや自分の画面だけで入れるのが安全です。 - 非推奨の名前を使い続ける。一覧には
[DEPRECATED](非推奨)と書かれた古い名前もあります。新しい名前に乗り換えないと、ある日効かなくなります。
書き方
echo $名前 # 中身を確認
export 名前="値" # その画面だけ効かせる
(ずっと残すなら settings.json の env 欄に書く)
やってみるとこうなる
入力
$ export ANTHROPIC_MODEL="claude-..."
$ claude
出力例
settings.json の env 欄に書いた場合:
{
"env": {
"DISABLE_TELEMETRY": "1",
"ANTHROPIC_MODEL": "claude-..."
}
}
→ claude を立ち上げ直すと、起動時にこれを読んで挙動が変わる。
このページに出てきた言葉
- Environment Variables
- パソコンやその画面が起動時に覚えている「名前つきの設定値」。<code>echo $名前</code> で中身を確認できる
- export
- いま開いている画面に対して「この設定値を覚えておいて」と指示するコマンド。画面を閉じると忘れる
- settings.json
- Claude Code の挙動をまとめて指定しておく設定ファイル。<code>env</code> 欄に起動時の設定値を並べて書ける
- テレメトリ
- ツールが利用状況やエラーを開発元に自動で送る仕組み。<code>DISABLE_TELEMETRY</code> で止められる
- モデル
- Claude の頭脳の種類。Opus / Sonnet / Haiku など賢さと速さのバランスが違う
- 中継サーバ
- 通信を一度受け取って外へ流す中継役。会社の通信を1か所で管理する用途で使う