Originally published at https://aicoding-guide.com.
Gemini CLI v0.66.0 adds no features. All 26 entries under "What's Changed" are fixes, refactors or release chores.
One of them is the kind worth knowing about, though: a setting the documentation already describes was not actually working. The keys array in keybindings.json works as of this release.
Key point
What this article covers
- How to write the
keysarray, and what to check when a binding does nothing- Settings placeholders now resolved after
.envfiles load~/.gitconfigpreserved in shell and git environments
The keys array in keybindings.json now works
The fix is PR #29773. Key bindings live in your home gemini directory, typically ~/.gemini/keybindings.json. It is a JSON array in a schema close to VS Code's, with a command and either a key or a keys array per entry.
[
{
"command": "edit.clear",
"key": "cmd+l"
},
{
"command": "-app.toggleYolo",
"key": "ctrl+y"
},
{
"command": "-input.newline",
"keys": ["alt+enter", "ctrl+enter", "shift+enter", "ctrl+j"]
},
{
"command": "input.newline",
"keys": ["enter", "shift+enter"]
}
]
| Form | What it means |
|---|---|
- prefixed on command
|
Unbinds the key, defaults included |
A keys array |
Binds or unbinds several keys in one entry; the first key is the primary shortcut shown in the UI |
| Modifiers |
ctrl, shift, alt (opt / option), cmd (meta) |
When a binding never fires, suspect the terminal
The documentation notes that terminals often translate complex combinations into special characters, losing the modifier information on the way. Its example isshift+5arriving as%, where "you must bind to the literal character%as bindings toshift+5will never fire." To see exactly what is sent, enableDebug Keystroke Loggingand pressf12to open the debug log console.
Matching is explicit: a binding for ctrl+f fires on ctrl+f only, not ctrl+shift+f or alt+ctrl+f. And because the same key can be bound to different commands in different contexts, adding a binding does not unbind the key from anything else. To remove the old one, add a separate - prefixed entry.
Fixes around .env and the git environment
Three fixes concern the order configuration is loaded in.
| PR | What changed |
|---|---|
| #29750 | Settings placeholders are resolved after .env files load |
| #29832 | The user-level ~/.gitconfig is preserved in shell and git environments |
| #29760 | Interactive credential and SSH prompts are disabled in getSafeGitEnv
|
The first matters if your settings file references a value defined in .env. Resolving before the load leaves the reference empty.
A related documented setting is advanced.ignoreLocalEnv (default false), which controls whether generic .env files in the project directory are ignored — the lever to reach for when a project's .env should not be read at all.
The third matters for unattended runs. When git asks for a credential or an SSH passphrase interactively, nobody is there to answer and the run hangs. Disabling those prompts makes it fail instead.
MCP and authentication fixes
- MCP OAuth supports private network endpoints (PR #29844), on an opt-in basis — relevant when the MCP server lives inside your network
-
False positives in
isAuthenticationErrorare prevented (PR #29835), where non-authentication failures were classified as authentication errors -
Update verification tightened (PR #29757): the active binary is checked after an update, so a
PATH-shadowed older binary is no longer reported as a successful update
For MCP configuration generally, see Setting up MCP servers in Gemini CLI.
The rest, and a Gemini 4 banner
The visible addition is a banner saying Gemini CLI is not optimized for Gemini 4 (PR #29774).
On rendering: synchronized output with isolated spinner rendering, debug console height calculation and flickering, right-hand border bleed in scrollable tool containers, preserved terminal scrollback during viewport refreshes, and rounding before unit selection in formatDuration.
Also: openDiff now formats and quotes Windows diff command arguments, SKILL.md frontmatter parsing handles single-line descriptions, slash-command conflict dedupe resets when conflicts reappear, and the bootstrap parent forwards termination signals to its child process.
For the previous release, see Gemini CLI v0.65 enforces read-only settings in untrusted folders.
Summary
- v0.66.0 adds no features; all 26 "What's Changed" entries are fixes, refactors or release chores
- The
keysarray inkeybindings.jsonworks now; unbind by prefixingcommandwith- - When a binding never fires, check what the terminal sends with
Debug Keystroke Loggingandf12 - Settings placeholders are resolved after
.envfiles load -
~/.gitconfigis preserved, and git's interactive prompts are disabled
Top comments (0)