diff --git a/docs/cli/index.md b/docs/cli/index.md index 437038d478..0d0ddc04c7 100644 --- a/docs/cli/index.md +++ b/docs/cli/index.md @@ -23,6 +23,8 @@ overview of Gemini CLI, see the [main documentation page](../index.md). ## Advanced features +- **[Plan mode (experimental)](./plan-mode.md):** Use a safe, read-only mode for + planning complex changes. - **[Checkpointing](./checkpointing.md):** Automatically save and restore snapshots of your session and files. - **[Enterprise configuration](./enterprise.md):** Deploy and manage Gemini CLI diff --git a/docs/cli/plan-mode.md b/docs/cli/plan-mode.md new file mode 100644 index 0000000000..e435bc51ba --- /dev/null +++ b/docs/cli/plan-mode.md @@ -0,0 +1,106 @@ +# 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 +implementation strategy. + +> **Note: Plan Mode is currently an experimental feature.** +> +> Experimental features are subject to change. To use Plan Mode, enable it via +> `/settings` (search for `Plan`) or add the following to your `settings.json`: +> +> ```json +> { +> "experimental": { +> "plan": true +> } +> } +> ``` +> +> Your feedback is invaluable as we refine this feature. If you have ideas, +> suggestions, or encounter issues: +> +> - Use the `/bug` command within the CLI to file an issue. +> - [Open an issue](https://github.com/google-gemini/gemini-cli/issues) on +> GitHub. + +- [Starting in Plan Mode](#starting-in-plan-mode) +- [How to use Plan Mode](#how-to-use-plan-mode) + - [Entering Plan Mode](#entering-plan-mode) + - [The Planning Workflow](#the-planning-workflow) + - [Exiting Plan Mode](#exiting-plan-mode) +- [Tool Restrictions](#tool-restrictions) + +## Starting in Plan Mode + +You can configure Gemini CLI to start directly in Plan Mode by default: + +1. Type `/settings` in the CLI. +2. Search for `Approval Mode`. +3. Set the value to `Plan`. + +Other ways to start in Plan Mode: + +- **CLI Flag:** `gemini --approval-mode=plan` +- **Manual Settings:** Manually update your `settings.json`: + + ```json + { + "tools": { + "approvalMode": "plan" + } + } + ``` + +## How to use Plan Mode + +### Entering Plan Mode + +You can enter Plan Mode in three ways: + +1. **Keyboard Shortcut:** Press `Shift+Tab` to cycle through approval modes + (`Default` -> `Plan` -> `Auto-Edit`). +2. **Command:** Type `/plan` in the input box. +3. **Natural Language:** Ask the agent to "start a plan for...". + +### The Planning Workflow + +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. + - **Approve:** Exit Plan Mode and start implementation (switching to + Auto-Edit or Default approval mode). + - **Iterate:** Provide feedback to refine the plan. + +### Exiting Plan Mode + +To exit Plan Mode: + +1. **Keyboard Shortcut:** Press `Shift+Tab` to cycle to the desired mode. +1. **Tool:** The agent calls the `exit_plan_mode` tool to present the finalized + plan for your approval. + +## Tool Restrictions + +Plan Mode enforces strict safety policies to prevent accidental changes. + +These are the only allowed tools: + +- **FileSystem (Read):** [`read_file`], [`list_directory`], [`glob`] +- **Search:** [`grep_search`], [`google_web_search`] +- **Interaction:** `ask_user` +- **MCP Tools (Read):** Read-only [MCP tools] (e.g., `github_read_issue`, + `postgres_read_schema`) are allowed. +- **Planning (Write):** [`write_file`] and [`replace`] ONLY allowed for `.md` + files in the `~/.gemini/tmp//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 diff --git a/docs/sidebar.json b/docs/sidebar.json index ea11e3d8bd..d6f884204a 100644 --- a/docs/sidebar.json +++ b/docs/sidebar.json @@ -20,6 +20,7 @@ { "label": "Project context (GEMINI.md)", "slug": "docs/cli/gemini-md" }, { "label": "Shell commands", "slug": "docs/tools/shell" }, { "label": "Session management", "slug": "docs/cli/session-management" }, + { "label": "Plan mode (experimental)", "slug": "docs/cli/plan-mode" }, { "label": "Todos", "slug": "docs/tools/todos" }, { "label": "Web search and fetch", "slug": "docs/tools/web-search" } ]