Gemini CLI v0.63 fixes the cannot spawn diff error and negative output truncation
Every one of the 15 changes in Gemini CLI v0.63.0 is a fix. The removed Git diff.external override, truncation that inflated output at negative maxChars, and the MCP config fix.
Contents
Gemini CLI v0.63.0 is a release of fixes only — all 15 items. The notes list no new setting keys, no new commands and no breaking changes.
Two of them are worth your attention: the removal of the thing that caused cannot spawn : No such file or directory during diffs, and a truncation bug where a negative threshold made output bigger instead of smaller.
The v0.63.0 release notes are a list of PR titles with no per-change description. This article covers only what the individual PRs and the official configuration reference confirm, and says so where confirmation was not available.
KEY POINT
What you will learn
- What caused the
cannot spawn :diff error, and that it is fixed - What happens when you set the tool-output truncation threshold to 0 or below
- The MCP config and plan-execution fixes in this release
What the 15 items are
| Category | Count | What it covers |
|---|---|---|
| Fixes developers will notice | 9 | diff, tool output, MCP config, auth loops, stdin, temp directories, plan execution |
| Release housekeeping (changelogs, version bumps) | 4 | Changelogs for v0.61.0-preview.1, v0.61.0, v0.62.0-preview.0, and a nightly version bump |
| Internal fixes | 2 | ACP session init ordering, policy and workflow parsing alignment |
Nothing in the list is a new feature. The previous release, v0.62.0, did add two models — see Gemini CLI v0.62 changes.
The cannot spawn diff error is fixed
This is the fix with the widest reach. The symptom was a Git diff failing during Gemini CLI work:
cannot spawn : No such file or directory
error: cannot run : No such file or directory
The cause was on the Gemini CLI side. An earlier change isolated Git operations by injecting Git config overrides through the environment, and it set diff.external to an empty string, on the assumption that this turns external diffing off.
Git does not read it that way. Git treats any non-NULL value of diff.external as the path to an executable command, so it tried to spawn the empty string and failed.
v0.63.0 removes that diff.external entry from both the Git override list in ShellExecutionService and gitUtils.getSafeGitEnv(). Git now uses its built-in diff engine.
diff.external is not a Gemini CLI setting
diff.external is a Git config key. The official configuration reference has no diff section and no external key, so putting it in settings.json does nothing. The documented editor-related keys are general.preferredEditor and general.openEditorInNewWindow.
Truncation at 0 or below behaves correctly now
The configuration reference documents these keys for tool-output truncation:
| Setting key | Default | What it does |
|---|---|---|
tools.truncateToolOutputThreshold | 40000 | Maximum characters to show when truncating large tool outputs. 0 or a negative value disables truncation. Requires restart |
contextManagement.tools.distillation.maxOutputTokens | 10000 | Maximum tokens to show to the model when truncating large tool outputs. Requires restart |
To turn truncation off, put this in your user settings at ~/.gemini/settings.json:
{
"tools": {
"truncateToolOutputThreshold": 0
}
}
Before v0.63.0, a negative value did not disable truncation — it inflated output to roughly twice its size. The internal formatTruncatedToolOutput sliced a head and a tail with negative indices, so both slices captured nearly the whole string.
v0.63.0 adds a non-positive guard that returns the string unchanged, so both 0 and negative values now disable truncation.
The link between the setting and the function was not confirmed
Whether tools.truncateToolOutputThreshold feeds maxChars in formatTruncatedToolOutput directly is stated neither in the PR nor in the official documentation, so it could not be confirmed. Using 0 follows the configuration reference's own description.
MCP and plan-execution fixes
Two remaining fixes touch configuration:
- A missing MCP enablement config is now distinguished from malformed JSON. Until now, "the MCP enablement setting is absent" and "your
settings.jsonis broken" were handled the same way. The documented keys that enable or disable MCP aremcp.allowed,mcp.excludedandadmin.mcp.enabled, all of which require a restart. Individual server entries have noenabledfield. For how to write them, see Add an MCP server to Gemini CLI. - Autonomous plan execution now works in non-interactive mode. The documented plan keys are
general.plan.enabled(defaulttrue),general.plan.modelRouting(defaulttrue) and the approval modegeneral.defaultApprovalMode(default,auto_editorplan). Which symptom this fix resolves is not described in the release notes and could not be confirmed.
The rest of the list: a retry progress indicator during connection recovery, restoring stdin after capability detection, cleaning up the temp directory when a background shell exits, and preventing an infinite auth loop caused by file contention, a headless keyring or dropped supervisor state. For auth setup, see Gemini CLI free tier limits.
Summary
- v0.63.0 is 15 fixes with no new features and no new setting keys
cannot spawn : No such file or directoryduring diffs came from Gemini CLI overriding Git'sdiff.externalwith an empty string; v0.63.0 removes itdiff.externalis a Git config key, not a key for Gemini CLI'ssettings.json- A negative
tools.truncateToolOutputThresholdused to roughly double output; 0 or below now disables truncation as documented - MCP enablement is controlled by
mcp.allowed,mcp.excludedandadmin.mcp.enabled, not a per-serverenabledfield
FAQ
- Are there any new features in v0.63?
- No. All 15 items in the release notes are fixes or release housekeeping. The notes list no new setting keys, no new commands and no breaking changes.
- Does this fix cannot spawn : No such file or directory?
- Yes, if you saw it during a diff. Gemini CLI was overriding Git's diff.external with an empty string, and Git tried to run that empty string as a command. v0.63.0 removes the override, so Git uses its built-in diff.
- Is diff.external a setting I put in settings.json?
- No. diff.external is a Git config key. The official Gemini CLI configuration reference has no diff section and no external key. What v0.63.0 removed was an internal Git config override.
- How do I turn tool output truncation off?
- The configuration reference documents tools.truncateToolOutputThreshold (default 40000) and says that setting it to 0 or a negative value disables truncation. It requires a restart.
Primary sources
This article was drafted by AI from official documentation and reviewed by the site operator before publishing. Found a mistake? Let us know via the contact page.