{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2025-07-24-google-gemini-cli-cheatsheet/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "The [Gemini CLI](https://github.com/google-gemini/gemini-cli) is an open-source AI agent that brings the power of Gemini directly into your terminal, allowing you to perform a wide range of tasks such as coding, problem-solving, and task management using natural language. This cheatsheet provides a quick reference for installing, configuring, and using the Gemini CLI, with a focus on users authenticating via a Gemini API key.\n\n![Gemini CLI Architecture](https://www.philschmid.de/static/blog/gemini-cli-cheatsheet/architecture.png)\n\n## 🚀 Getting Started\n\n### Installation\n\n**Install Globally:**\n\nBash\n\n```bash\nnpm install -g @google/gemini-cli\n```\n\n**Run without Installing:**\n\nBash\n\n```bash\nnpx @google/gemini-cli\n```\n\n### Authentication with a Gemini API Key\n\nAuthenticate with an API key before first use. See the [authentication guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/authentication.md) for details.\n\n1. **Get Your Key:** Get an API key from [Google AI Studio](https://aistudio.google.com/app/apikey).\n\n2. **Set Your Key:** Make the key available to the CLI with one of these methods.\n\n   **Method 1: Shell Environment Variable** Set the `GEMINI_API_KEY` environment variable. To use it across terminal sessions, add this line to your shell's profile (e.g., `~/.bashrc`, `~/.zshrc`).\n\n   Bash\n\n   ```bash\n   export GEMINI_API_KEY=\"YOUR_GEMINI_API_KEY\"\n   ```\n\n   **Method 2: Environment File** Create a `.env` file in `~/.gemini/` for global use or `./.gemini/` for a specific project. The CLI automatically loads it.\n\n   ```plaintext\n   # In .gemini/.env\n   GEMINI_API_KEY=\"YOUR_GEMINI_API_KEY\"\n   ```\n\n### Basic Invocation\n\n**Interactive Mode (REPL):** Start a conversational session.\n\nBash\n\n```bash\ngemini\n```\n\n**Non-Interactive Mode:** Pass a prompt and get a single response.\n\nBash\n\n```bash\ngemini -p \"Summarize the main points of the attached file. @./summary.txt\"\n```\n\n**Piping to the CLI:** Pipe content to the CLI.\n\nBash\n\n```bash\necho \"Count to 10\" | gemini\n```\n\n**Sandbox Mode:** Run tools in a secure sandbox (requires Docker or Podman).\n\nBash\n\n```bash\ngemini --sandbox -p \"your prompt\"\n```\n\n**Other Flags:**\n\n- `-m, --model <model>`: Use a specific model.\n- `-i, --prompt-interactive <prompt>`: Start an interactive session with an initial prompt.\n- `-d, --debug`: Enable debug output.\n- `--yolo`: Auto-approve all tool calls.\n- `--checkpointing`: Save a project snapshot before file modifications. Use `/restore` to revert changes.\n\n[Full list of flags](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#command-line-arguments).\n\n## ⚙️ Configuration\n\n### Settings Files (`settings.json`)\n\nCustomize the CLI by creating a `settings.json` file. Settings are applied with the following precedence:\n\n1. **Project:** `.gemini/settings.json` (overrides user).\n2. **User:** `~/.gemini/settings.json`\n3. **System:** `/etc/gemini-cli/settings.json` (applies to all users, has highest precedence).\n\n**Example `settings.json`:**\n\nJSON\n\n```json\n{\n  \"theme\": \"GitHub\",\n  \"autoAccept\": false,\n  \"sandbox\": \"docker\",\n  \"vimMode\": true,\n  \"checkpointing\": { \"enabled\": true },\n  \"fileFiltering\": { \"respectGitIgnore\": true },\n  \"usageStatisticsEnabled\": true,\n  \"includeDirectories\": [\"../shared-library\", \"~/common-utils\"],\n  \"chatCompression\": { \"contextPercentageThreshold\": 0.6 },\n  \"customThemes\": {\n    \"MyCustomTheme\": {\n      \"name\": \"MyCustomTheme\", \"type\": \"custom\",\n      \"Background\": \"#181818\", \"Foreground\": \"#F8F8F2\",\n      \"LightBlue\": \"#82AAFF\", \"AccentBlue\": \"#61AFEF\", \"AccentPurple\": \"#C678DD\",\n      \"AccentCyan\": \"#56B6C2\", \"AccentGreen\": \"#98C379\", \"AccentYellow\": \"#E5C07B\",\n      \"AccentRed\": \"#E06C75\", \"Comment\": \"#5C6370\", \"Gray\": \"#ABB2BF\"\n    }\n  }\n}\n```\n\n- `autoAccept`: Auto-approve safe, read-only tool calls.\n- `sandbox`: Isolate tool execution (e.g., `true`, `\"docker\"`, or `\"podman\"`).\n- `vimMode`: Enable Vim-style editing for the input prompt.\n- `checkpointing`: Enable the `/restore` command to undo file changes.\n- `includeDirectories`: Define a multi-directory workspace.\n- `chatCompression`: Configure automatic chat history compression.\n- `customThemes`: Define your own color themes.\n- `usageStatisticsEnabled`: Set to `false` to disable usage statistics.\n\nAll details in the [configuration guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md).\n\n### Context Files (`GEMINI.md`)\n\nUse `GEMINI.md` files to provide instructions to the model and tailor it to your project. Use `/init` to generate a starting `GEMINI.md` file for your project.\n\n**Hierarchical Loading:** The CLI combines `GEMINI.md` files from multiple locations. More specific files override general ones. The loading order is:\n\n1. **Global Context:** `~/.gemini/GEMINI.md` (for instructions that apply to all your projects).\n2. **Project/Ancestor Context:** The CLI searches from your current directory up to the project root for `GEMINI.md` files.\n3. **Sub-directory Context:** The CLI also scans subdirectories for `GEMINI.md` files, allowing for component-specific instructions.\n\nUse `/memory show` to see the final combined context being sent to the model.\n\n**Modularizing Context with Imports:** You can organize `GEMINI.md` files by importing other Markdown files with the `@file.md` syntax. This only supports `.md` files.\n\n**Example `GEMINI.md` using imports:**\n\nMarkdown\n\n```markdown\n# Main Project Context: My Awesome App\n \n## General Instructions\n- All Python code must be PEP 8 compliant.\n- Use 2-space indentation for all new files.\n \n## Component-Specific Style Guides\n@./src/frontend/react-style-guide.md\n@./src/backend/fastapi-style-guide.md\n```\n\nMore in the [Full context file guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#context-files-geminimd).\n\n### Ignoring Files with `.geminiignore`\n\nCreate a `.geminiignore` file in your project root to exclude files and directories from Gemini's tools, similar to `.gitignore`.\n\n```plaintext\n# .geminiignore\n/backups/\n*.log\nsecret-config.json\n```\n\n## 🛠️ Working with Tools\n\n### Some Built-in Tools\n\n- **File System Tools:** For interacting with files and directories - `list_directory(path=\"/src\")`, `glob(pattern=\"src/**/*.ts\")`, `read_file(path=\"/path/to/file.txt\")`, `write_file(file_path=\"/path/to/new_file.js\", content=\"console.log('hello');\")`, `replace(file_path=\"...\", old_string=\"...\", new_string=\"...\")`, `search_file_content(pattern=\"myFunction\", include=\"*.js\")`\n- **Shell Tool:** Executes shell commands. **Use with caution.** To restrict commands, use `excludeTools` in `settings.json`. For example: `\"excludeTools\": [\"run_shell_command(rm)\"]`\n- **Web Tools:** For retrieving content and searching online - `google_web_search(query=\"Gemini API rate limits\")`, `web_fetch(prompt=\"Summarize https://my-blog.com/article\")`\n- **Memory Tool:** For saving and recalling information across sessions - `save_memory(fact=\"My preferred CSS framework is Tailwind CSS.\")`\n\n### Custom Tools via MCP Servers\n\nExtend the CLI with your own tools by running Model Context Protocol (MCP) servers. Manage servers via `settings.json` or with the `gemini mcp <add|list|remove>` commands.\n\n**Capabilities:**\n\n- **OAuth 2.0 Support:** Securely connect to remote servers.\n- **Rich Content Returns:** Tools can return multi-modal content like text and images.\n- **Prompts as Commands:** Expose predefined prompts from your server as new slash commands in the CLI.\n\n**Example `mcpServers` configuration:**\n\nJSON\n\n```json\n\"mcpServers\": {\n  \"myPythonServer\": {\n    \"command\": \"python\",\n    \"args\": [\"-m\", \"my_mcp_server\", \"--port\", \"8080\"],\n    \"cwd\": \"./mcp_tools/python\",\n    \"env\": {\n      \"DATABASE_URL\": \"$DB_URL_FROM_ENV\"\n    },\n    \"timeout\": 15000,\n    \"trust\": false,\n    \"includeTools\": [\"safe_tool_1\", \"safe_tool_2\"],\n    \"excludeTools\": [\"dangerous_tool\"]\n  }\n}\n```\n\n**Transport (choose one):**\n\n- `command`, `args`, `cwd`: Launch a local process via Stdio\n- `url`: SSE endpoint (e.g., `\"http://localhost:8080/sse\"`)\n- `httpUrl`: HTTP streaming endpoint (e.g., `\"http://localhost:8080/mcp\"`)\n\n**Optional:**\n\n- `env`: Environment variables. Use `$VAR_NAME` syntax to reference shell variables.\n- `headers`: Key-value map of HTTP headers for `url`/`httpUrl` transports.\n- `timeout`: Request timeout in milliseconds (default: 10 minutes).\n- `trust`: Bypass all tool confirmations for this server.\n- `includeTools`/`excludeTools`: Whitelist/blacklist specific tools. `excludeTools` takes precedence.\n\nUsing OAuth take a look at [mcp-server.md](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#oauth-support-for-remote-mcp-servers)\n\n## ⚡ Core Commands\n\n### Helpful Slash Commands (`/`)\n\n| Command              | Description                                                              |\n| -------------------- | ------------------------------------------------------------------------ |\n| `/compress`          | Replace the entire chat context with a summary to save tokens.           |\n| `/copy`              | Copy the last response to the clipboard.                                 |\n| `/mcp`               | List configured MCP servers and their available tools.                   |\n| `/clear`             | Clear the terminal screen and context (`Ctrl+L` also works).             |\n| `/tools`             | List available tools.                                                    |\n| `/extensions`        | List active extensions.                                                  |\n| `/stats`             | Show session token usage and savings.                                    |\n| `/memory show`       | Show the combined context from all `GEMINI.md` files.                    |\n| `/memory refresh`    | Reload all `GEMINI.md` files.                                            |\n| `/chat save <tag>`   | Save the current conversation with a tag.                                |\n| `/chat resume <tag>` | Resume a saved conversation.                                             |\n| `/chat list`         | List saved conversation tags.                                            |\n| `/restore`           | List or restore a project state checkpoint.                              |\n| `/auth`              | Change the current authentication method.                                |\n| `/bug`               | File an issue or bug report about the Gemini CLI.                        |\n| `/help`              | Display help information and available commands.                         |\n| `/theme`             | Change the CLI's visual theme.                                           |\n| `/quit`              | Exit the Gemini CLI.                                                     |\n| `/ide`               | Manage integration with your IDE (e.g., `install`, `enable`).            |\n| `/settings`          | Open a friendly editor to change your `settings.json` file.              |\n| `/vim`               | Toggle Vim mode for input editing.                                       |\n| `/init`              | Generate a starting `GEMINI.md` context file for your project.           |\n| `/directory`         | Manage directories in a multi-directory workspace (e.g., `add`, `show`). |\n\n### Context Commands (`@`)\n\nReference files or directories in your prompt. The CLI respects `.gitignore` and `.geminiignore`. You can also reference images, PDFs, audio, and video files.\n\n**Include a single file:**\n\n```plaintext\n> Explain this code to me. @./src/main.js\n```\n\n**Include an image:**\n\n```plaintext\n> Describe what you see in this screenshot. @./ux-mockup.png\n```\n\n**Include a whole directory (recursively):**\n\n```plaintext\n> Refactor the code in this directory to use async/await. @./src/\n```\n\n### Shell Commands (`!`)\n\nRun shell commands directly in the CLI.\n\n**Run a single command:**\n\n```plaintext\n> !git status\n```\n\n**Toggle Shell Mode:** Enter `!` by itself to switch to a persistent shell mode. Type `!` again to exit.\n\n### Keyboard Shortcuts\n\n| Shortcut | Description                                     |\n| -------- | ----------------------------------------------- |\n| `Ctrl+L` | Clear the screen.                               |\n| `Ctrl+V` | Paste text or an image from the clipboard.      |\n| `Ctrl+Y` | Toggle YOLO mode (auto-approve all tool calls). |\n| `Ctrl+X` | Open the current prompt in an external editor.  |\n\n## ✨ Advanced Features\n\n### IDE Integration (VS Code)\n\nConnect the CLI to VS Code for a more powerful, context-aware experience.\n\n- **Workspace Context:** Automatically gets your recent files, cursor position, and selected text.\n- **Native Diffing:** View and approve code changes directly in your editor's diff viewer.\n- **Commands:** Use `/ide install` to set up and `/ide enable` to connect.\n\n### Custom Commands\n\nCreate custom commands using TOML files. Store them in `~/.gemini/commands/` (global) or `<project>/.gemini/commands/` (project-specific). See the [custom commands guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/commands.md#custom-commands) for more details.\n\n**Example: `~/.gemini/commands/test/gen.toml`**\n\nToml\n\n```toml\n# Invoked as: /test:gen \"Create a test for the login button\"\ndescription = \"Generates a unit test based on a description.\"\nprompt = \"\"\"\nYou are an expert test engineer. Based on the following requirement, please write a comprehensive unit test using the Jest testing framework.\n \nRequirement: {{args}}\n\"\"\"\n```\n\n### Extensions\n\nCreate extensions to add functionality. Place them in `<workspace>/.gemini/extensions/` or `~/.gemini/extensions/`. Each extension is a directory with a `gemini-extension.json` file that can configure MCP servers, tools, and context files. For more details, see the [extensions guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/extension.md).\n\nFor example:\n\n```plaintext\n<workspace>/.gemini/extensions/my-extension/gemini-extension.json\n```\n\nJSON\n\n```json\n{\n  \"name\": \"my-extension\",\n  \"version\": \"1.0.0\",\n  \"mcpServers\": {\n    \"my-server\": {\n      \"command\": \"node my-server.js\"\n    }\n  },\n  \"contextFileName\": \"GEMINI.md\",\n  \"excludeTools\": [\"run_shell_command\"]\n}\n```\n\n### Checkpointing & Restore\n\nWhen `checkpointing` is on, the CLI saves a project snapshot before tools modify files.\n\n**Enable in `settings.json` or with a flag:**\n\nBash\n\n```bash\ngemini --checkpointing\n```\n\n**Restore to a previous state:**\n\nBash\n\n```bash\n# List available checkpoints\n/restore\n \n# Restore a specific checkpoint\n/restore <checkpoint_file_name>\n```\n\n* * *\n\nThanks for reading! If you have any questions or feedback, please let me know on [Twitter](https://twitter.com/_philschmid) or [LinkedIn](https://www.linkedin.com/in/philipp-schmid-a6a2bb196/).\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli\">Gemini CLI</a> is an open-source AI agent that brings the power of Gemini directly into your terminal, allowing you to perform a wide range of tasks such as coding, problem-solving, and task management using natural language. This cheatsheet provides a quick reference for installing, configuring, and using the Gemini CLI, with a focus on users authenticating via a Gemini API key.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/gemini-cli-cheatsheet/architecture.png\" alt=\"Gemini CLI Architecture\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<h2>🚀 Getting Started</h2>\n<h3>Installation</h3>\n<p><strong>Install Globally:</strong></p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">npm</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> install<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>g</span> @google/gemini-cli</span>\n</span></span></code></pre>\n<p><strong>Run without Installing:</strong></p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">npx</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> @google/gemini-cli</span>\n</span></span></code></pre>\n<h3>Authentication with a Gemini API Key</h3>\n<p>Authenticate with an API key before first use. See the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/authentication.md\">authentication guide</a> for details.</p>\n<ol>\n<li>\n<p><strong>Get Your Key:</strong> Get an API key from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://aistudio.google.com/app/apikey\">Google AI Studio</a>.</p>\n</li>\n<li>\n<p><strong>Set Your Key:</strong> Make the key available to the CLI with one of these methods.</p>\n<p><strong>Method 1: Shell Environment Variable</strong> Set the <code>GEMINI_API_KEY</code> environment variable. To use it across terminal sessions, add this line to your shell's profile (e.g., <code>~/.bashrc</code>, <code>~/.zshrc</code>).</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-storage syntax-modifier syntax-shell\">export</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-assignment syntax-shell\">GEMINI_API_KEY</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-shell\">=</span><span class=\"syntax-string syntax-unquoted syntax-shell\"><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>YOUR_GEMINI_API_KEY<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span></span>\n</span></span></code></pre>\n<p><strong>Method 2: Environment File</strong> Create a <code>.env</code> file in <code>~/.gemini/</code> for global use or <code>./.gemini/</code> for a specific project. The CLI automatically loads it.</p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\"># In .gemini/.env\nGEMINI_API_KEY=&quot;YOUR_GEMINI_API_KEY&quot;\n</span></code></pre>\n</li>\n</ol>\n<h3>Basic Invocation</h3>\n<p><strong>Interactive Mode (REPL):</strong> Start a conversational session.</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gemini</span></span>\n</span></span></code></pre>\n<p><strong>Non-Interactive Mode:</strong> Pass a prompt and get a single response.</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gemini</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>p</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>Summarize the main points of the attached file. @./summary.txt<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span>\n</span></span></code></pre>\n<p><strong>Piping to the CLI:</strong> Pipe content to the CLI.</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-support syntax-function syntax-echo syntax-shell\">echo</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>Count to 10<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gemini</span></span>\n</span></span></code></pre>\n<p><strong>Sandbox Mode:</strong> Run tools in a secure sandbox (requires Docker or Podman).</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gemini</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>sandbox</span><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>p</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>your prompt<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span></span>\n</span></span></code></pre>\n<p><strong>Other Flags:</strong></p>\n<ul>\n<li><code>-m, --model &lt;model&gt;</code>: Use a specific model.</li>\n<li><code>-i, --prompt-interactive &lt;prompt&gt;</code>: Start an interactive session with an initial prompt.</li>\n<li><code>-d, --debug</code>: Enable debug output.</li>\n<li><code>--yolo</code>: Auto-approve all tool calls.</li>\n<li><code>--checkpointing</code>: Save a project snapshot before file modifications. Use <code>/restore</code> to revert changes.</li>\n</ul>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#command-line-arguments\">Full list of flags</a>.</p>\n<h2>⚙️ Configuration</h2>\n<h3>Settings Files (<code>settings.json</code>)</h3>\n<p>Customize the CLI by creating a <code>settings.json</code> file. Settings are applied with the following precedence:</p>\n<ol>\n<li><strong>Project:</strong> <code>.gemini/settings.json</code> (overrides user).</li>\n<li><strong>User:</strong> <code>~/.gemini/settings.json</code></li>\n<li><strong>System:</strong> <code>/etc/gemini-cli/settings.json</code> (applies to all users, has highest precedence).</li>\n</ol>\n<p><strong>Example <code>settings.json</code>:</strong></p>\n<p>JSON</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>theme<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>GitHub<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>autoAccept<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">false</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>sandbox<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>docker<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>vimMode<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>checkpointing<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>enabled<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span> </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>fileFiltering<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>respectGitIgnore<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span> </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>usageStatisticsEnabled<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">true</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>includeDirectories<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>../shared-library<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>~/common-utils<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>chatCompression<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>contextPercentageThreshold<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-numeric syntax-json\">0.6</span> </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>customThemes<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>MyCustomTheme<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>MyCustomTheme<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>type<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>custom<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Background<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#181818<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Foreground<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#F8F8F2<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>LightBlue<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#82AAFF<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentBlue<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#61AFEF<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentPurple<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#C678DD<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentCyan<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#56B6C2<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentGreen<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#98C379<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentYellow<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#E5C07B<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>AccentRed<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#E06C75<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Comment<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#5C6370<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>Gray<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>#ABB2BF<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<ul>\n<li><code>autoAccept</code>: Auto-approve safe, read-only tool calls.</li>\n<li><code>sandbox</code>: Isolate tool execution (e.g., <code>true</code>, <code>&quot;docker&quot;</code>, or <code>&quot;podman&quot;</code>).</li>\n<li><code>vimMode</code>: Enable Vim-style editing for the input prompt.</li>\n<li><code>checkpointing</code>: Enable the <code>/restore</code> command to undo file changes.</li>\n<li><code>includeDirectories</code>: Define a multi-directory workspace.</li>\n<li><code>chatCompression</code>: Configure automatic chat history compression.</li>\n<li><code>customThemes</code>: Define your own color themes.</li>\n<li><code>usageStatisticsEnabled</code>: Set to <code>false</code> to disable usage statistics.</li>\n</ul>\n<p>All details in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md\">configuration guide</a>.</p>\n<h3>Context Files (<code>GEMINI.md</code>)</h3>\n<p>Use <code>GEMINI.md</code> files to provide instructions to the model and tailor it to your project. Use <code>/init</code> to generate a starting <code>GEMINI.md</code> file for your project.</p>\n<p><strong>Hierarchical Loading:</strong> The CLI combines <code>GEMINI.md</code> files from multiple locations. More specific files override general ones. The loading order is:</p>\n<ol>\n<li><strong>Global Context:</strong> <code>~/.gemini/GEMINI.md</code> (for instructions that apply to all your projects).</li>\n<li><strong>Project/Ancestor Context:</strong> The CLI searches from your current directory up to the project root for <code>GEMINI.md</code> files.</li>\n<li><strong>Sub-directory Context:</strong> The CLI also scans subdirectories for <code>GEMINI.md</code> files, allowing for component-specific instructions.</li>\n</ol>\n<p>Use <code>/memory show</code> to see the final combined context being sent to the model.</p>\n<p><strong>Modularizing Context with Imports:</strong> You can organize <code>GEMINI.md</code> files by importing other Markdown files with the <code>@file.md</code> syntax. This only supports <code>.md</code> files.</p>\n<p><strong>Example <code>GEMINI.md</code> using imports:</strong></p>\n<p>Markdown</p>\n<pre><code class=\"language-markdown\"><span class=\"code-snippet\" data-language=\"Markdown\"><span class=\"syntax-text syntax-html syntax-markdown\"><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-1 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">#</span> </span><span class=\"syntax-markup syntax-heading syntax-1 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Main Project Context: My Awesome App</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">General Instructions</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"> <span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\">All Python code must be PEP 8 compliant.\n</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> Use 2-space indentation for all new files.\n</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"> \n</span><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Component-Specific Style Guides</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span><span class=\"syntax-meta syntax-paragraph syntax-markdown\">@./src/frontend/react-style-guide.md\n@./src/backend/fastapi-style-guide.md\n</span></span></span></code></pre>\n<p>More in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#context-files-geminimd\">Full context file guide</a>.</p>\n<h3>Ignoring Files with <code>.geminiignore</code></h3>\n<p>Create a <code>.geminiignore</code> file in your project root to exclude files and directories from Gemini's tools, similar to <code>.gitignore</code>.</p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\"># .geminiignore\n/backups/\n*.log\nsecret-config.json\n</span></code></pre>\n<h2>🛠️ Working with Tools</h2>\n<h3>Some Built-in Tools</h3>\n<ul>\n<li><strong>File System Tools:</strong> For interacting with files and directories - <code>list_directory(path=&quot;/src&quot;)</code>, <code>glob(pattern=&quot;src/**/*.ts&quot;)</code>, <code>read_file(path=&quot;/path/to/file.txt&quot;)</code>, <code>write_file(file_path=&quot;/path/to/new_file.js&quot;, content=&quot;console.log('hello');&quot;)</code>, <code>replace(file_path=&quot;...&quot;, old_string=&quot;...&quot;, new_string=&quot;...&quot;)</code>, <code>search_file_content(pattern=&quot;myFunction&quot;, include=&quot;*.js&quot;)</code></li>\n<li><strong>Shell Tool:</strong> Executes shell commands. <strong>Use with caution.</strong> To restrict commands, use <code>excludeTools</code> in <code>settings.json</code>. For example: <code>&quot;excludeTools&quot;: [&quot;run_shell_command(rm)&quot;]</code></li>\n<li><strong>Web Tools:</strong> For retrieving content and searching online - <code>google_web_search(query=&quot;Gemini API rate limits&quot;)</code>, <code>web_fetch(prompt=&quot;Summarize https://my-blog.com/article&quot;)</code></li>\n<li><strong>Memory Tool:</strong> For saving and recalling information across sessions - <code>save_memory(fact=&quot;My preferred CSS framework is Tailwind CSS.&quot;)</code></li>\n</ul>\n<h3>Custom Tools via MCP Servers</h3>\n<p>Extend the CLI with your own tools by running Model Context Protocol (MCP) servers. Manage servers via <code>settings.json</code> or with the <code>gemini mcp &lt;add|list|remove&gt;</code> commands.</p>\n<p><strong>Capabilities:</strong></p>\n<ul>\n<li><strong>OAuth 2.0 Support:</strong> Securely connect to remote servers.</li>\n<li><strong>Rich Content Returns:</strong> Tools can return multi-modal content like text and images.</li>\n<li><strong>Prompts as Commands:</strong> Expose predefined prompts from your server as new slash commands in the CLI.</li>\n</ul>\n<p><strong>Example <code>mcpServers</code> configuration:</strong></p>\n<p>JSON</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpServers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>: <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>myPythonServer<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>python<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>args<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>-m<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>my_mcp_server<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>--port<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>8080<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>cwd<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>./mcp_tools/python<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>env<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>DATABASE_URL<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>$DB_URL_FROM_ENV<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>timeout<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-numeric syntax-json\">15000</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>trust<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-constant syntax-language syntax-json\">false</span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>includeTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>safe_tool_1<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>safe_tool_2<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>excludeTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>dangerous_tool<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<p><strong>Transport (choose one):</strong></p>\n<ul>\n<li><code>command</code>, <code>args</code>, <code>cwd</code>: Launch a local process via Stdio</li>\n<li><code>url</code>: SSE endpoint (e.g., <code>&quot;http://localhost:8080/sse&quot;</code>)</li>\n<li><code>httpUrl</code>: HTTP streaming endpoint (e.g., <code>&quot;http://localhost:8080/mcp&quot;</code>)</li>\n</ul>\n<p><strong>Optional:</strong></p>\n<ul>\n<li><code>env</code>: Environment variables. Use <code>$VAR_NAME</code> syntax to reference shell variables.</li>\n<li><code>headers</code>: Key-value map of HTTP headers for <code>url</code>/<code>httpUrl</code> transports.</li>\n<li><code>timeout</code>: Request timeout in milliseconds (default: 10 minutes).</li>\n<li><code>trust</code>: Bypass all tool confirmations for this server.</li>\n<li><code>includeTools</code>/<code>excludeTools</code>: Whitelist/blacklist specific tools. <code>excludeTools</code> takes precedence.</li>\n</ul>\n<p>Using OAuth take a look at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#oauth-support-for-remote-mcp-servers\">mcp-server.md</a></p>\n<h2>⚡ Core Commands</h2>\n<h3>Helpful Slash Commands (<code>/</code>)</h3>\n<table>\n<thead>\n<tr>\n<th>Command</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/compress</code></td>\n<td>Replace the entire chat context with a summary to save tokens.</td>\n</tr>\n<tr>\n<td><code>/copy</code></td>\n<td>Copy the last response to the clipboard.</td>\n</tr>\n<tr>\n<td><code>/mcp</code></td>\n<td>List configured MCP servers and their available tools.</td>\n</tr>\n<tr>\n<td><code>/clear</code></td>\n<td>Clear the terminal screen and context (<code>Ctrl+L</code> also works).</td>\n</tr>\n<tr>\n<td><code>/tools</code></td>\n<td>List available tools.</td>\n</tr>\n<tr>\n<td><code>/extensions</code></td>\n<td>List active extensions.</td>\n</tr>\n<tr>\n<td><code>/stats</code></td>\n<td>Show session token usage and savings.</td>\n</tr>\n<tr>\n<td><code>/memory show</code></td>\n<td>Show the combined context from all <code>GEMINI.md</code> files.</td>\n</tr>\n<tr>\n<td><code>/memory refresh</code></td>\n<td>Reload all <code>GEMINI.md</code> files.</td>\n</tr>\n<tr>\n<td><code>/chat save &lt;tag&gt;</code></td>\n<td>Save the current conversation with a tag.</td>\n</tr>\n<tr>\n<td><code>/chat resume &lt;tag&gt;</code></td>\n<td>Resume a saved conversation.</td>\n</tr>\n<tr>\n<td><code>/chat list</code></td>\n<td>List saved conversation tags.</td>\n</tr>\n<tr>\n<td><code>/restore</code></td>\n<td>List or restore a project state checkpoint.</td>\n</tr>\n<tr>\n<td><code>/auth</code></td>\n<td>Change the current authentication method.</td>\n</tr>\n<tr>\n<td><code>/bug</code></td>\n<td>File an issue or bug report about the Gemini CLI.</td>\n</tr>\n<tr>\n<td><code>/help</code></td>\n<td>Display help information and available commands.</td>\n</tr>\n<tr>\n<td><code>/theme</code></td>\n<td>Change the CLI's visual theme.</td>\n</tr>\n<tr>\n<td><code>/quit</code></td>\n<td>Exit the Gemini CLI.</td>\n</tr>\n<tr>\n<td><code>/ide</code></td>\n<td>Manage integration with your IDE (e.g., <code>install</code>, <code>enable</code>).</td>\n</tr>\n<tr>\n<td><code>/settings</code></td>\n<td>Open a friendly editor to change your <code>settings.json</code> file.</td>\n</tr>\n<tr>\n<td><code>/vim</code></td>\n<td>Toggle Vim mode for input editing.</td>\n</tr>\n<tr>\n<td><code>/init</code></td>\n<td>Generate a starting <code>GEMINI.md</code> context file for your project.</td>\n</tr>\n<tr>\n<td><code>/directory</code></td>\n<td>Manage directories in a multi-directory workspace (e.g., <code>add</code>, <code>show</code>).</td>\n</tr>\n</tbody>\n</table>\n<h3>Context Commands (<code>@</code>)</h3>\n<p>Reference files or directories in your prompt. The CLI respects <code>.gitignore</code> and <code>.geminiignore</code>. You can also reference images, PDFs, audio, and video files.</p>\n<p><strong>Include a single file:</strong></p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\">&gt; Explain this code to me. @./src/main.js\n</span></code></pre>\n<p><strong>Include an image:</strong></p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\">&gt; Describe what you see in this screenshot. @./ux-mockup.png\n</span></code></pre>\n<p><strong>Include a whole directory (recursively):</strong></p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\">&gt; Refactor the code in this directory to use async/await. @./src/\n</span></code></pre>\n<h3>Shell Commands (<code>!</code>)</h3>\n<p>Run shell commands directly in the CLI.</p>\n<p><strong>Run a single command:</strong></p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\">&gt; !git status\n</span></code></pre>\n<p><strong>Toggle Shell Mode:</strong> Enter <code>!</code> by itself to switch to a persistent shell mode. Type <code>!</code> again to exit.</p>\n<h3>Keyboard Shortcuts</h3>\n<table>\n<thead>\n<tr>\n<th>Shortcut</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>Ctrl+L</code></td>\n<td>Clear the screen.</td>\n</tr>\n<tr>\n<td><code>Ctrl+V</code></td>\n<td>Paste text or an image from the clipboard.</td>\n</tr>\n<tr>\n<td><code>Ctrl+Y</code></td>\n<td>Toggle YOLO mode (auto-approve all tool calls).</td>\n</tr>\n<tr>\n<td><code>Ctrl+X</code></td>\n<td>Open the current prompt in an external editor.</td>\n</tr>\n</tbody>\n</table>\n<h2>✨ Advanced Features</h2>\n<h3>IDE Integration (VS Code)</h3>\n<p>Connect the CLI to VS Code for a more powerful, context-aware experience.</p>\n<ul>\n<li><strong>Workspace Context:</strong> Automatically gets your recent files, cursor position, and selected text.</li>\n<li><strong>Native Diffing:</strong> View and approve code changes directly in your editor's diff viewer.</li>\n<li><strong>Commands:</strong> Use <code>/ide install</code> to set up and <code>/ide enable</code> to connect.</li>\n</ul>\n<h3>Custom Commands</h3>\n<p>Create custom commands using TOML files. Store them in <code>~/.gemini/commands/</code> (global) or <code>&lt;project&gt;/.gemini/commands/</code> (project-specific). See the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/commands.md#custom-commands\">custom commands guide</a> for more details.</p>\n<p><strong>Example: <code>~/.gemini/commands/test/gen.toml</code></strong></p>\n<p>Toml</p>\n<pre><code class=\"language-toml\"><span class=\"code-snippet\" data-language=\"TOML\"># Invoked as: /test:gen &quot;Create a test for the login button&quot;\ndescription = &quot;Generates a unit test based on a description.&quot;\nprompt = &quot;&quot;&quot;\nYou are an expert test engineer. Based on the following requirement, please write a comprehensive unit test using the Jest testing framework.\n \nRequirement: {{args}}\n&quot;&quot;&quot;\n</span></code></pre>\n<h3>Extensions</h3>\n<p>Create extensions to add functionality. Place them in <code>&lt;workspace&gt;/.gemini/extensions/</code> or <code>~/.gemini/extensions/</code>. Each extension is a directory with a <code>gemini-extension.json</code> file that can configure MCP servers, tools, and context files. For more details, see the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/google-gemini/gemini-cli/blob/main/docs/extension.md\">extensions guide</a>.</p>\n<p>For example:</p>\n<pre><code class=\"language-plaintext\"><span class=\"code-snippet\">&lt;workspace&gt;/.gemini/extensions/my-extension/gemini-extension.json\n</span></code></pre>\n<p>JSON</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>name<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>my-extension<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>version<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>1.0.0<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpServers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>my-server<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>node my-server.js<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>contextFileName<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>GEMINI.md<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>excludeTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>run_shell_command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<h3>Checkpointing &amp; Restore</h3>\n<p>When <code>checkpointing</code> is on, the CLI saves a project snapshot before tools modify files.</p>\n<p><strong>Enable in <code>settings.json</code> or with a flag:</strong></p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">gemini</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>checkpointing</span></span>\n</span></span></code></pre>\n<p><strong>Restore to a previous state:</strong></p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> List available checkpoints</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">/restore</span></span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Restore a specific checkpoint</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">/restore</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>checkpoint_file_name<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span>\n</span></span></span></code></pre>\n<hr />\n<p>Thanks for reading! If you have any questions or feedback, please let me know on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://twitter.com/_philschmid\">Twitter</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.linkedin.com/in/philipp-schmid-a6a2bb196/\">LinkedIn</a>.</p>\n",
  "content_markdown": "The [Gemini CLI](https://github.com/google-gemini/gemini-cli) is an open-source AI agent that brings the power of Gemini directly into your terminal, allowing you to perform a wide range of tasks such as coding, problem-solving, and task management using natural language. This cheatsheet provides a quick reference for installing, configuring, and using the Gemini CLI, with a focus on users authenticating via a Gemini API key.\n\n![Gemini CLI Architecture](https://www.philschmid.de/static/blog/gemini-cli-cheatsheet/architecture.png)\n\n## 🚀 Getting Started\n\n### Installation\n\n**Install Globally:**\n\nBash\n\n```bash\nnpm install -g @google/gemini-cli\n```\n\n**Run without Installing:**\n\nBash\n\n```bash\nnpx @google/gemini-cli\n```\n\n### Authentication with a Gemini API Key\n\nAuthenticate with an API key before first use. See the [authentication guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/authentication.md) for details.\n\n1. **Get Your Key:** Get an API key from [Google AI Studio](https://aistudio.google.com/app/apikey).\n\n2. **Set Your Key:** Make the key available to the CLI with one of these methods.\n\n   **Method 1: Shell Environment Variable** Set the `GEMINI_API_KEY` environment variable. To use it across terminal sessions, add this line to your shell's profile (e.g., `~/.bashrc`, `~/.zshrc`).\n\n   Bash\n\n   ```bash\n   export GEMINI_API_KEY=\"YOUR_GEMINI_API_KEY\"\n   ```\n\n   **Method 2: Environment File** Create a `.env` file in `~/.gemini/` for global use or `./.gemini/` for a specific project. The CLI automatically loads it.\n\n   ```plaintext\n   # In .gemini/.env\n   GEMINI_API_KEY=\"YOUR_GEMINI_API_KEY\"\n   ```\n\n### Basic Invocation\n\n**Interactive Mode (REPL):** Start a conversational session.\n\nBash\n\n```bash\ngemini\n```\n\n**Non-Interactive Mode:** Pass a prompt and get a single response.\n\nBash\n\n```bash\ngemini -p \"Summarize the main points of the attached file. @./summary.txt\"\n```\n\n**Piping to the CLI:** Pipe content to the CLI.\n\nBash\n\n```bash\necho \"Count to 10\" | gemini\n```\n\n**Sandbox Mode:** Run tools in a secure sandbox (requires Docker or Podman).\n\nBash\n\n```bash\ngemini --sandbox -p \"your prompt\"\n```\n\n**Other Flags:**\n\n- `-m, --model <model>`: Use a specific model.\n- `-i, --prompt-interactive <prompt>`: Start an interactive session with an initial prompt.\n- `-d, --debug`: Enable debug output.\n- `--yolo`: Auto-approve all tool calls.\n- `--checkpointing`: Save a project snapshot before file modifications. Use `/restore` to revert changes.\n\n[Full list of flags](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#command-line-arguments).\n\n## ⚙️ Configuration\n\n### Settings Files (`settings.json`)\n\nCustomize the CLI by creating a `settings.json` file. Settings are applied with the following precedence:\n\n1. **Project:** `.gemini/settings.json` (overrides user).\n2. **User:** `~/.gemini/settings.json`\n3. **System:** `/etc/gemini-cli/settings.json` (applies to all users, has highest precedence).\n\n**Example `settings.json`:**\n\nJSON\n\n```json\n{\n  \"theme\": \"GitHub\",\n  \"autoAccept\": false,\n  \"sandbox\": \"docker\",\n  \"vimMode\": true,\n  \"checkpointing\": { \"enabled\": true },\n  \"fileFiltering\": { \"respectGitIgnore\": true },\n  \"usageStatisticsEnabled\": true,\n  \"includeDirectories\": [\"../shared-library\", \"~/common-utils\"],\n  \"chatCompression\": { \"contextPercentageThreshold\": 0.6 },\n  \"customThemes\": {\n    \"MyCustomTheme\": {\n      \"name\": \"MyCustomTheme\", \"type\": \"custom\",\n      \"Background\": \"#181818\", \"Foreground\": \"#F8F8F2\",\n      \"LightBlue\": \"#82AAFF\", \"AccentBlue\": \"#61AFEF\", \"AccentPurple\": \"#C678DD\",\n      \"AccentCyan\": \"#56B6C2\", \"AccentGreen\": \"#98C379\", \"AccentYellow\": \"#E5C07B\",\n      \"AccentRed\": \"#E06C75\", \"Comment\": \"#5C6370\", \"Gray\": \"#ABB2BF\"\n    }\n  }\n}\n```\n\n- `autoAccept`: Auto-approve safe, read-only tool calls.\n- `sandbox`: Isolate tool execution (e.g., `true`, `\"docker\"`, or `\"podman\"`).\n- `vimMode`: Enable Vim-style editing for the input prompt.\n- `checkpointing`: Enable the `/restore` command to undo file changes.\n- `includeDirectories`: Define a multi-directory workspace.\n- `chatCompression`: Configure automatic chat history compression.\n- `customThemes`: Define your own color themes.\n- `usageStatisticsEnabled`: Set to `false` to disable usage statistics.\n\nAll details in the [configuration guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md).\n\n### Context Files (`GEMINI.md`)\n\nUse `GEMINI.md` files to provide instructions to the model and tailor it to your project. Use `/init` to generate a starting `GEMINI.md` file for your project.\n\n**Hierarchical Loading:** The CLI combines `GEMINI.md` files from multiple locations. More specific files override general ones. The loading order is:\n\n1. **Global Context:** `~/.gemini/GEMINI.md` (for instructions that apply to all your projects).\n2. **Project/Ancestor Context:** The CLI searches from your current directory up to the project root for `GEMINI.md` files.\n3. **Sub-directory Context:** The CLI also scans subdirectories for `GEMINI.md` files, allowing for component-specific instructions.\n\nUse `/memory show` to see the final combined context being sent to the model.\n\n**Modularizing Context with Imports:** You can organize `GEMINI.md` files by importing other Markdown files with the `@file.md` syntax. This only supports `.md` files.\n\n**Example `GEMINI.md` using imports:**\n\nMarkdown\n\n```markdown\n# Main Project Context: My Awesome App\n \n## General Instructions\n- All Python code must be PEP 8 compliant.\n- Use 2-space indentation for all new files.\n \n## Component-Specific Style Guides\n@./src/frontend/react-style-guide.md\n@./src/backend/fastapi-style-guide.md\n```\n\nMore in the [Full context file guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/configuration.md#context-files-geminimd).\n\n### Ignoring Files with `.geminiignore`\n\nCreate a `.geminiignore` file in your project root to exclude files and directories from Gemini's tools, similar to `.gitignore`.\n\n```plaintext\n# .geminiignore\n/backups/\n*.log\nsecret-config.json\n```\n\n## 🛠️ Working with Tools\n\n### Some Built-in Tools\n\n- **File System Tools:** For interacting with files and directories - `list_directory(path=\"/src\")`, `glob(pattern=\"src/**/*.ts\")`, `read_file(path=\"/path/to/file.txt\")`, `write_file(file_path=\"/path/to/new_file.js\", content=\"console.log('hello');\")`, `replace(file_path=\"...\", old_string=\"...\", new_string=\"...\")`, `search_file_content(pattern=\"myFunction\", include=\"*.js\")`\n- **Shell Tool:** Executes shell commands. **Use with caution.** To restrict commands, use `excludeTools` in `settings.json`. For example: `\"excludeTools\": [\"run_shell_command(rm)\"]`\n- **Web Tools:** For retrieving content and searching online - `google_web_search(query=\"Gemini API rate limits\")`, `web_fetch(prompt=\"Summarize https://my-blog.com/article\")`\n- **Memory Tool:** For saving and recalling information across sessions - `save_memory(fact=\"My preferred CSS framework is Tailwind CSS.\")`\n\n### Custom Tools via MCP Servers\n\nExtend the CLI with your own tools by running Model Context Protocol (MCP) servers. Manage servers via `settings.json` or with the `gemini mcp <add|list|remove>` commands.\n\n**Capabilities:**\n\n- **OAuth 2.0 Support:** Securely connect to remote servers.\n- **Rich Content Returns:** Tools can return multi-modal content like text and images.\n- **Prompts as Commands:** Expose predefined prompts from your server as new slash commands in the CLI.\n\n**Example `mcpServers` configuration:**\n\nJSON\n\n```json\n\"mcpServers\": {\n  \"myPythonServer\": {\n    \"command\": \"python\",\n    \"args\": [\"-m\", \"my_mcp_server\", \"--port\", \"8080\"],\n    \"cwd\": \"./mcp_tools/python\",\n    \"env\": {\n      \"DATABASE_URL\": \"$DB_URL_FROM_ENV\"\n    },\n    \"timeout\": 15000,\n    \"trust\": false,\n    \"includeTools\": [\"safe_tool_1\", \"safe_tool_2\"],\n    \"excludeTools\": [\"dangerous_tool\"]\n  }\n}\n```\n\n**Transport (choose one):**\n\n- `command`, `args`, `cwd`: Launch a local process via Stdio\n- `url`: SSE endpoint (e.g., `\"http://localhost:8080/sse\"`)\n- `httpUrl`: HTTP streaming endpoint (e.g., `\"http://localhost:8080/mcp\"`)\n\n**Optional:**\n\n- `env`: Environment variables. Use `$VAR_NAME` syntax to reference shell variables.\n- `headers`: Key-value map of HTTP headers for `url`/`httpUrl` transports.\n- `timeout`: Request timeout in milliseconds (default: 10 minutes).\n- `trust`: Bypass all tool confirmations for this server.\n- `includeTools`/`excludeTools`: Whitelist/blacklist specific tools. `excludeTools` takes precedence.\n\nUsing OAuth take a look at [mcp-server.md](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#oauth-support-for-remote-mcp-servers)\n\n## ⚡ Core Commands\n\n### Helpful Slash Commands (`/`)\n\n| Command              | Description                                                              |\n| -------------------- | ------------------------------------------------------------------------ |\n| `/compress`          | Replace the entire chat context with a summary to save tokens.           |\n| `/copy`              | Copy the last response to the clipboard.                                 |\n| `/mcp`               | List configured MCP servers and their available tools.                   |\n| `/clear`             | Clear the terminal screen and context (`Ctrl+L` also works).             |\n| `/tools`             | List available tools.                                                    |\n| `/extensions`        | List active extensions.                                                  |\n| `/stats`             | Show session token usage and savings.                                    |\n| `/memory show`       | Show the combined context from all `GEMINI.md` files.                    |\n| `/memory refresh`    | Reload all `GEMINI.md` files.                                            |\n| `/chat save <tag>`   | Save the current conversation with a tag.                                |\n| `/chat resume <tag>` | Resume a saved conversation.                                             |\n| `/chat list`         | List saved conversation tags.                                            |\n| `/restore`           | List or restore a project state checkpoint.                              |\n| `/auth`              | Change the current authentication method.                                |\n| `/bug`               | File an issue or bug report about the Gemini CLI.                        |\n| `/help`              | Display help information and available commands.                         |\n| `/theme`             | Change the CLI's visual theme.                                           |\n| `/quit`              | Exit the Gemini CLI.                                                     |\n| `/ide`               | Manage integration with your IDE (e.g., `install`, `enable`).            |\n| `/settings`          | Open a friendly editor to change your `settings.json` file.              |\n| `/vim`               | Toggle Vim mode for input editing.                                       |\n| `/init`              | Generate a starting `GEMINI.md` context file for your project.           |\n| `/directory`         | Manage directories in a multi-directory workspace (e.g., `add`, `show`). |\n\n### Context Commands (`@`)\n\nReference files or directories in your prompt. The CLI respects `.gitignore` and `.geminiignore`. You can also reference images, PDFs, audio, and video files.\n\n**Include a single file:**\n\n```plaintext\n> Explain this code to me. @./src/main.js\n```\n\n**Include an image:**\n\n```plaintext\n> Describe what you see in this screenshot. @./ux-mockup.png\n```\n\n**Include a whole directory (recursively):**\n\n```plaintext\n> Refactor the code in this directory to use async/await. @./src/\n```\n\n### Shell Commands (`!`)\n\nRun shell commands directly in the CLI.\n\n**Run a single command:**\n\n```plaintext\n> !git status\n```\n\n**Toggle Shell Mode:** Enter `!` by itself to switch to a persistent shell mode. Type `!` again to exit.\n\n### Keyboard Shortcuts\n\n| Shortcut | Description                                     |\n| -------- | ----------------------------------------------- |\n| `Ctrl+L` | Clear the screen.                               |\n| `Ctrl+V` | Paste text or an image from the clipboard.      |\n| `Ctrl+Y` | Toggle YOLO mode (auto-approve all tool calls). |\n| `Ctrl+X` | Open the current prompt in an external editor.  |\n\n## ✨ Advanced Features\n\n### IDE Integration (VS Code)\n\nConnect the CLI to VS Code for a more powerful, context-aware experience.\n\n- **Workspace Context:** Automatically gets your recent files, cursor position, and selected text.\n- **Native Diffing:** View and approve code changes directly in your editor's diff viewer.\n- **Commands:** Use `/ide install` to set up and `/ide enable` to connect.\n\n### Custom Commands\n\nCreate custom commands using TOML files. Store them in `~/.gemini/commands/` (global) or `<project>/.gemini/commands/` (project-specific). See the [custom commands guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/commands.md#custom-commands) for more details.\n\n**Example: `~/.gemini/commands/test/gen.toml`**\n\nToml\n\n```toml\n# Invoked as: /test:gen \"Create a test for the login button\"\ndescription = \"Generates a unit test based on a description.\"\nprompt = \"\"\"\nYou are an expert test engineer. Based on the following requirement, please write a comprehensive unit test using the Jest testing framework.\n \nRequirement: {{args}}\n\"\"\"\n```\n\n### Extensions\n\nCreate extensions to add functionality. Place them in `<workspace>/.gemini/extensions/` or `~/.gemini/extensions/`. Each extension is a directory with a `gemini-extension.json` file that can configure MCP servers, tools, and context files. For more details, see the [extensions guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/extension.md).\n\nFor example:\n\n```plaintext\n<workspace>/.gemini/extensions/my-extension/gemini-extension.json\n```\n\nJSON\n\n```json\n{\n  \"name\": \"my-extension\",\n  \"version\": \"1.0.0\",\n  \"mcpServers\": {\n    \"my-server\": {\n      \"command\": \"node my-server.js\"\n    }\n  },\n  \"contextFileName\": \"GEMINI.md\",\n  \"excludeTools\": [\"run_shell_command\"]\n}\n```\n\n### Checkpointing & Restore\n\nWhen `checkpointing` is on, the CLI saves a project snapshot before tools modify files.\n\n**Enable in `settings.json` or with a flag:**\n\nBash\n\n```bash\ngemini --checkpointing\n```\n\n**Restore to a previous state:**\n\nBash\n\n```bash\n# List available checkpoints\n/restore\n \n# Restore a specific checkpoint\n/restore <checkpoint_file_name>\n```\n\n* * *\n\nThanks for reading! If you have any questions or feedback, please let me know on [Twitter](https://twitter.com/_philschmid) or [LinkedIn](https://www.linkedin.com/in/philipp-schmid-a6a2bb196/).\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2025-07-24T00:00:00+00:00",
  "date_modified": "2025-07-24T00:00:00+00:00",
  "date_published": "2025-07-24T00:00:00+00:00",
  "description": "A comprehensive cheatsheet on using Google's Gemini CLI, covering installation, authentication, configuration, and core commands.",
  "external_url": "https://www.philschmid.de/gemini-cli-cheatsheet",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/philschmid-de/2025/07/2025-07-24-google-gemini-cli-cheatsheet.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/philschmid-de/2025/07/2025-07-24-google-gemini-cli-cheatsheet.md"
  },
  "id": "urn:aggr:item:19de8e64f561acd5c88b7afc035dd113fbdbc3a9",
  "isBasedOn": {
    "@id": "https://www.philschmid.de/gemini-cli-cheatsheet"
  },
  "mainEntity": {
    "@id": "https://www.philschmid.de/gemini-cli-cheatsheet",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2025-07-24-google-gemini-cli-cheatsheet/#webpage"
    },
    "dateModified": "2025-07-24T00:00:00+00:00",
    "datePublished": "2025-07-24T00:00:00+00:00",
    "headline": "Google Gemini CLI Cheatsheet",
    "timeRequired": "PT7M",
    "url": "https://www.philschmid.de/gemini-cli-cheatsheet",
    "wordCount": 1549
  },
  "name": "Archived snapshot: Google Gemini CLI Cheatsheet",
  "preview": null,
  "reading_minutes": 7,
  "replicated_at": null,
  "source": "philschmid-de",
  "source_name": "philschmid.de - RSS feed",
  "summary": "A comprehensive cheatsheet on using Google's Gemini CLI, covering installation, authentication, configuration, and core commands.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "Google Gemini CLI Cheatsheet",
  "url": "https://aggr.aymericbeaumet.com/items/philschmid-de/2025-07-24-google-gemini-cli-cheatsheet/",
  "word_count": 1549
}