Created
February 7, 2026 23:38
-
-
Save SamSaffron/d053d2d6917baf08a0fae0ac4af16943 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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