Skip to content

reasoning effort picker

Kazushi Kamegawa edited this page Jul 20, 2026 · 2 revisions

Persistent Reasoning Effort Picker

Date: 2026-07-20
Tracking: Issue #85; sub-issues #93, #94, #95
Status: Approved for implementation in PR #89

Corrected design

  • Preserve hidden default-model metadata separately from the visible model list so its reasoning and service-tier capabilities remain available.
  • Build ordered, deduplicated options from supportedReasoningEfforts. Sanitize every app-server description before Remote UI exposure.
  • Persist the desired effort in ReasoningEffortId. Unsupported-model fallback displays Default without overwriting the saved value.
  • Default inherits the effective Codex configuration. Track effective effort from thread start, resume, fork, and settings updates.
  • turn/start.effort is sticky. /reasoning is therefore thread-scoped, consumed only after a successful turn start, and explicitly restored on the following turn.
  • Apply the same canonical effort to top-level effort and collaboration-mode reasoning_effort.
  • /status reports desired, effective, and pending one-turn values separately.

Contract and verification

  • Contract v13 adds override-presence flags, nullable values, effective thread settings, and hidden default metadata.
  • Test canonical casing, malicious descriptions, hidden defaults, persistence, unsupported-model round trips, thread isolation, failed starts, restoration, plan-mode starts, Remote UI serialization, and XAML accessibility.

Clone this wiki locally