Skip to content

Instantly share code, notes, and snippets.

@SamSaffron
Created February 7, 2026 23:38
Show Gist options
  • Select an option

  • Save SamSaffron/d053d2d6917baf08a0fae0ac4af16943 to your computer and use it in GitHub Desktop.

Select an option

Save SamSaffron/d053d2d6917baf08a0fae0ac4af16943 to your computer and use it in GitHub Desktop.
Reasoning Effort in Claude Code v2.1.37
Feature gate
Effort is gated behind:
1. Feature flag: tengu_workout2 must be enabled server-side
2. Model support: only Opus 4.6 (opus-4-6 in model name) via Dg1()
Valid values
["low", "medium", "high", "max"]
It also accepts integer values (parsed via parseInt).
How to set it
Priority order (first defined wins):
X1 = y6q() // 1. env var CLAUDE_CODE_EFFORT_LEVEL
?? w.effortValue // 2. UI/settings value (from /model menu or persisted)
?? dt8(w.model); // 3. model default (currently returns undefined for all models)
1. Environment variable
CLAUDE_CODE_EFFORT_LEVEL=low claude
CLAUDE_CODE_EFFORT_LEVEL=medium claude
CLAUDE_CODE_EFFORT_LEVEL=high claude # same as default
CLAUDE_CODE_EFFORT_LEVEL=max claude
2. In-session via /model menu
When you run /model, if effort is supported (Opus 4.6 + feature flag), the menu shows effort
level options. The selection is persisted to user settings as effortLevel and saved via
w7("userSettings", {effortLevel: ...}).
3. User settings (persisted)
The R6q() function reads effortLevel from user settings (jq() which loads the settings file). So
it persists across sessions.
How it's applied (BKz function)
function BKz(effortValue, outputConfig, params, betas, model) {
// Must have feature flag AND model must support effort
if (!It() || !Dg1(model) || "effort" in outputConfig) return;
if (effortValue === undefined)
betas.push("effort-2025-11-24"); // just adds beta, no explicit effort
else if (typeof effortValue === "string")
outputConfig.effort = effortValue; // sets effort in output_config
betas.push("effort-2025-11-24");
}
The effort value is sent as part of output_config in the API request, using the effort-2025-11-24
beta header.
No CLI flag
There is no --effort CLI argument. The only ways to set it are:
1. CLAUDE_CODE_EFFORT_LEVEL env var (takes highest priority)
2. /model menu in the TUI (persisted to settings)
3. User settings file (effortLevel key)
Default behavior
When effort is "high" (selected via menu), it's stored as undefined internally (meaning: don't
send an explicit effort value). The default behavior when undefined is to just add the beta
header without setting an explicit effort level, letting the API use its default.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment