Gemini CLI v0.65.0: resumed sessions keep their history, no more auth loops, custom OTLP headers#
Published by Alex Sorokoletov
Part of the Gemini CLI Version Tracker series. | Gemini CLI on GitHub | Releases
Gemini CLI v0.65.0 is a reliability release over v0.64.0. Its one net-new configuration variable, GEMINI_TELEMETRY_OTLP_HEADERS, adds support for custom OTLP headers in the telemetry configuration. The rest repairs session resume, which could duplicate tool turns or delete history on a quick exit, and authentication, which could loop on verification or OAuth retry.[1]
Resumed sessions stay intact#
Three fixes land on the session lifecycle. Resuming a session no longer produces duplicate tool-response turns.[2] A quick exit no longer deletes the history of a resumed session.[3] A rapid Ctrl-C interruption no longer poisons the session.[4] Alongside these, the CLI enforces a terminal user-turn invariant and normalizes request contents before sending, and the text of an ask_user question is retained in the tool-result display.[5]
Authentication stops looping#
The auth path gets three fixes. Infinite verification and OAuth retry loops are prevented.[6] Re-selecting Google login clears the cached credentials first.[7] OAuth callback iss parameter validation is aligned with RFC 9207 metadata.[8]
New environment variable#
| Variable | What It Does |
|---|---|
GEMINI_TELEMETRY_OTLP_HEADERS | Supplies custom headers for OTLP telemetry export. v0.65.0 adds support for custom OTLP headers in the telemetry configuration, joining the existing endpoint and protocol variables.[9] |
Trust, input, and extensions#
| Area | What changed |
|---|---|
| Untrusted folders | Workspace settings are enforced read-only in untrusted folders.[10] |
| Command trust | False positives on untrusted command flags and compound loops are eliminated.[11] |
| Interactive input | A hang on the Enter keypress in interactive mode is resolved.[12] |
| Ctrl+O expand | Expanding with Ctrl+O no longer triggers unnecessary terminal clears and scroll resets.[13] |
| Directory references | A directory reference written as @<dir> skips eager recursive file reading.[14] |
| Extensions | When one extension fails the allowlist check, the others keep loading.[15] |
| Ignore filtering | Ignore filtering is optimized and subtree pruning is enabled.[16] |
| IDE companion | IdeServer.stop() resolves while MCP sessions are open.[17] |
The failure modes that strand a long session#
The weight of v0.65.0 sits on two paths that can end a run without any mistake by the user: a resumed session that deletes or duplicates its own history, and an auth flow caught in a verification or retry loop. Both are now prevented, so a resume or a login attempt completes instead of looping or discarding state. The ask_user text staying in the result and the terminal user-turn invariant keep the conversation record consistent across a resume. These are failure modes that surface once you rely on resuming work, not when the CLI runs one shot at a time.
The new telemetry variable fits the same frame from the operations side. The OTLP endpoint and protocol were already configurable; custom headers let an export carry whatever the receiving collector requires to accept it, which the endpoint and protocol alone could not supply.
The remaining fixes narrow sharp edges around trust and input: read-only workspace settings in untrusted folders, fewer false positives when a command flag or compound expression is checked for trust, and an interactive prompt that no longer hangs on Enter or redraws the whole terminal on a Ctrl+O expand.
Sources#
- [1] Gemini CLI v0.65.0 release notes (v0.64.0 to v0.65.0)
- [2] PR #29618: avoid duplicate tool response turns when resuming sessions
- [3] PR #29584: prevent deletion of resumed session history on quick exit (#29198)
- [4] PR #29728: prevent session poisoning on rapid Ctrl-C interruption
- [5] PR #29612: enforce terminal user turn invariant and normalize request contents, PR #29677: retain ask_user question text in the tool result display
- [6] PR #29655: prevent infinite verification and OAuth retry loops
- [7] PR #29643: clear cached credentials when re-selecting Google login
- [8] PR #29616: align OAuth callback iss parameter validation with RFC 9207 metadata
- [9] PR #29641: support custom OTLP headers in telemetry configuration
- [10] PR #29583: enforce read-only workspace settings in untrusted folders
- [11] PR #29672: eliminate false positives on untrusted command flags and compound loops
- [12] PR #29476: resolve hang on Enter keypress in interactive mode (#23297)
- [13] PR #29640: prevent unnecessary terminal clears and scroll resets when expanding with Ctrl+O
- [14] PR #29617: skip eager recursive file reading for @<directory> references
- [15] PR #29720: keep loading other extensions when one fails the allowlist check
- [16] PR #29582: optimize ignore filtering and enable subtree pruning (#29077)
- [17] PR #29674: make IdeServer.stop() resolve while MCP sessions are open
This analysis is based on publicly available open-source code and release metadata, conducted for educational and research purposes. All trademarks and software referenced belong to their respective owners.
Previous Gemini CLI analysis: v0.64.0 (October 13, 2026)
All 7 Gemini CLI analyses: Gemini CLI Version Tracker · Official Gemini CLI changelog