Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
8cbe851
Fix newline insertion bug in replace tool (#18595)
werdnum Feb 9, 2026
fe70052
fix(evals): update save_memory evals and simplify tool description (#…
NTaylorMullen Feb 9, 2026
da66c7c
chore(evals): update validation_fidelity_pre_existing_errors to USUAL…
NTaylorMullen Feb 9, 2026
01906a9
fix: shorten tool call IDs and fix duplicate tool name in truncated o…
SandyTao520 Feb 9, 2026
81ccd80
feat(cli): implement atomic writes and safety checks for trusted fold…
galz10 Feb 9, 2026
81ac5be
Remove relative docs links (#18650)
chrstnb Feb 9, 2026
cb7fca0
docs: add legacy snippets convention to GEMINI.md (#18597)
NTaylorMullen Feb 9, 2026
469cbca
fix(chore): Support linting for cjs (#18639)
aswinashok44 Feb 9, 2026
aebc107
feat: move shell efficiency guidelines to tool description (#18614)
NTaylorMullen Feb 9, 2026
e73288f
Added "" as default value, since getText() used to expect a string on…
019-Abhi Feb 9, 2026
262e838
Allow @-includes outside of workspaces (with permission) (#18470)
scidomino Feb 9, 2026
bcc0f27
chore: make `ask_user` header description more clear (#18657)
jackwotherspoon Feb 9, 2026
08dca3e
bug(core): Fix minor bug in migration logic. (#18661)
joshualitt Feb 9, 2026
07056c8
Harded code assist converter. (#18656)
jacob314 Feb 9, 2026
3fb1937
refactor(core): model-dependent tool definitions (#18563)
aishaneeshah Feb 9, 2026
9e41b2c
feat: enable plan mode experiment in settings (#18636)
jerop Feb 9, 2026
1b98c1f
refactor: push isValidPath() into parsePastedPaths() (#18664)
scidomino Feb 9, 2026
a3e5b56
fix(cli): correct 'esc to cancel' position and restore duration displ…
NTaylorMullen Feb 9, 2026
ef957a3
feat(cli): add DevTools integration with gemini-cli-devtools (#18648)
SandyTao520 Feb 9, 2026
14219bb
chore: remove unused exports and redundant hook files (#18681)
SandyTao520 Feb 9, 2026
80057c5
Fix number of lines being reported in rewind confirmation dialog (#18…
Adib234 Feb 9, 2026
bce1cae
feat(cli): disable folder trust in headless mode (#18407)
galz10 Feb 9, 2026
fd65416
Disallow unsafe type assertions (#18688)
gundermanc Feb 10, 2026
c9f9a7f
Change event type for release (#18693)
g-samroberts Feb 10, 2026
cc27980
feat: handle multiple dynamic context filenames in system prompt (#18…
NTaylorMullen Feb 10, 2026
eb94284
Properly parse at-commands with narrow non-breaking spaces (#18677)
scidomino Feb 10, 2026
5d0570b
refactor(core): centralize core tool definitions and support model-sp…
aishaneeshah Feb 10, 2026
89d4556
feat(core): Render memory hierarchically in context. (#18350)
joshualitt Feb 10, 2026
9081743
feat: Ctrl+O to expand paste placeholder (#18103)
jackwotherspoon Feb 10, 2026
0a3ecf3
fix(cli): Improve header spacing (#18531)
NTaylorMullen Feb 10, 2026
6dae3a5
Feature/quota visibility 16795 (#18203)
spencer426 Feb 10, 2026
7a13251
docs: remove TOC marker from Plan Mode header (#18678)
jerop Feb 10, 2026
d3cfbdb
Inline thinking bubbles with summary/full modes (#18033)
LyalinDotCom Feb 10, 2026
ece001f
fix(ui): remove redundant newlines in Gemini messages (#18538)
NTaylorMullen Feb 10, 2026
4494f9e
test(cli): fix AppContainer act() warnings and improve waitFor resili…
NTaylorMullen Feb 10, 2026
92a5f72
refactor(core): refine Security & System Integrity section in system …
NTaylorMullen Feb 10, 2026
bd27440
Fix layout rounding. (#18667)
gundermanc Feb 10, 2026
4a3c7ae
docs(skills): enhance pr-creator safety and interactivity (#18616)
NTaylorMullen Feb 10, 2026
67d9b76
test(core): remove hardcoded model from TestRig (#18710)
NTaylorMullen Feb 10, 2026
2ae5e1a
feat(core): optimize sub-agents system prompt intro (#18608)
NTaylorMullen Feb 10, 2026
e6b43cb
feat(cli): update approval mode labels and shortcuts per latest UX sp…
jerop Feb 10, 2026
e151b48
fix(plan): update persistent approval mode setting (#18638)
Adib234 Feb 10, 2026
79753ec
fix: move toasts location to left side (#18705)
jackwotherspoon Feb 10, 2026
37f128a
feat(routing): restrict numerical routing to Gemini 3 family (#18478)
mattKorwel Feb 10, 2026
eb5492f
fix(ide): fix ide nudge setting (#18733)
skeshive Feb 10, 2026
41bbe6c
fix(core): standardize tool formatting in system prompts (#18615)
NTaylorMullen Feb 10, 2026
4e9bafd
chore: consolidate to green in ask user dialog (#18734)
jackwotherspoon Feb 10, 2026
f2ca0bb
feat: add `extensionsExplore` setting to enable extensions explore UI…
sripasg Feb 10, 2026
f5b1245
feat(cli): defer devtools startup and integrate with F12 (#18695)
SandyTao520 Feb 10, 2026
5920750
ui: update & subdue footer colors and animate progress indicator (#18…
keithguerin Feb 10, 2026
262138c
test: add model-specific snapshots for coreTools (#18707)
aishaneeshah Feb 10, 2026
b37e674
ci: shard windows tests and fix event listener leaks (#18670)
NTaylorMullen Feb 10, 2026
740f0e4
fix: allow `ask_user` tool in yolo mode (#18541)
jackwotherspoon Feb 10, 2026
55571de
feat: redact disabled tools from system prompt (#13597) (#18613)
NTaylorMullen Feb 10, 2026
9813531
Update Gemini.md to use the curent year on creating new files (#18460)
sehoon38 Feb 10, 2026
f9fc933
Code review cleanup for thinking display (#18720)
jacob314 Feb 10, 2026
ef02cec
fix(cli): hide scrollbars when in alternate buffer copy mode (#18354)
werdnum Feb 10, 2026
2eb1c92
Fix issues with rip grep (#18756)
gundermanc Feb 10, 2026
ea1f19a
fix(cli): fix history navigation regression after prompt autocomplete…
sehoon38 Feb 10, 2026
c03d96b
chore: cleanup unused and add unlisted dependencies in packages/cli (…
adamfweidman Feb 10, 2026
8b76211
Fix issue where Gemini CLI creates tests in a new file (#18409)
gundermanc Feb 10, 2026
a217475
feat(telemetry): Ensure experiment IDs are included in OpenTelemetry …
kevin-ramdass Feb 10, 2026
49533cd
feat(ux): added text wrapping capabilities to markdown tables (#18240)
devr0306 Feb 10, 2026
9590a09
Revert "fix(mcp): ensure MCP transport is closed to prevent memory le…
skeshive Feb 10, 2026
8257ec4
chore(release): bump version to 0.30.0-nightly.20260210.a2174751d (#1…
gemini-cli-robot Feb 10, 2026
b7a3243
chore: cleanup unused and add unlisted dependencies in packages/core …
adamfweidman Feb 10, 2026
cb4e1e6
chore(core): update activate_skill prompt verbiage to be more direct …
NTaylorMullen Feb 10, 2026
be2ebd1
Add autoconfigure memory usage setting to the dialog (#18510)
jacob314 Feb 10, 2026
6d3fff2
fix(core): prevent race condition in policy persistence (#18506)
braddux Feb 10, 2026
b3ecac7
fix(evals): prevent false positive in hierarchical memory test (#18777)
Abhijit-2592 Feb 11, 2026
9c11ff2
test(evals): mark all `save_memory` evals as `USUALLY_PASSES` due to …
jerop Feb 11, 2026
7a02d72
feat(cli): add setting to hide shortcuts hint UI (#18562)
LyalinDotCom Feb 11, 2026
49d55d9
feat(core): formalize 5-phase sequential planning workflow (#18759)
jerop Feb 11, 2026
0d034b8
Introduce limits for search results. (#18767)
gundermanc Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gemini/commands/fix-behavioral-eval.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ You are an expert at fixing behavioral evaluations.
the same scenario. We don't want to lose test fidelity by making the prompts too
direct (i.e.: easy).
- Your primary mechanism for improving the agent's behavior is to make changes to
tool instructions, prompt.ts, and/or modules that contribute to the prompt.
tool instructions, system prompt (snippets.ts), and/or modules that contribute to the prompt.
- If prompt and description changes are unsuccessful, use logs and debugging to
confirm that everything is working as expected.
- If unable to fix the test, you can make recommendations for architecture changes
Expand Down
6 changes: 5 additions & 1 deletion .gemini/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
"experimental": {
"toolOutputMasking": {
"enabled": true
}
},
"plan": true
},
"general": {
"devtools": true
}
}
38 changes: 29 additions & 9 deletions .gemini/skills/pr-creator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,34 @@ repository's standards.

Follow these steps to create a Pull Request:

1. **Branch Management**: Check the current branch to avoid working directly
on `main`.
1. **Branch Management**: **CRITICAL:** Ensure you are NOT working on the
`main` branch.
- Run `git branch --show-current`.
- If the current branch is `main`, create and switch to a new descriptive
branch:
- If the current branch is `main`, you MUST create and switch to a new
descriptive branch:
```bash
git checkout -b <new-branch-name>
```

2. **Locate Template**: Search for a pull request template in the repository.
2. **Commit Changes**: Verify that all intended changes are committed.
- Run `git status` to check for unstaged or uncommitted changes.
- If there are uncommitted changes, stage and commit them with a descriptive
message before proceeding. NEVER commit directly to `main`.
```bash
git add .
git commit -m "type(scope): description"
```

3. **Locate Template**: Search for a pull request template in the repository.
- Check `.github/pull_request_template.md`
- Check `.github/PULL_REQUEST_TEMPLATE.md`
- If multiple templates exist (e.g., in `.github/PULL_REQUEST_TEMPLATE/`),
ask the user which one to use or select the most appropriate one based on
the context (e.g., `bug_fix.md` vs `feature.md`).

3. **Read Template**: Read the content of the identified template file.
4. **Read Template**: Read the content of the identified template file.

4. **Draft Description**: Create a PR description that strictly follows the
5. **Draft Description**: Create a PR description that strictly follows the
template's structure.
- **Headings**: Keep all headings from the template.
- **Checklists**: Review each item. Mark with `[x]` if completed. If an item
Expand All @@ -44,14 +53,24 @@ Follow these steps to create a Pull Request:
- **Related Issues**: Link any issues fixed or related to this PR (e.g.,
"Fixes #123").

5. **Preflight Check**: Before creating the PR, run the workspace preflight
6. **Preflight Check**: Before creating the PR, run the workspace preflight
script to ensure all build, lint, and test checks pass.
```bash
npm run preflight
```
If any checks fail, address the issues before proceeding to create the PR.

6. **Create PR**: Use the `gh` CLI to create the PR. To avoid shell escaping
7. **Push Branch**: Push the current branch to the remote repository.
**CRITICAL SAFETY RAIL:** Double-check your branch name before pushing.
NEVER push if the current branch is `main`.
```bash
# Verify current branch is NOT main
git branch --show-current
# Push non-interactively
git push -u origin HEAD
```

8. **Create PR**: Use the `gh` CLI to create the PR. To avoid shell escaping
issues with multi-line Markdown, write the description to a temporary file
first.
```bash
Expand All @@ -68,6 +87,7 @@ Follow these steps to create a Pull Request:

## Principles

- **Safety First**: NEVER push to `main`. This is your highest priority.
- **Compliance**: Never ignore the PR template. It exists for a reason.
- **Completeness**: Fill out all relevant sections.
- **Accuracy**: Don't check boxes for tasks you haven't done.
8 changes: 6 additions & 2 deletions .github/scripts/sync-maintainer-labels.cjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
/* eslint-disable @typescript-eslint/no-require-imports */
/* global process, console, require */
/**
* @license
* Copyright 2026 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/

const { Octokit } = require('@octokit/rest');

/**
Expand Down
17 changes: 15 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -356,11 +356,17 @@ jobs:
clean-script: 'clean'

test_windows:
name: 'Slow Test - Win'
name: 'Slow Test - Win - ${{ matrix.shard }}'
runs-on: 'gemini-cli-windows-16-core'
needs: 'merge_queue_skipper'
if: "${{needs.merge_queue_skipper.outputs.skip == 'false'}}"
continue-on-error: true
timeout-minutes: 60
strategy:
matrix:
shard:
- 'cli'
- 'others'

steps:
- name: 'Checkout'
Expand Down Expand Up @@ -411,7 +417,14 @@ jobs:
NODE_OPTIONS: '--max-old-space-size=32768 --max-semi-space-size=256'
UV_THREADPOOL_SIZE: '32'
NODE_ENV: 'test'
run: 'npm run test:ci -- --coverage.enabled=false'
run: |
if ("${{ matrix.shard }}" -eq "cli") {
npm run test:ci --workspace @google/gemini-cli -- --coverage.enabled=false
} else {
# Explicitly list non-cli packages to ensure they are sharded correctly
npm run test:ci --workspace @google/gemini-cli-core --workspace @google/gemini-cli-a2a-server --workspace gemini-cli-vscode-ide-companion --workspace @google/gemini-cli-test-utils --if-present -- --coverage.enabled=false
npm run test:scripts
}
shell: 'pwsh'

- name: 'Bundle'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name: 'Generate Release Notes'

on:
release:
types: ['created']
types: ['published']
workflow_dispatch:
inputs:
version:
Expand Down
7 changes: 7 additions & 0 deletions GEMINI.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ powerful tool for developers.

## Development Conventions

- **Legacy Snippets:** `packages/core/src/prompts/snippets.legacy.ts` is a
snapshot of an older system prompt. Avoid changing the prompting verbiage to
preserve its historical behavior; however, structural changes to ensure
compilation or simplify the code are permitted.
- **Contributions:** Follow the process outlined in `CONTRIBUTING.md`. Requires
signing the Google CLA.
- **Pull Requests:** Keep PRs small, focused, and linked to an existing issue.
Expand All @@ -63,6 +67,9 @@ powerful tool for developers.
and `packages/core` (Backend logic).
- **Imports:** Use specific imports and avoid restricted relative imports
between packages (enforced by ESLint).
- **License Headers:** For all new source code files (`.ts`, `.tsx`, `.js`),
include the Apache-2.0 license header with the current year. (e.g.,
`Copyright 2026 Google LLC`). This is enforced by ESLint.

## Testing Conventions

Expand Down
11 changes: 7 additions & 4 deletions docs/cli/keyboard-shortcuts.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ available combinations.
| Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl + Y` |
| Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only). | `Shift + Tab` |
| Expand a height-constrained response to show additional lines when not in alternate buffer mode. | `Ctrl + O`<br />`Ctrl + S` |
| Expand or collapse a paste placeholder when cursor is over placeholder. | `Ctrl + O` |
| Toggle current background shell visibility. | `Ctrl + B` |
| Toggle background shell list. | `Ctrl + L` |
| Kill the active background shell. | `Ctrl + K` |
Expand All @@ -130,7 +131,8 @@ available combinations.
- `!` on an empty prompt: Enter or exit shell mode.
- `?` on an empty prompt: Toggle the shortcuts panel above the input. Press
`Esc`, `Backspace`, or any printable key to close it. Press `?` again to close
the panel and insert a `?` into the prompt.
the panel and insert a `?` into the prompt. You can hide only the hint text
via `ui.showShortcutsHint`, without changing this keyboard behavior.
- `\` (at end of a line) + `Enter`: Insert a newline without leaving single-line
mode.
- `Esc` pressed twice quickly: Clear the input prompt if it is not empty,
Expand All @@ -139,6 +141,7 @@ available combinations.
single-line input, navigate backward or forward through prompt history.
- `Number keys (1-9, multi-digit)` inside selection dialogs: Jump directly to
the numbered radio option and confirm when the full number is entered.
- `Double-click` on a paste placeholder (`[Pasted Text: X lines]`) in alternate
buffer mode: Expand to view full content inline. Double-click again to
collapse.
- `Ctrl + O`: Expand or collapse paste placeholders (`[Pasted Text: X lines]`)
inline when the cursor is over the placeholder.
- `Double-click` on a paste placeholder (alternate buffer mode only): Expand to
view full content inline. Double-click again to collapse.
30 changes: 16 additions & 14 deletions docs/cli/plan-mode.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Plan Mode (experimental) <!-- omit in toc -->
# Plan Mode (experimental)

Plan Mode is a safe, read-only mode for researching and designing complex
changes. It prevents modifications while you research, design and plan an
Expand Down Expand Up @@ -36,7 +36,7 @@ implementation strategy.
You can configure Gemini CLI to start directly in Plan Mode by default:

1. Type `/settings` in the CLI.
2. Search for `Approval Mode`.
2. Search for `Default Approval Mode`.
3. Set the value to `Plan`.

Other ways to start in Plan Mode:
Expand All @@ -46,8 +46,8 @@ Other ways to start in Plan Mode:

```json
{
"tools": {
"approvalMode": "plan"
"general": {
"defaultApprovalMode": "plan"
}
}
```
Expand All @@ -68,8 +68,10 @@ You can enter Plan Mode in three ways:
1. **Requirements:** The agent clarifies goals using `ask_user`.
2. **Exploration:** The agent uses read-only tools (like [`read_file`]) to map
the codebase and validate assumptions.
3. **Planning:** A detailed plan is written to a temporary Markdown file.
4. **Review:** You review the plan.
3. **Design:** The agent proposes alternative approaches with a recommended
solution for you to choose from.
4. **Planning:** A detailed plan is written to a temporary Markdown file.
5. **Review:** You review the plan.
- **Approve:** Exit Plan Mode and start implementation (switching to
Auto-Edit or Default approval mode).
- **Iterate:** Provide feedback to refine the plan.
Expand All @@ -96,11 +98,11 @@ These are the only allowed tools:
- **Planning (Write):** [`write_file`] and [`replace`] ONLY allowed for `.md`
files in the `~/.gemini/tmp/<project>/plans/` directory.

[`list_directory`]: ../tools/file-system.md#1-list_directory-readfolder
[`read_file`]: ../tools/file-system.md#2-read_file-readfile
[`grep_search`]: ../tools/file-system.md#5-grep_search-searchtext
[`write_file`]: ../tools/file-system.md#3-write_file-writefile
[`glob`]: ../tools/file-system.md#4-glob-findfiles
[`google_web_search`]: ../tools/web-search.md
[`replace`]: ../tools/file-system.md#6-replace-edit
[MCP tools]: ../tools/mcp-server.md
[`list_directory`]: /docs/tools/file-system.md#1-list_directory-readfolder
[`read_file`]: /docs/tools/file-system.md#2-read_file-readfile
[`grep_search`]: /docs/tools/file-system.md#5-grep_search-searchtext
[`write_file`]: /docs/tools/file-system.md#3-write_file-writefile
[`glob`]: /docs/tools/file-system.md#4-glob-findfiles
[`google_web_search`]: /docs/tools/web-search.md
[`replace`]: /docs/tools/file-system.md#6-replace-edit
[MCP tools]: /docs/tools/mcp-server.md
Loading
Loading