"markdownDescription":"Hide the window title bar\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"showStatusInTitle":{
"title":"Show Status in Title",
"description":"Show Gemini CLI status and thoughts in the terminal window title",
"markdownDescription":"Show Gemini CLI status and thoughts in the terminal window title\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"hideTips":{
"title":"Hide Tips",
"description":"Hide helpful tips in the UI",
"markdownDescription":"Hide helpful tips in the UI\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`",
"description":"Custom witty phrases to display during loading. When provided, the CLI cycles through these instead of the defaults.",
"markdownDescription":"Custom witty phrases to display during loading. When provided, the CLI cycles through these instead of the defaults.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Render output in plain-text to be more screen reader accessible",
"markdownDescription":"Render output in plain-text to be more screen reader accessible\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `false`",
"description":"Settings related to the generative model.",
"markdownDescription":"Settings related to the generative model.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"name":{
"title":"Model",
"description":"The Gemini model to use for conversations.",
"markdownDescription":"The Gemini model to use for conversations.\n\n- Category: `Model`\n- Requires restart: `no`",
"type":"string"
},
"maxSessionTurns":{
"title":"Max Session Turns",
"description":"Maximum number of user/model/tool turns to keep in a session. -1 means unlimited.",
"markdownDescription":"Maximum number of user/model/tool turns to keep in a session. -1 means unlimited.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `-1`",
"default":-1,
"type":"number"
},
"summarizeToolOutput":{
"title":"Summarize Tool Output",
"description":"Enables or disables summarization of tool output. Configure per-tool token budgets (for example {\"run_shell_command\": {\"tokenBudget\": 2000}}). Currently only the run_shell_command tool supports summarization.",
"markdownDescription":"Enables or disables summarization of tool output. Configure per-tool token budgets (for example {\"run_shell_command\": {\"tokenBudget\": 2000}}). Currently only the run_shell_command tool supports summarization.\n\n- Category: `Model`\n- Requires restart: `no`",
"type":"object",
"additionalProperties":{
"$ref":"#/$defs/SummarizeToolOutputSettings"
}
},
"compressionThreshold":{
"title":"Compression Threshold",
"description":"The fraction of context usage at which to trigger context compression (e.g. 0.2, 0.3).",
"markdownDescription":"The fraction of context usage at which to trigger context compression (e.g. 0.2, 0.3).\n\n- Category: `Model`\n- Requires restart: `yes`\n- Default: `0.2`",
"default":0.2,
"type":"number"
},
"skipNextSpeakerCheck":{
"title":"Skip Next Speaker Check",
"description":"Skip the next speaker check.",
"markdownDescription":"Skip the next speaker check.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `true`",
"default":true,
"type":"boolean"
}
},
"additionalProperties":false
},
"context":{
"title":"Context",
"description":"Settings for managing context provided to the model.",
"markdownDescription":"Settings for managing context provided to the model.\n\n- Category: `Context`\n- Requires restart: `no`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"fileName":{
"title":"Context File Name",
"description":"The name of the context file or files to load into memory. Accepts either a single string or an array of strings.",
"markdownDescription":"The name of the context file or files to load into memory. Accepts either a single string or an array of strings.\n\n- Category: `Context`\n- Requires restart: `no`",
"$ref":"#/$defs/StringOrStringArray"
},
"importFormat":{
"title":"Memory Import Format",
"description":"The format to use when importing memory.",
"markdownDescription":"The format to use when importing memory.\n\n- Category: `Context`\n- Requires restart: `no`",
"type":"string"
},
"discoveryMaxDirs":{
"title":"Memory Discovery Max Dirs",
"description":"Maximum number of directories to search for memory.",
"markdownDescription":"Maximum number of directories to search for memory.\n\n- Category: `Context`\n- Requires restart: `no`\n- Default: `200`",
"default":200,
"type":"number"
},
"includeDirectories":{
"title":"Include Directories",
"description":"Additional directories to include in the workspace context. Missing directories will be skipped with a warning.",
"markdownDescription":"Additional directories to include in the workspace context. Missing directories will be skipped with a warning.\n\n- Category: `Context`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"type":"array",
"items":{
"type":"string"
}
},
"loadMemoryFromIncludeDirectories":{
"title":"Load Memory From Include Directories",
"description":"Controls how /memory refresh loads GEMINI.md files. When true, include directories are scanned; when false, only the current directory is used.",
"markdownDescription":"Controls how /memory refresh loads GEMINI.md files. When true, include directories are scanned; when false, only the current directory is used.\n\n- Category: `Context`\n- Requires restart: `no`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"fileFiltering":{
"title":"File Filtering",
"description":"Settings for git-aware file filtering.",
"description":"Enable recursive file search functionality when completing @ references in the prompt.",
"markdownDescription":"Enable recursive file search functionality when completing @ references in the prompt.\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"disableFuzzySearch":{
"title":"Disable Fuzzy Search",
"description":"Disable fuzzy search when searching for files.",
"markdownDescription":"Disable fuzzy search when searching for files.\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `false`",
"default":false,
"type":"boolean"
}
},
"additionalProperties":false
}
},
"additionalProperties":false
},
"tools":{
"title":"Tools",
"description":"Settings for built-in and custom tools.",
"markdownDescription":"Settings for built-in and custom tools.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"sandbox":{
"title":"Sandbox",
"description":"Sandbox execution environment. Set to a boolean to enable or disable the sandbox, or provide a string path to a sandbox profile.",
"markdownDescription":"Sandbox execution environment. Set to a boolean to enable or disable the sandbox, or provide a string path to a sandbox profile.\n\n- Category: `Tools`\n- Requires restart: `yes`",
"description":"Use node-pty for an interactive shell experience. Fallback to child_process still applies.",
"markdownDescription":"Use node-pty for an interactive shell experience. Fallback to child_process still applies.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"pager":{
"title":"Pager",
"description":"The pager command to use for shell output. Defaults to `cat`.",
"markdownDescription":"The pager command to use for shell output. Defaults to `cat`.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `cat`",
"default":"cat",
"type":"string"
},
"showColor":{
"title":"Show Color",
"description":"Show color in shell output.",
"markdownDescription":"Show color in shell output.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `false`",
"default":false,
"type":"boolean"
}
},
"additionalProperties":false
},
"autoAccept":{
"title":"Auto Accept",
"description":"Automatically accept and execute tool calls that are considered safe (e.g., read-only operations).",
"markdownDescription":"Automatically accept and execute tool calls that are considered safe (e.g., read-only operations).\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"core":{
"title":"Core Tools",
"description":"Restrict the set of built-in tools with an allowlist. Match semantics mirror tools.allowed; see the built-in tools documentation for available names.",
"markdownDescription":"Restrict the set of built-in tools with an allowlist. Match semantics mirror tools.allowed; see the built-in tools documentation for available names.\n\n- Category: `Tools`\n- Requires restart: `yes`",
"type":"array",
"items":{
"type":"string"
}
},
"allowed":{
"title":"Allowed Tools",
"description":"Tool names that bypass the confirmation dialog. Useful for trusted commands (for example [\"run_shell_command(git)\", \"run_shell_command(npm test)\"]). See shell tool command restrictions for matching details.",
"markdownDescription":"Tool names that bypass the confirmation dialog. Useful for trusted commands (for example [\"run_shell_command(git)\", \"run_shell_command(npm test)\"]). See shell tool command restrictions for matching details.\n\n- Category: `Advanced`\n- Requires restart: `yes`",
"type":"array",
"items":{
"type":"string"
}
},
"exclude":{
"title":"Exclude Tools",
"description":"Tool names to exclude from discovery.",
"markdownDescription":"Tool names to exclude from discovery.\n\n- Category: `Tools`\n- Requires restart: `yes`",
"type":"array",
"items":{
"type":"string"
}
},
"discoveryCommand":{
"title":"Tool Discovery Command",
"description":"Command to run for tool discovery.",
"markdownDescription":"Command to run for tool discovery.\n\n- Category: `Tools`\n- Requires restart: `yes`",
"type":"string"
},
"callCommand":{
"title":"Tool Call Command",
"description":"Defines a custom shell command for invoking discovered tools. The command must take the tool name as the first argument, read JSON arguments from stdin, and emit JSON results on stdout.",
"markdownDescription":"Defines a custom shell command for invoking discovered tools. The command must take the tool name as the first argument, read JSON arguments from stdin, and emit JSON results on stdout.\n\n- Category: `Tools`\n- Requires restart: `yes`",
"type":"string"
},
"useRipgrep":{
"title":"Use Ripgrep",
"description":"Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance.",
"markdownDescription":"Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"enableToolOutputTruncation":{
"title":"Enable Tool Output Truncation",
"description":"Enable truncation of large tool outputs.",
"markdownDescription":"Enable truncation of large tool outputs.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"truncateToolOutputThreshold":{
"title":"Tool Output Truncation Threshold",
"description":"Truncate tool output if it is larger than this many characters. Set to -1 to disable.",
"markdownDescription":"Truncate tool output if it is larger than this many characters. Set to -1 to disable.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `4000000`",
"default":4000000,
"type":"number"
},
"truncateToolOutputLines":{
"title":"Tool Output Truncation Lines",
"description":"The number of lines to keep when truncating tool output.",
"markdownDescription":"The number of lines to keep when truncating tool output.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `1000`",
"default":1000,
"type":"number"
},
"enableMessageBusIntegration":{
"title":"Enable Message Bus Integration",
"description":"Enable policy-based tool confirmation via message bus integration. When enabled, tools automatically respect policy engine decisions (ALLOW/DENY/ASK_USER) without requiring individual tool implementations.",
"markdownDescription":"Enable policy-based tool confirmation via message bus integration. When enabled, tools automatically respect policy engine decisions (ALLOW/DENY/ASK_USER) without requiring individual tool implementations.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"enableHooks":{
"title":"Enable Hooks System",
"description":"Enable the hooks system for intercepting and customizing Gemini CLI behavior. When enabled, hooks configured in settings will execute at appropriate lifecycle events (BeforeTool, AfterTool, BeforeModel, etc.). Requires MessageBus integration.",
"markdownDescription":"Enable the hooks system for intercepting and customizing Gemini CLI behavior. When enabled, hooks configured in settings will execute at appropriate lifecycle events (BeforeTool, AfterTool, BeforeModel, etc.). Requires MessageBus integration.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `false`",
"default":false,
"type":"boolean"
}
},
"additionalProperties":false
},
"mcp":{
"title":"MCP",
"description":"Settings for Model Context Protocol (MCP) servers.",
"markdownDescription":"Settings for Model Context Protocol (MCP) servers.\n\n- Category: `MCP`\n- Requires restart: `yes`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"serverCommand":{
"title":"MCP Server Command",
"description":"Command to start an MCP server.",
"markdownDescription":"Command to start an MCP server.\n\n- Category: `MCP`\n- Requires restart: `yes`",
"type":"string"
},
"allowed":{
"title":"Allow MCP Servers",
"description":"A list of MCP servers to allow.",
"markdownDescription":"A list of MCP servers to allow.\n\n- Category: `MCP`\n- Requires restart: `yes`",
"type":"array",
"items":{
"type":"string"
}
},
"excluded":{
"title":"Exclude MCP Servers",
"description":"A list of MCP servers to exclude.",
"markdownDescription":"A list of MCP servers to exclude.\n\n- Category: `MCP`\n- Requires restart: `yes`",
"type":"array",
"items":{
"type":"string"
}
}
},
"additionalProperties":false
},
"useSmartEdit":{
"title":"Use Smart Edit",
"description":"Enable the smart-edit tool instead of the replace tool.",
"markdownDescription":"Enable the smart-edit tool instead of the replace tool.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"useWriteTodos":{
"title":"Use Write Todos",
"description":"Enable the write_todos_list tool.",
"description":"The currently selected authentication type.",
"markdownDescription":"The currently selected authentication type.\n\n- Category: `Security`\n- Requires restart: `yes`",
"type":"string"
},
"enforcedType":{
"title":"Enforced Auth Type",
"description":"The required auth type. If this does not match the selected auth type, the user will be prompted to re-authenticate.",
"markdownDescription":"The required auth type. If this does not match the selected auth type, the user will be prompted to re-authenticate.\n\n- Category: `Advanced`\n- Requires restart: `yes`",
"type":"string"
},
"useExternal":{
"title":"Use External Auth",
"description":"Whether to use an external authentication flow.",
"markdownDescription":"Whether to use an external authentication flow.\n\n- Category: `Security`\n- Requires restart: `yes`",
"type":"boolean"
}
},
"additionalProperties":false
}
},
"additionalProperties":false
},
"advanced":{
"title":"Advanced",
"description":"Advanced settings for power users.",
"markdownDescription":"Advanced settings for power users.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`",
"description":"Enables extension loading/unloading within the CLI session.",
"markdownDescription":"Enables extension loading/unloading within the CLI session.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"useModelRouter":{
"title":"Use Model Router",
"description":"Enable model routing to route requests to the best model based on complexity.",
"markdownDescription":"Enable model routing to route requests to the best model based on complexity.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"codebaseInvestigatorSettings":{
"title":"Codebase Investigator Settings",
"description":"Configuration for Codebase Investigator.",
"markdownDescription":"Maximum number of turns for the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `10`",
"markdownDescription":"Maximum time for the Codebase Investigator agent (in minutes).\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `3`",
"description":"The model to use for the Codebase Investigator agent.",
"markdownDescription":"The model to use for the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `gemini-2.5-pro`",
"default":"gemini-2.5-pro",
"type":"string"
}
},
"additionalProperties":false
}
},
"additionalProperties":false
},
"extensions":{
"title":"Extensions",
"description":"Settings for extensions.",
"markdownDescription":"Settings for extensions.\n\n- Category: `Extensions`\n- Requires restart: `yes`\n- Default: `{}`",
"description":"List of workspaces for which the migration nudge has been shown.",
"markdownDescription":"List of workspaces for which the migration nudge has been shown.\n\n- Category: `Extensions`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"type":"array",
"items":{
"type":"string"
}
}
},
"additionalProperties":false
},
"hooks":{
"title":"Hooks",
"description":"Hook configurations for intercepting and customizing agent behavior.",
"markdownDescription":"Hook configurations for intercepting and customizing agent behavior.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `{}`",
"default":{},
"type":"object",
"additionalProperties":true
}
},
"$defs":{
"MCPServerConfig":{
"type":"object",
"description":"Definition of a Model Context Protocol (MCP) server configuration.",
"additionalProperties":false,
"properties":{
"command":{
"type":"string",
"description":"Executable invoked for stdio transport."
},
"args":{
"type":"array",
"description":"Command-line arguments for the stdio transport command.",
"items":{
"type":"string"
}
},
"env":{
"type":"object",
"description":"Environment variables to set for the server process.",
"additionalProperties":{
"type":"string"
}
},
"cwd":{
"type":"string",
"description":"Working directory for the server process."
},
"url":{
"type":"string",
"description":"SSE transport URL."
},
"httpUrl":{
"type":"string",
"description":"Streaming HTTP transport URL."
},
"headers":{
"type":"object",
"description":"Additional HTTP headers sent to the server.",
"additionalProperties":{
"type":"string"
}
},
"tcp":{
"type":"string",
"description":"TCP address for websocket transport."
},
"timeout":{
"type":"number",
"description":"Timeout in milliseconds for MCP requests."
},
"trust":{
"type":"boolean",
"description":"Marks the server as trusted. Trusted servers may gain additional capabilities."
},
"description":{
"type":"string",
"description":"Human-readable description of the server."
},
"includeTools":{
"type":"array",
"description":"Subset of tools that should be enabled for this server. When omitted all tools are enabled.",
"items":{
"type":"string"
}
},
"excludeTools":{
"type":"array",
"description":"Tools that should be disabled for this server even if exposed.",
"items":{
"type":"string"
}
},
"extension":{
"type":"object",
"description":"Metadata describing the Gemini CLI extension that owns this MCP server.",
"additionalProperties":{
"type":["string","boolean","number"]
}
},
"oauth":{
"type":"object",
"description":"OAuth configuration for authenticating with the server.",
"additionalProperties":true
},
"authProviderType":{
"type":"string",
"description":"Authentication provider used for acquiring credentials (for example `dynamic_discovery`).",