fix: replace panics with user-friendly errors in CLI session builder#7901
Merged
DOsinga merged 2 commits intoblock:mainfrom Mar 26, 2026
Merged
Conversation
`resolve_provider_and_model()` used `.expect()` which causes a raw panic with a stack trace when no provider or model is configured. Users see a frightening Rust backtrace instead of a helpful message. Replace all 7 `.expect()` calls in builder.rs with `.unwrap_or_else()` that prints a styled error via `output::render_error()` and exits cleanly. This matches the existing error handling pattern already used in the same file (e.g. line 390). Fixes block#7889
michaelneale
added a commit
that referenced
this pull request
Mar 26, 2026
* main: (337 commits) fix: replace panics with user-friendly errors in CLI session builder (#7901) fix: read GOOSE_CONTEXT_LIMIT from config.yaml, not just env vars (#7900) fix: deliver truncation notice as separate content block (#7899) fix: use platform-appropriate commands in developer extension instructions (#7898) fix: replace any with proper SVG types in icon components (#7873) chore: remove debug console.log statements, stale comments, and dead code (#8142) feat: Gemini OAuth provider (#8129) chore(deps): bump picomatch from 2.3.1 to 2.3.2 in /documentation (#8123) feat: show installed skills in UI (#7910) fix(deps): gate keyring platform features behind target-specific deps (#8039) chore(deps): bump yaml from 2.8.2 to 2.8.3 in /evals/open-model-gym/suite (#8124) fix: strip message wrapper in CLI session title generation (#7996) fix(providers): fall back to configured models when models endpoint fetch fails (#7530) chore(deps): bump brace-expansion from 5.0.3 to 5.0.5 in /evals/open-model-gym/suite (#8139) fix: prevent Ollama provider from hanging on tool-calling requests (#7723) fix: VMware Tanzu Platform provider - bug fixes, streaming, UI improvements (#8126) feat: allow GOOSE_CLI_SHOW_THINKING to be set in config.yaml (#8097) fix: GitHub Copilot auth fails to open browser in Desktop app (#6957) (#8019) fix(ci): produce .tar.gz archives for Zed ACP registry compatibility (#8054) feat: add GOOSE_SHOW_FULL_OUTPUT config to disable tool output truncation (#7919) ... # Conflicts: # crates/goose/src/providers/formats/openai.rs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
resolve_provider_and_model()andresolve_session_id()used.expect()which causes a raw panic with a full Rust stack trace when no provider or model is configured. Users see a frightening backtrace instead of a helpful message.Changes
Replace all 7
.expect()calls inbuilder.rswith.unwrap_or_else()that prints a styled error viaoutput::render_error()and exits cleanly. This matches the existing error handling pattern already used in the same file (e.g.ModelConfig::new()on line 390).Before
After
Converted calls
current_dir()failure → styled error + exitFixes #7889