fix(interface): offer codex none and pi ultracode, which both CLIs accept - #122
Merged
Conversation
…s accept Measured against the pinned CLI binaries rather than the adapters' own belief about them, two levels were reachable all along and the picker hid them: codex enumerates `none` FIRST in its own invalid-value error, so turning thinking off was expressible the whole time it was unselectable. `pi --thinking` accepts `max`, which canonical `ultracode` maps to, so pi's top rung was unreachable from the UI. The docstring is corrected in the same change — it was itself a stale hand-written table asserting codex started at `minimal` and pi stopped at `xhigh`. It now records what was measured, including that codex accepts `ultra` despite its own enumeration omitting it, and that claude-code WARNS-and-substitutes rather than rejecting an unsupported value, which is why its set must not overstate: an overstated level there is a silent downgrade rather than an error.
tangletools
approved these changes
Aug 4, 2026
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — e96ef4a1
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
tangletools · auto-approval · reason: drewstone_author · 2026-08-04T05:54:53Z
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
reasoningEffortsForis what the sandbox picker offers. Measured against the pinned CLI binaries, two levels were reachable all along and the picker hid them:none— the API enumeratesnonefirst in its own invalid-value error, so turning thinking off was expressible the entire time it was unselectable.ultracode—pi --thinkingacceptsmax, which canonicalultracodemaps to, so pi's top rung was unreachable from the UI.The docstring above the table was itself a stale hand-written claim: it asserted codex starts at
minimaland pi stops atxhigh. Both are wrong against the binaries.Measured
Against the versions
agent-dev-containerpins (infra/nix/agent-clis.nix), not a developer PATH — those disagree by a minor version on every harness:--thinking/--no-thinkingTwo things worth carrying in the docstring, both recorded:
ultraend-to-end (session header echoesreasoning effort: ultra) even though its own enumeration stops atmax.ultra2is rejected, so this is a real value, not lax parsing.--effortprints "ignoring it and using the default effort" and runs anyway — so an overstated set there is a silent downgrade, not an error. Its set must stay conservative.The upstream probe and its drift gate live in agent-dev-container (
scripts/probe-reasoning-capabilities.mjs,docs/reference/reasoning-capabilities.json), where a test now asserts the shipped mapper never emits a value the CLI was not measured to accept.Verification
agent-interface: 332/332 tests,tsc --noEmitclean, run in a fresh worktree offmainwith a clean install.harness-capabilities.test.tsfor both sets and for themaxEffort: "high"narrowing case, which now includesnone.