fix(cli): gracefully handle --resume when no sessions exist#21429
fix(cli): gracefully handle --resume when no sessions exist#21429SandyTao520 merged 2 commits intomainfrom
Conversation
Instead of crashing with process.exit() when using -r/--resume in a directory with no previous sessions, fall back to a normal fresh session and display a startup warning in the UI. - Use SessionError.noSessionsFound() in resolveSession() instead of a generic Error for proper error discrimination - Catch NO_SESSIONS_FOUND specifically in gemini.tsx and push a startup warning instead of exiting - Other session errors (invalid ID, etc.) still exit as before
|
Hi @SandyTao520, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this. We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines. Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed. Thank you for your understanding and for being a part of our community! |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the robustness and user experience of the Gemini CLI by improving how the Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Size Change: -171 B (0%) Total Size: 26 MB ℹ️ View Unchanged
|
There was a problem hiding this comment.
Code Review
This pull request gracefully handles the case where --resume is used without any existing sessions, preventing a CLI crash. This is achieved by introducing a typed SessionError and specifically handling the NO_SESSIONS_FOUND case to show a warning and start a fresh session. The changes are well-implemented and include corresponding tests. I've identified a minor redundancy in one of the new tests that could be improved for better maintainability.
Address PR review feedback by consolidating two separate resolveSession calls into a single rejects.toSatisfy() assertion.
Summary
Running
gemini -r(or--resume) in a directory with no previous sessions crashes withError resuming session: No previous sessions found for this project.and exits with a fatal error code. This PR makes it gracefully fall back to starting a fresh session and displays the message as a startup warning in the UI instead.Details
SessionSelector.resolveSession()was throwing a genericErrorwhen no sessions existed. Changed it to use the existingSessionError.noSessionsFound()factory, which returns a typedSessionErrorwith codeNO_SESSIONS_FOUND.gemini.tsx, the--resumeerror handler now checks forSessionErrorwithNO_SESSIONS_FOUNDspecifically: instead of callingprocess.exit(), it pushes a high-priority startup warning and continues with a fresh session. All other session errors (invalid ID, corrupt session, etc.) still exit as before.Related Issues
How to Validate
gemini -rPre-Merge Checklist