BigPizzaV3/CodexPlusPlus · error
Codex App directory not found
Error message
Codex App directory not found
What it means
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.
Source
Thrown at crates/codex-plus-core/src/launcher.rs:532
std::env::var("CODEX_PLUS_HELPER_BIND")
.ok()
.map(|value| value.trim().to_string())
.filter(|value| !value.is_empty())
.unwrap_or_else(|| "127.0.0.1".to_string())
}
#[async_trait(?Send)]
impl LaunchHooks for DefaultLaunchHooks {
fn resolve_app_dir(
&self,
app_dir: Option<&Path>,
settings: &BackendSettings,
) -> anyhow::Result<PathBuf> {
crate::app_paths::resolve_codex_app_dir_with_saved(
app_dir,
Some(settings.codex_app_path.as_str()),
)
.ok_or_else(|| anyhow::anyhow!("Codex App directory not found"))
}
fn select_debug_port(&self, requested: u16) -> u16 {
crate::ports::select_packaged_codex_debug_port(requested)
}
fn select_helper_port(&self, requested: u16) -> u16 {
crate::ports::select_platform_loopback_port(requested)
}
async fn load_settings(&self) -> anyhow::Result<BackendSettings> {
SettingsStore::default().load()
}
async fn run_provider_sync(&self) -> anyhow::Result<()> {
anyhow::bail!("provider sync requires launcher hooks with codex-plus-data integration")
}
View on GitHub (pinned to f2074595a2)
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
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/codex-plus-core/src/launcher.rs:532 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23).
Data as JSON: /api/errors/ebb533b962d96cb1.
Report an issue: GitHub.