Effort LevelをMaxに永続設定する方法
Claude Code環境変数でmaxを強制適用 — settings.jsonバグを回避
Effort Levelとは何か
Claudeが1つの応答を生成する時、どれだけ深く考えるか(内部推論に使うトークン量)を調整するダイヤルです。ユーザーが見る最終回答の長さとは別に、応答する前にモデル内部で回す「思考プロセス」の深さが変わります。
簡単に言うと:
低いeffort = 速く、少ないトークンで、直感的に回答
高いeffort = ゆっくり、多くのトークンを使い、複数のケースを検討して回答
モデル自体(Opus 4.6、Sonnetなど)が同じでも、effort levelによって同じ質問への回答品質が明確に変わります。 簡単な質問ならlowで十分ですが、複雑なデバッグ・アーキテクチャ設計ではhigh/maxの方が正確な答えを出します。
Low / Medium / High / Max — 実質的な違い
| レベル | 内部推論トークン | 応答速度 | コスト | 適した作業 |
|---|---|---|---|---|
| Low | 最小 | 最速 | 最安 | ファイル確認、単純な質問、コマンド探し |
| Medium | 中程度 | 中 | 中 | 一般的なコーディング、小規模リファクタ、テスト作成 |
| High | 多い | 遅い | 高い | 複雑なバグ追跡、複数ファイルのリファクタ、設計レビュー |
| Max | 最大 | 最も遅い | 最高 | 困難なアーキテクチャ決定、エッジケースが多いコード、「一発で正解が必要」な作業 |
High vs Medium — 実際にどんな違いが予想されるか
同じ「N+1クエリ最適化」依頼を例にすると:
Medium:
目に見えるN+1を見つけて
includes(:association)を1行追加基本的な解決、通常は正しい
10〜20秒で応答
High:
N+1を見つけた後、
joinsvsincludesどちらが適切か判断関連する他のクエリも合わせて検討
テストへの影響範囲も考慮
30〜60秒で応答、回答がより洗練されている
違いが出る場面:
エッジケース検出: mediumが見逃すものをhighが拾う(nil処理、並行処理など)
複数解決策の比較: mediumは最初に浮かんだ答え、highは代替案を比較して推奨
既存コードスタイル遵守: mediumは一般的パターン、highはプロジェクトのパターンをよく踏襲
長い推論チェーン: 「AならB、ならC、ならD...」といった多段階論理でhighが圧倒的に正確
違いが小さい場面:
ファイル1〜2個だけ見る単純作業
「このエラーは何ですか」のような事実質問
既知のAPI使い方の質問
本題:なぜMaxに永続設定するか
Claude Code v2.1.68(2026-03-04リリース)からデフォルトのeffort levelが従来のhighからmediumに下がりました。公式チェンジログでの変更ですが、ユーザーからすると回答品質が下がったように感じるかもしれません。
常にmaxで動作させたい場合、.zshrcに環境変数を追加するのが最も簡単です。
Effort level 設定の優先順位
1. 環境変数: CLAUDE_CODE_EFFORT_LEVEL (最優先)
2. CLIフラグ: claude --effort max
3. settings.json: "effortLevel": "high"
4. モデルデフォルト(Opus 4.6 は medium)
上にあるほど優先適用されます。環境変数が1位なので、一度設定すれば他の設定を上書きします。
追加方法
.zshrcに以下を追加:
# Claude Code: デフォルトのeffort levelをmaxに設定
# settings.jsonではmaxが永続化できないバグがあるためenv varで設定
export CLAUDE_CODE_EFFORT_LEVEL=max
新しいターミナルセッションから自動適用されます。
なぜ settings.json ではなく環境変数か
settings.json:
"effortLevel": "max"を設定しても反映されない。/modelUIを操作すると値が上書きされる既知バグ(GitHub issue #30726)。highまでは保存されるがmaxは保存されないCLIフラグ:
claude --effort maxは動作するが毎回タイピングが必要。aliasにもできるが環境変数の方がシンプル環境変数: 全セッションに自動適用され、優先順位も最上位
ultrathink キーワードとの違い
Claude Code にはultrathinkというキーワードがあり、プロンプトに含めるとそのターンだけhigh effortに上がります。
| 設定方法 | effort level | 持続性 |
|---|---|---|
ultrathink キーワード |
high | そのターンのみ |
/effort high |
high | セッション中 |
/effort max |
max | セッション中 |
CLAUDE_CODE_EFFORT_LEVEL=max(env var) |
max | 永続 |
結論:env varでmaxを設定すると、ultrathinkより上の水準が常に適用されます。 毎回「深く考えて」と呼びかける必要がなくなります。
注意点
maxはトークン使用量と応答時間が最も高くなる。簡単な作業にはオーバースペック必要に応じて一時的に下げるにはセッション中に
/effort lowまたは/effort mediumを実行環境変数を適用するには新しいターミナルを開くか
source ~/.zshrcを実行
使い方
.zshrcに`export CLAUDE_CODE_EFFORT_LEVEL=max`を追加
新しいターミナルを開くか`source ~/.zshrc`を実行して適用
優先順位:env var > CLIフラグ > settings.json > モデルデフォルト。env varが最優先
settings.jsonではmaxが永続化されない(GitHub issue #30726)。env var必須
ultrathinkより上位:ultrathinkはhigh(そのターンのみ)、env var maxはmax(永続)
タグ
Source
コミュニティTips (2026-03-16 共有)