mirror of
https://github.com/openai/codex.git
synced 2026-05-17 17:53:06 +00:00
## Why The `plugin/list` force-sync path can race app-server startup's curated plugin cache refresh. Startup was capturing the configured curated plugin IDs from the initial config snapshot. If `plugin/list` with `forceRemoteSync` removed curated plugin entries from `config.toml` while that background refresh was still in flight, the startup task could recreate cache directories for plugins that had just been uninstalled. That leaves the `plugin/list` response logically correct but the on-disk cache stale, which matches the flaky Ubuntu arm failure seen in `codex-app-server::all suite::v2::plugin_list::plugin_list_force_remote_sync_reconciles_curated_plugin_state` while validating [#16047](https://github.com/openai/codex/pull/16047). ## What - change `codex-rs/core/src/plugins/manager.rs` so startup curated-repo refresh rereads the current user `config.toml` before deciding which curated plugin cache entries to refresh - factor the configured-plugin parsing so the same logic can be reused from either the config layer stack or the persisted user config value - add a regression test that verifies curated plugin IDs are read from the latest user config state before cache refresh runs ## Testing - `cargo test -p codex-core configured_curated_plugin_ids_from_codex_home_reads_latest_user_config -- --nocapture` - `cargo test -p codex-app-server suite::v2::plugin_list::plugin_list_force_remote_sync_reconciles_curated_plugin_state -- --nocapture` - `just argument-comment-lint`