BigPizzaV3/CodexPlusPlus · error · anyhow::Error

missing cached {plugin} plugin for openai-bundled marketplac

Error message

missing cached {plugin} plugin for openai-bundled marketplace

What it means

On Windows, staging the openai-bundled marketplace (crates/codex-plus-core/src/computer_use_guard.rs:639) does not ship plugin files itself — it copies each plugin in BUNDLED_MARKETPLACE_PLUGINS from the local cache via latest_cache_plugin_version(home, plugin). If no cached version of any listed plugin exists, the guard bails with 'missing cached <plugin> plugin for openai-bundled marketplace' before completing the staging directory.

Source

Thrown at crates/codex-plus-core/src/computer_use_guard.rs:639

    });
    candidates.into_iter().next()
}

#[cfg(windows)]
fn build_marketplace_from_cache(home: &Path, staging: &Path) -> anyhow::Result<()> {
    let plugins_dir = staging.join("plugins");
    std::fs::create_dir_all(staging.join(".agents").join("plugins"))?;
    std::fs::create_dir_all(&plugins_dir)?;
    std::fs::write(
        staging
            .join(".agents")
            .join("plugins")
            .join("marketplace.json"),
        bundled_marketplace_json().as_bytes(),
    )?;
    for plugin in BUNDLED_MARKETPLACE_PLUGINS {
        let Some(source) = latest_cache_plugin_version(home, plugin) else {
            anyhow::bail!("missing cached {plugin} plugin for openai-bundled marketplace");
        };
        copy_dir_recursive(&source, &plugins_dir.join(plugin))?;
    }
    Ok(())
}

#[cfg(windows)]
fn bundled_marketplace_json() -> String {
    let plugins = [
        ("browser", "Engineering"),
        ("chrome", "Productivity"),
        ("computer-use", "Productivity"),
        ("latex", "Research"),
    ]
    .into_iter()
    .map(|(name, category)| {
        serde_json::json!({
            "name": name,

View on GitHub (pinned to 1f431ae49b)

Solutions

  1. Run Codex once while online so it downloads and caches the required plugins, then re-run the guard/staging
  2. Check the plugin cache directory under the home dir for the expected plugin version subfolders and re-populate it if a cleanup tool removed them
  3. Verify you are on current Codex++/Codex versions — a cache-layout change on either side makes old caches unfindable
  4. If the machine must stay offline, pre-seed the cache from another machine with the same plugin versions

Example fix

# before: fresh install, guard runs offline, cache is empty
# -> missing cached computer-use plugin for openai-bundled marketplace

# after: let Codex populate the plugin cache once, then re-run
# 1) launch Codex with network access and trigger plugin install
# 2) re-run the guard / manager action; staging now finds the cached plugins
Defensive patterns

Strategy: validation

Validate before calling

// Before invoking the guard on Windows, confirm cached plugins exist
for plugin in ["browser", "chrome", "computer-use"] { // mirror BUNDLED_MARKETPLACE_PLUGINS
    ensure!(latest_cache_plugin_version(home, plugin).is_some(),
        "plugin '{plugin}' not cached — run Codex online once first");
}

Type guard

fn bundled_plugins_cached(home: &std::path::Path) -> bool {
    BUNDLED_MARKETPLACE_PLUGINS.iter()
        .all(|p| latest_cache_plugin_version(home, p).is_some())
}

Try / catch

match stage_bundled_marketplace(home) {
    Ok(()) => Ok(()),
    Err(e) if e.to_string().contains("missing cached") => {
        // expected on fresh/offline installs — degrade gracefully and guide the user
        eprintln!("run Codex once online to populate the plugin cache, then retry");
        Err(e)
    }
    Err(e) => Err(e),
}

Prevention

When it happens

Trigger: Running the computer-use guard on Windows before Codex has ever downloaded the required plugins (fresh install, always-offline machine), or after the plugin cache directory was cleared/deleted; cache layout change between versions can also make lookups miss.

Common situations: Fresh Windows install where the user enables computer-use features before the first successful online Codex session; disk-cleanup tools purging the cache; CI environments with a pristine home directory; version upgrades that moved/renamed cached plugin directories.

Related errors


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@1f431ae49b (2026-08-16). Data as JSON: /api/errors/b85cf42362c2618f. Report an issue: GitHub.