"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":"Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled.",
"markdownDescription":"Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `true`",
"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).",
"description":"Custom named presets for model configs. These are merged with (and override) the built-in aliases.",
"markdownDescription":"Custom named presets for model configs. These are merged with (and override) the built-in aliases.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `{}`",
"description":"Custom model config overrides. These are merged with (and added to) the built-in overrides.",
"markdownDescription":"Custom model config overrides. These are merged with (and added to) the built-in overrides.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used.",
"markdownDescription":"Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `[]`",
"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`",
"description":"The maximum time in seconds allowed without output from the shell command. Defaults to 5 minutes.",
"markdownDescription":"The maximum time in seconds allowed without output from the shell command. Defaults to 5 minutes.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `300`",
"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.",
"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`",
"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: `{}`",
"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`",
"markdownDescription":"The model to use for the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `auto`",
"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: `{}`",
"description":"List of hook names (commands) that should be disabled. Hooks in this list will not execute even if configured.",
"markdownDescription":"List of hook names (commands) that should be disabled. Hooks in this list will not execute even if configured.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"type":"array",
"items":{
"type":"string"
}
},
"BeforeTool":{
"title":"Before Tool Hooks",
"description":"Hooks that execute before tool execution. Can intercept, validate, or modify tool calls.",
"markdownDescription":"Hooks that execute before tool execution. Can intercept, validate, or modify tool calls.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterTool":{
"title":"After Tool Hooks",
"description":"Hooks that execute after tool execution. Can process results, log outputs, or trigger follow-up actions.",
"markdownDescription":"Hooks that execute after tool execution. Can process results, log outputs, or trigger follow-up actions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeAgent":{
"title":"Before Agent Hooks",
"description":"Hooks that execute before agent loop starts. Can set up context or initialize resources.",
"markdownDescription":"Hooks that execute before agent loop starts. Can set up context or initialize resources.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterAgent":{
"title":"After Agent Hooks",
"description":"Hooks that execute after agent loop completes. Can perform cleanup or summarize results.",
"markdownDescription":"Hooks that execute after agent loop completes. Can perform cleanup or summarize results.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"Notification":{
"title":"Notification Hooks",
"description":"Hooks that execute on notification events (errors, warnings, info). Can log or alert on specific conditions.",
"markdownDescription":"Hooks that execute on notification events (errors, warnings, info). Can log or alert on specific conditions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"SessionStart":{
"title":"Session Start Hooks",
"description":"Hooks that execute when a session starts. Can initialize session-specific resources or state.",
"markdownDescription":"Hooks that execute when a session starts. Can initialize session-specific resources or state.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"SessionEnd":{
"title":"Session End Hooks",
"description":"Hooks that execute when a session ends. Can perform cleanup or persist session data.",
"markdownDescription":"Hooks that execute when a session ends. Can perform cleanup or persist session data.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"PreCompress":{
"title":"Pre-Compress Hooks",
"description":"Hooks that execute before chat history compression. Can back up or analyze conversation before compression.",
"markdownDescription":"Hooks that execute before chat history compression. Can back up or analyze conversation before compression.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeModel":{
"title":"Before Model Hooks",
"description":"Hooks that execute before LLM requests. Can modify prompts, inject context, or control model parameters.",
"markdownDescription":"Hooks that execute before LLM requests. Can modify prompts, inject context, or control model parameters.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterModel":{
"title":"After Model Hooks",
"description":"Hooks that execute after LLM responses. Can process outputs, extract information, or log interactions.",
"markdownDescription":"Hooks that execute after LLM responses. Can process outputs, extract information, or log interactions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeToolSelection":{
"title":"Before Tool Selection Hooks",
"description":"Hooks that execute before tool selection. Can filter or prioritize available tools dynamically.",
"markdownDescription":"Hooks that execute before tool selection. Can filter or prioritize available tools dynamically.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Array of hook definition objects for a specific event.",
"items":{
"type":"object",
"description":"Hook definition specifying matcher pattern and hook configurations.",
"properties":{
"matcher":{
"type":"string",
"description":"Pattern to match against the event context (tool name, notification type, etc.). Supports exact match, regex (/pattern/), and wildcards (*)."
},
"hooks":{
"type":"array",
"description":"Hooks to execute when the matcher matches.",
"items":{
"type":"object",
"description":"Individual hook configuration.",
"properties":{
"type":{
"type":"string",
"description":"Type of hook (currently only \"command\" supported)."
},
"command":{
"type":"string",
"description":"Shell command to execute. Receives JSON input via stdin and returns JSON output via stdout."
},
"timeout":{
"type":"number",
"description":"Timeout in milliseconds for hook execution."