"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`",
"description":"Enables the hooks system experiment. When disabled, the hooks system is completely deactivated regardless of other settings.",
"markdownDescription":"Enables the hooks system experiment. When disabled, the hooks system is completely deactivated regardless of other settings.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `true`",
"description":"Enable the \"Allow for all future sessions\" option in tool confirmation dialogs.",
"markdownDescription":"Enable the \"Allow for all future sessions\" option in tool confirmation dialogs.\n\n- Category: `Security`\n- Requires restart: `no`\n- Default: `false`",
"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: `[]`",
"description":"Canonical toggle for the hooks system. When disabled, no hooks will be executed.",
"markdownDescription":"Canonical toggle for the hooks system. When disabled, no hooks will be executed.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `false`",
"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: `[]`",
"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.",