diff --git a/crates/goose-cli/src/session/builder.rs b/crates/goose-cli/src/session/builder.rs index 6b1e6a0b83ad..33bf0625a817 100644 --- a/crates/goose-cli/src/session/builder.rs +++ b/crates/goose-cli/src/session/builder.rs @@ -359,7 +359,10 @@ fn resolve_provider_and_model( .or(saved_provider) .or_else(|| recipe_settings.and_then(|s| s.goose_provider.clone())) .or_else(|| config.get_goose_provider().ok()) - .expect("No provider configured. Run 'goose configure' first"); + .unwrap_or_else(|| { + output::render_error("No provider configured. Run 'goose configure' first."); + process::exit(1); + }); let model_name = session_config .model @@ -367,7 +370,10 @@ fn resolve_provider_and_model( .or_else(|| saved_model_config.as_ref().map(|mc| mc.model_name.clone())) .or_else(|| recipe_settings.and_then(|s| s.goose_model.clone())) .or_else(|| config.get_goose_model().ok()) - .expect("No model configured. Run 'goose configure' first"); + .unwrap_or_else(|| { + output::render_error("No model configured. Run 'goose configure' first."); + process::exit(1); + }); let model_config = if session_config.resume && saved_model_config @@ -402,11 +408,17 @@ async fn resolve_session_id( session_manager: &goose::session::session_manager::SessionManager, ) -> String { if session_config.no_session { - let working_dir = std::env::current_dir().expect("Could not get working directory"); + let working_dir = std::env::current_dir().unwrap_or_else(|e| { + output::render_error(&format!("Could not get working directory: {}", e)); + process::exit(1); + }); let session = session_manager .create_session(working_dir, "CLI Session".to_string(), SessionType::Hidden) .await - .expect("Could not create session"); + .unwrap_or_else(|e| { + output::render_error(&format!("Could not create session: {}", e)); + process::exit(1); + }); session.id } else if session_config.resume { if let Some(ref session_id) = session_config.session_id { @@ -445,7 +457,10 @@ async fn handle_resumed_session_workdir(agent: &Agent, session_id: &str, interac process::exit(1); }); - let current_workdir = std::env::current_dir().expect("Failed to get current working directory"); + let current_workdir = std::env::current_dir().unwrap_or_else(|e| { + output::render_error(&format!("Failed to get current working directory: {}", e)); + process::exit(1); + }); if current_workdir == session.working_dir { return; } @@ -461,7 +476,10 @@ async fn handle_resumed_session_workdir(agent: &Agent, session_id: &str, interac )) .initial_value(true) .interact() - .expect("Failed to get user input"); + .unwrap_or_else(|e| { + output::render_error(&format!("Failed to get user input: {}", e)); + process::exit(1); + }); if change_workdir { if !session.working_dir.exists() { @@ -566,8 +584,13 @@ async fn configure_session_prompts( let system_prompt_file: Option = config.get_param("GOOSE_SYSTEM_PROMPT_FILE_PATH").ok(); if let Some(ref path) = system_prompt_file { - let override_prompt = - std::fs::read_to_string(path).expect("Failed to read system prompt file"); + let override_prompt = std::fs::read_to_string(path).unwrap_or_else(|e| { + output::render_error(&format!( + "Failed to read system prompt file '{}': {}", + path, e + )); + process::exit(1); + }); session.agent.override_system_prompt(override_prompt).await; } }