BigPizzaV3/CodexPlusPlus · error

{}

Error message

{}

What it means

After the enabled/paused gates, apply_dream_skin_live runs platform_identity_check on the configured codex_app_path. If the check level is DreamSkinCheckLevel::Fail, the library bails with the identity check's own message (bail!("{}", identity.message)). The error text is therefore dynamic and describes why the target app failed platform/identity verification (wrong path, not the expected app binary, unsupported platform, etc.).

Solutions

  1. Read the actual identity.message in the error output — it names the exact failure reason.
  2. Verify settings.codex_app_path points to the real, current Codex app executable.
  3. Re-select/refresh the app path in the manager so the identity check passes.
  4. Confirm your platform/OS build is supported by the Dream Skin runtime.
  5. Re-run apply_dream_skin_live after fixing the path/platform issue.

Example fix

// before: stale path
{"codex_app_path": "/Applications/Codex-old.app/Contents/MacOS/Codex"}
// after: current app path
{"codex_app_path": "/Applications/Codex.app/Contents/MacOS/Codex"}
Defensive patterns

Strategy: try-catch

Validate before calling

let settings = SettingsStore::default().load()?;
let identity = platform_identity_check(&settings.codex_app_path);
if identity.level == DreamSkinCheckLevel::Fail {
    anyhow::bail!("precheck failed: {}", identity.message);
}

Type guard

fn identity_ok(level: &DreamSkinCheckLevel) -> bool {
    !matches!(level, DreamSkinCheckLevel::Fail)
}

Try / catch

match apply_dream_skin_live(port, helper).await {
    Err(e) => eprintln!("identity/live-apply failed: {e}") /* message includes identity.message */,
    ok => ok,
}

Prevention

When it happens

Trigger: Calling apply_dream_skin_live when platform_identity_check(&settings.codex_app_path) returns level == DreamSkinCheckLevel::Fail — e.g. codex_app_path points to a missing, renamed, or non-Codex binary, or the platform is unsupported.

Common situations: Codex app updated/moved so the saved path no longer matches; user pointed codex_app_path at the wrong executable; running on an OS/arch the identity check rejects; version change altering app identity signatures.

Understand the failure class

Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.

Related errors


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@b1ed92e5e4 (2026-09-19). Data as JSON: /api/errors/d869a179e13032ad. Report an issue: GitHub.

Appendix: source

Thrown at crates/codex-plus-core/src/dream_skin_runtime.rs:293

        live_applied,
        checks,
    }
}

pub async fn apply_dream_skin_live(
    debug_port: u16,
    helper_port: u16,
) -> anyhow::Result<DreamSkinRuntimeStatus> {
    let settings = SettingsStore::default().load()?;
    if !settings.enhancements_enabled || !settings.codex_app_dream_skin_enabled {
        bail!("Dream Skin is not enabled");
    }
    if settings.codex_app_dream_skin_paused {
        bail!("Dream Skin is paused");
    }
    let identity = platform_identity_check(&settings.codex_app_path);
    if identity.level == DreamSkinCheckLevel::Fail {
        bail!("{}", identity.message);
    }
    let target = primary_target(debug_port).await?;
    let websocket = target
        .web_socket_debugger_url
        .as_deref()
        .context("Codex renderer has no WebSocket URL")?;
    let probe = crate::assets::dream_skin_live_update_probe_script();
    let live_probe = crate::bridge::evaluate_script(websocket, &probe)
        .await
        .ok()
        .and_then(|response| {
            response
                .pointer("/result/result/value")
                .and_then(Value::as_str)
                .map(str::to_string)
        });
    let live_signatures = live_probe.as_deref().and_then(|value| {
        serde_json::from_str::<Value>(value).ok().map(|parsed| {

View on GitHub (pinned to b1ed92e5e4)