DEV Community

aicoding-guide
aicoding-guide

Posted on Originally published at aicoding-guide.com

Gemini CLI v0.66 is fixes only, with the keybindings.json keys array now working

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 keys array, and what to check when a binding does nothing
  • Settings placeholders now resolved after .env files load
  • ~/.gitconfig preserved 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"]
  }
]
Enter fullscreen mode Exit fullscreen mode
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 is shift+5 arriving as %, where "you must bind to the literal character % as bindings to shift+5 will never fire." To see exactly what is sent, enable Debug Keystroke Logging and press f12 to 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 isAuthenticationError are 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 keys array in keybindings.json works now; unbind by prefixing command with -
  • When a binding never fires, check what the terminal sends with Debug Keystroke Logging and f12
  • Settings placeholders are resolved after .env files load
  • ~/.gitconfig is preserved, and git's interactive prompts are disabled

Top comments (0)