Skip to content

Commit 6846bc1

Browse files
authored
hard disable remote models refresh when feature is disabled (#8687)
We were refreshing on tag mismatch even with feature is disabled
1 parent efd2d76 commit 6846bc1

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

codex-rs/core/src/codex.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2631,7 +2631,10 @@ async fn try_run_turn(
26312631
}
26322632
ResponseEvent::ModelsEtag(etag) => {
26332633
// Update internal state with latest models etag
2634-
sess.services.models_manager.refresh_if_new_etag(etag).await;
2634+
sess.services
2635+
.models_manager
2636+
.refresh_if_new_etag(etag, sess.features.enabled(Feature::RemoteModels))
2637+
.await;
26352638
}
26362639
ResponseEvent::Completed {
26372640
response_id: _,

codex-rs/core/src/models_manager/manager.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,15 @@ impl ModelsManager {
8686
if self.try_load_cache().await {
8787
return Ok(());
8888
}
89-
self.refresh_available_models_no_cache().await
89+
self.refresh_available_models_no_cache(config.features.enabled(Feature::RemoteModels))
90+
.await
9091
}
9192

92-
pub(crate) async fn refresh_available_models_no_cache(&self) -> CoreResult<()> {
93-
if self.auth_manager.get_auth_mode() == Some(AuthMode::ApiKey) {
93+
pub(crate) async fn refresh_available_models_no_cache(
94+
&self,
95+
remote_models_feature: bool,
96+
) -> CoreResult<()> {
97+
if !remote_models_feature || self.auth_manager.get_auth_mode() == Some(AuthMode::ApiKey) {
9498
return Ok(());
9599
}
96100
let auth = self.auth_manager.auth();
@@ -157,12 +161,15 @@ impl ModelsManager {
157161
}
158162
OPENAI_DEFAULT_API_MODEL.to_string()
159163
}
160-
pub async fn refresh_if_new_etag(&self, etag: String) {
164+
pub async fn refresh_if_new_etag(&self, etag: String, remote_models_feature: bool) {
161165
let current_etag = self.get_etag().await;
162166
if current_etag.clone().is_some() && current_etag.as_deref() == Some(etag.as_str()) {
163167
return;
164168
}
165-
if let Err(err) = self.refresh_available_models_no_cache().await {
169+
if let Err(err) = self
170+
.refresh_available_models_no_cache(remote_models_feature)
171+
.await
172+
{
166173
error!("failed to refresh available models: {err}");
167174
}
168175
}

0 commit comments

Comments
 (0)