{"record":{"id":"ebb533b962d96cb1","repo":"BigPizzaV3/CodexPlusPlus","slug":"codex-app-directory-not-found","errorCode":null,"errorMessage":"Codex App directory not found","messagePattern":"Codex App directory not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/launcher.rs","lineNumber":532,"sourceCode":"    std::env::var(\"CODEX_PLUS_HELPER_BIND\")\n        .ok()\n        .map(|value| value.trim().to_string())\n        .filter(|value| !value.is_empty())\n        .unwrap_or_else(|| \"127.0.0.1\".to_string())\n}\n\n#[async_trait(?Send)]\nimpl LaunchHooks for DefaultLaunchHooks {\n    fn resolve_app_dir(\n        &self,\n        app_dir: Option<&Path>,\n        settings: &BackendSettings,\n    ) -> anyhow::Result<PathBuf> {\n        crate::app_paths::resolve_codex_app_dir_with_saved(\n            app_dir,\n            Some(settings.codex_app_path.as_str()),\n        )\n        .ok_or_else(|| anyhow::anyhow!(\"Codex App directory not found\"))\n    }\n\n    fn select_debug_port(&self, requested: u16) -> u16 {\n        crate::ports::select_packaged_codex_debug_port(requested)\n    }\n\n    fn select_helper_port(&self, requested: u16) -> u16 {\n        crate::ports::select_platform_loopback_port(requested)\n    }\n\n    async fn load_settings(&self) -> anyhow::Result<BackendSettings> {\n        SettingsStore::default().load()\n    }\n\n    async fn run_provider_sync(&self) -> anyhow::Result<()> {\n        anyhow::bail!(\"provider sync requires launcher hooks with codex-plus-data integration\")\n    }\n","sourceCodeStart":514,"sourceCodeEnd":550,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/launcher.rs#L514-L550","documentation":"DefaultLaunchHooks::resolve_app_dir converts the result of resolve_codex_app_dir_with_saved into a Result. That resolver returns None when neither the explicit app_dir argument nor the saved codex_app_path setting points at an existing Codex App directory, so launching cannot proceed without a valid app location.","triggerScenarios":"Thrown at crates/codex-plus-core/src/launcher.rs:532 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set the Codex app path in CodexPlusPlus settings","Pass an explicit app_dir when launching","Verify the Codex application is installed at the configured location"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}