Skip to content

Add model reasoning level for codex.#11101

Merged
liliwilson merged 5 commits into
masterfrom
lili/remote-1706-model-choice-for-codex-improvments
May 17, 2026
Merged

Add model reasoning level for codex.#11101
liliwilson merged 5 commits into
masterfrom
lili/remote-1706-model-choice-for-codex-improvments

Conversation

@liliwilson
Copy link
Copy Markdown
Contributor

@liliwilson liliwilson commented May 16, 2026

Description

This PR adds a few improvements to the model selector for third-party cloud agents:

  • Add reasoning levels for codex models—we set up the reasoning level by writing to model_reasoning_effort in the codex config
  • Make sure we show the third-party model selector during environment setup, rather than an unrelated model choice
  • Make sure the default option is always accessible via the dropdown

Testing

Tested locally with different harnesses and model selection choices.

  • I have manually tested my changes locally with ./script/run

Screenshots / Videos

Loom attached to the associated server PR: https://github.com/warpdotdev/warp-server/pull/11224

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

@cla-bot cla-bot Bot added the cla-signed label May 16, 2026
@liliwilson liliwilson force-pushed the lili/remote-1706-model-choice-for-codex-improvments branch from e86ccec to 70713a2 Compare May 16, 2026 08:07
}

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct HarnessModelConfig {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this struct, even though it's slightly diff than the serde shape we get from the API, because it makes it easier to reason about state in the driver code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

@liliwilson liliwilson marked this pull request as ready for review May 16, 2026 08:11
@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 16, 2026

@liliwilson

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@liliwilson liliwilson requested a review from abhishekp106 May 16, 2026 08:12
Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR threads third-party harness model config and Codex reasoning level through task snapshots, harness startup, GraphQL harness availability, settings persistence, and the V2 cloud model selector UI.

Concerns

  • ⚠️ [IMPORTANT] This changes user-facing model selector behavior, but the PR description does not include an accessible screenshot or screen recording; the Loom line is empty and does not link to media. For this user-facing change, please include screenshots or a screen recording demonstrating it working end to end.
  • 💡 [SUGGESTION] Existing saved third-party harness model selections were stored as string values, so the new persisted object shape should accept or migrate legacy values to avoid silently dropping users' saved model choices.

Verdict

Found: 0 critical, 1 important, 1 suggestion

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

},
last_selected_harness_model: LastSelectedHarnessModel {
type: HashMap<String, String>,
type: HashMap<String, HarnessModelSelection>,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [SUGGESTION] Existing last_selected_harness_model entries are stored as HashMap<String, String> in private prefs. Changing the value type without legacy parsing means users with saved selections fall back to the default map on next load, so add a migration/deserializer that accepts old string values.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about this, but seeing as it hasn't hit prod yet I don't think this is worth doing. The new HarnessModelSelection struct also adds a layer of indirection so we can more easily add fields to this later without needing a legacy handling story

Copy link
Copy Markdown
Contributor

@abhishekp106 abhishekp106 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for grabbing this!

}

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct HarnessModelConfig {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

@liliwilson liliwilson force-pushed the lili/remote-1706-model-choice-for-codex-improvments branch from d7f1049 to 50de452 Compare May 17, 2026 04:22
@liliwilson liliwilson merged commit 936a2ed into master May 17, 2026
25 checks passed
@liliwilson liliwilson deleted the lili/remote-1706-model-choice-for-codex-improvments branch May 17, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants