diff --git a/crates/ide-agent/src/lib.rs b/crates/ide-agent/src/lib.rs index af22f4ac..464bbc04 100644 --- a/crates/ide-agent/src/lib.rs +++ b/crates/ide-agent/src/lib.rs @@ -547,6 +547,10 @@ impl AgentManager { o.current = Some(value); } s.task.model = model_of(&s.task.config).or(s.task.model.take()); + let provider = s.task.provider.clone(); + let config = s.task.config.clone(); + drop(s); + task.shared.remember(&provider, Some(&config), None); } task.approve_pending(); task.persist(); @@ -1191,7 +1195,6 @@ impl Task { (if known { reported } else { s.task.config.clone() }, s.wanted.clone()) }; config::add_client_options(&provider_id, &mut options); - self.shared.remember(&provider_id, Some(&options), None); for choice in &wanted { // An option the session doesn't offer yet is set once it does (`apply_late_choices`). let Some(o) = options.iter().find(|o| o.id == choice.id).cloned() else { continue }; @@ -1220,6 +1223,7 @@ impl Task { Err(e) => tracing::warn!("agent task {}: setting {} to {} failed: {e}", self.id, o.id, choice.value), } } + self.shared.remember(&provider_id, Some(&options), None); { let mut s = self.state.lock(); s.task.model = model_of(&options).or(s.task.model.take());