Effort Ladders for Every AI CLI and API: The Reference Table As of August 22, 2026, a reference table covering 18 AI CLI and API surfaces shows that reasoning-effort rung names, counts, defaults, and the position of 'high' vary widely across vendors, with only Z.ai's GLM-5.3, Moonshot's Kimi K3 API, and the stealth/ox-alpha listing sharing the same three rung names, default, and 'high' position. The table, published by an unnamed source, documents that three vendors ship no 'medium' rung, eight lines show reasoning as always-on, and DeepSeek V4's native API exposes only a boolean thinking switch with no named rungs. Codex CLI 0.149.0's backend enumerates seven values (none, minimal, low, medium, high, xhigh, max) with 'high' as fifth, retiring the older six-rung framing. Seventeen of the eighteen surfaces in this table name their reasoning-effort rungs. The eighteenth, DeepSeek’s native API, ships a boolean thinking switch and no named rung at all. The named ladders rarely line up: across these rows, vendors differ on the names, the count, the default or the position of high , though Z.ai’s GLM-5.3, Moonshot’s Kimi K3 API and the stealth/ox-alpha listing all land on the same three rung names, the same default and the same position for high . This page is the table: for 18 numbered surfaces, the rung names, each read from a vendor page, from the installed binary’s own output, from a dated live check in this kit’s CLI notes, or, for the one stealth listing, from OpenRouter’s models-API record; the rung count; the default; and whether reasoning can be disabled at all. Data as of August 22, 2026. The same word does different work on different rows. high is the third of five rungs on Anthropic’s current ladder and the third of four on its previous one, the fifth of seven values Codex’s backend enumerates, the ceiling on Gemini 3.7 Flash, and the middle of three on GLM-5.3 and Kimi K3. Three vendors ship no medium rung. One ships no effort rung at all. Eight table lines document reasoning as something you cannot switch off. None of that is visible from any single vendor’s page, which is the reason to keep one dated table. This is a control-surface reference, not a performance study. It records what the parameter accepts and what it defaults to, and deliberately records nothing about what each rung costs or scores. The narrative companion is our cross-vendor field guide to reasoning effort ladders /blog/llm-reasoning-effort-ladders-cross-vendor-guide ; the cost and quality side is in our effort-versus-quality benchmark read /blog/reasoning-effort-cost-vs-quality-benchmarks-2026 . This page contrasts with both rather than repeating them, and it corrects one claim we have published ourselves. - 0118 numbered rows, 19 table lines, CLI and API kept apart.Row 18 is split into the stealth/ox-alpha listing record 18a and OpenRouter’s generic reasoning parameter 18b . CLI and API surfaces sit on separate rows because they differ: Kimi’s OpenPlatform API defaults to max while the Kimi Code CLI defaults to high. - 02Codex’s backend enumerates seven values; high is fifth of seven.A live probe of Codex CLI 0.149.0 with an invalid model reasoning effort returned the backend’s own list: none, minimal, low, medium, high, xhigh, max. The CLI also accepts ultra, which that list does not carry. The older six-rung, high-is-fourth framing, including our own, is retired. - 03Three vendors ship no medium rung.GLM-5.3 low, high, max , Kimi K3 low, high, max and the stealth/ox-alpha record max, high, low all skip medium. One of the two sourced readings for Qwen3.8-max-preview skips it too; the other skips high instead, and the table records both. - 04Eight lines document reasoning as always-on; one surface has no rungs at all.Grok 4.6 API and CLI , GLM-5.3 API and via Claude Code , Kimi K3 API and CLI , Qwen3.8-max-preview and Ox Alpha all document that reasoning cannot be disabled. Gemini 3.7 Flash and agy document no off state. DeepSeek V4’s native API exposes a boolean only, zero named rungs. - 05Three cells stay open, on purpose.Qwen’s rung names differ between QwenCloud’s docs and our own live CLI check, and both readings are printed. Muse Code’s default differs between a live --help and our published guide; the live value is used and the discrepancy is stated. Codex’s ultra is the third kind of open cell: not a conflict between sources but an absence, since nothing fetched documents its wire-level treatment. 01 — ScopeWhat a rung is, and why CLI and API get separate rows. A rung, for this table, is one named value a vendor accepts on its reasoning-effort control: reasoning.effort on the OpenAI Responses API, output config.effort on the Anthropic Messages API, thinking level on the Gemini API, reasoning effort at xAI, Z.ai, Moonshot and QwenCloud, and whatever flag the CLI in front of each of those models exposes. Integer token budgets Gemini’s older thinking budget , Anthropic’s budget tokens , OpenRouter’s reasoning.max tokens are recorded where they interact with the named rungs but are not counted as rungs. CLI and API surfaces sit on separate rows wherever the kit drives both, because the cells differ in ways a merged row would hide. Kimi Code’s managed CLI defaults to high while Moonshot’s OpenPlatform API defaults to max . Codex CLI accepts a value the backend’s own enumeration does not list. The Antigravity CLI encodes effort as a model-id suffix as well as a flag. Where a CLI simply passes a flag through GLM-5.3 via Claude Code , the row says so and records the operational default separately from the vendor default. Two things are recorded per row that most vendor pages leave implicit: the ordinal position of the word high , counted from the lowest rung upward regardless of the order the vendor prints the list, and whether a disabled state exists at all. The first matters because a routing rule written as “use high” means five different things across this table. The second matters because a migration that relied on turning thinking off now fails outright on at least one vendor. Rung names, verbatim and in order The exact spelling and order the vendor lists, including values a CLI accepts that the backend does not enumerate, and values a vendor lists that its own CLI does not support in practice. Each such note is attributed in its own cell to the source it rests on, including where that source is a post of ours. Nothing is normalised across rows. Default, high position, off state, flag The vendor default and, where the kit overrides it, the operational default labelled as a choice , the ordinal of the word high counted from the bottom, whether reasoning can be disabled, and the parameter or flag name. Cost, scores, consumer toggles, legacy models No benchmark or price figures tied to rungs, no ChatGPT or Claude.ai UI dials, no OpenAI o-series, and deprecated variants only where they explain a generational change such as Grok 4.5 to 4.6 adding xhigh. 02 — MethodologyA method a stranger could redo , stating what was read and what was not. Four kinds of evidence feed the table, and each row says which one it rests on. The highest-confidence source is the installed binary’s own output: a deliberately invalid value sent to Codex CLI to force the backend’s validation error, and Muse Code’s own help text. Next are this kit’s dated CLI reference notes, each built from a live check against the installed tool on the date shown. Then the vendors’ current documentation pages. Last, for the single stealth listing, is the stealth/ox-alpha record from OpenRouter’s models API, taken from this batch’s verified anchors rather than re-pulled for this table. Nothing in the rung-name column is reconstructed from memory or pattern-matched from a sibling model. What was collected. For every coding-agent CLI and model API this kit actively drives, plus the two vendors this batch’s verified anchors flagged the stealth/ox-alpha listing and GLM-5.3 and OpenRouter’s own generic reasoning parameter, the reasoning-effort control surface: parameter or flag name, the full ordered list of accepted values verbatim, the default, whether reasoning can be disabled, and the ordinal position of the word high counted from the lowest rung. Data as of August 22, 2026. 18 numbered rows; row 18 is split into 18a and 18b, giving 19 table lines. Sources, in order of preference. 1 Read from the binary : Codex CLI 0.149.0, probed with an invalid model reasoning effort so the backend returned its own enumeration, then none , max and ultra tested as live values against gpt-5.6-sol ; Muse Code 0.2.1, whose --help prints the value list and default inline. 2 Read from this kit’s dated CLI notes , each a live check against the installed tool: Grok CLI and Antigravity agy 2026-08-17 , GLM via Z.ai 2026-08-17 , DeepSeek V4 2026-08-17 , Kimi Code v0.29.1 2026-07-26 , Qwen Code v0.21.0 2026-07-26 . 3 Read from current vendor documentation : the Anthropic effort and Claude Code model-config pages, the OpenAI reasoning guide, the Gemini thinking guide, the xAI reasoning page, the GLM-5.3 launch post dated 2026-08-14 , the Kimi K3 quickstart, the QwenCloud thinking guide, and the OpenRouter reasoning-tokens guide. 4 The stealth/ox-alpha record from OpenRouter’s models API, taken from this batch’s verified anchors rather than re-pulled for this table: pulled there 2026-08-22 and confirmed the same day by two separate pulls. Read versus inferred. Every rung name is read. Two cells carry a conflict between two sourced readings: Qwen3.8’s rung names, tagged unresolved and printed both ways, and Muse Code’s default, where the live binary is used and the disagreeing source is named in the cell. A third is marked undocumented rather than conflicted Codex ultra on the wire . DeepSeek V4’s row is a checked absence: the native API documentation was searched for an effort enum and none was found. Our previously published cross-vendor guide was read for cross-checking rather than used as a primary source, with one stated exception: row 17’s note that Muse Code’s none value is listed but unsupported in practice rests on that guide’s footnote, which itself attributes the point to Muse Code’s own documentation as checked on 2026-08-14. That vendor page was not re-fetched for this table, and the cell says so. Excluded, and why. Consumer UI dials covered in our consumer effort-dials explainer /blog/thinking-effort-dials-consumer-ai-explained ; cost or score figures tied to rungs; OpenAI’s o-series; and deprecated variants except where they explain a generational change. Known limitations. a The exact backend treatment of Codex’s ultra is not documented anywhere fetched: the CLI accepts it and the request completes, but the value sent on the wire is unconfirmed. b Qwen3.8-max-preview’s three rung names could not be reconciled between QwenCloud’s documentation and this kit’s own live check; both are recorded. c Muse Code’s default differs between the live binary and our own guide, published on August 15 and checked by its authors on August 14, eight days before this dataset’s as-of date; the live value is used here and the discrepancy is stated. d Vendor pages carry no per-page revision dates; they are cited as current documentation, and the as-of date is the dataset’s, not a guarantee that each page was unchanged on that day. 03 — The DatasetThe complete table: 18 rows, 19 lines, nine columns. The table is the asset; no row is summarised away. Rung names are printed in the order the vendor lists them, so OpenRouter’s two lines read top-down where Anthropic’s read bottom-up; the high position column always counts from the lowest rung. Each surface cell carries its primary source and the date that source itself states, or “current documentation” where the page shows none. Cells marked unresolved show both sourced readings. Data as of August 22, 2026. | | Surface vendor · primary source | Model s | Rung names, verbatim, vendor order | Rungs | Default | High position | Reasoning off? | Flag / parameter | |---|---|---|---|---|---|---|---|---| | Rows 1–4 · Anthropic | |||||||| | 1 | Claude Code CLI Anthropic | low, medium, high, xhigh, max . The ultracode meta-mode sends xhigh plus workflow orchestration and is not itself a rung. high Opus 4.7 alone defaults to xhigh xhigh or max . --effort