Skip to content

Model whitelist injection fails: app-server-manager-signals- module not found in Codex 26.623+ #1324

Description

@Marnie0415

Description

The model whitelist unlock feature (codexAppModelWhitelistUnlock) fails to inject custom models into the Codex app model selector. The inject script cannot locate the app-server-manager-signals- module asset in the Codex app.

Error from Logs

renderer.model_app_server_request_patch_failed
Error: 鏈壘鍒?Codex App asset: app-server-manager-signals-

This error repeats on every scan cycle (model_whitelist_refresh_scheduled).

Environment

  • Codex++ version: 1.2.31 (also reproducible on 1.2.30)
  • Codex App version: 26.623.13972.0 (Windows x64)
  • OS: Windows 11

Steps to Reproduce

  1. Install Codex++ 1.2.31
  2. Configure a relay profile with modelList containing custom models (e.g. deepseek-v4-flash\ndeepseek-v4-pro)
  3. Set codexAppModelWhitelistUnlock: true in settings.json
  4. Start Codex++ and open the Codex app
  5. Check the model selector - only default models appear, custom models are missing

Root Cause Analysis

In renderer-inject.js, the function installAppServerModelRequestPatch() calls loadCodexAppModule("app-server-manager-signals-") which uses codexAppAssetUrl() to search for a JS file matching /assets/app-server-manager-signals-*.js in the loaded scripts and performance entries.

In Codex version 26.623+, this module appears to have been renamed, removed, or restructured as a dynamic chunk. The asset discovery mechanism cannot find it, causing the patch to fail.

The /codex-model-catalog bridge endpoint also returns {"status":"not_configured"} despite the relay profile having a populated modelList, which suggests the Rust backend may also need adjustment to properly read and serve the model catalog from relay profiles.

Suggestion

  1. Update the asset discovery in loadCodexAppModule() to handle the new Codex app module structure
  2. Add a graceful fallback in installAppServerModelRequestPatch() so the other whitelist patch layers (Statsig config, React state, Response JSON) continue working when layer 3 fails
  3. Verify that read_codex_model_catalog() in model_catalog.rs correctly serves models from relay_profile_model_ids() for relay profiles with populated modelList

Workaround

Currently using a batch script to switch between relay profiles by directly editing settings.json and restarting Codex++, bypassing the model selector UI entirely.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions