{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/google-gemini/gemini-cli/main/schemas/settings.schema.json", "title": "Gemini CLI Settings", "description": "Configuration file schema for Gemini CLI settings. This schema enables IDE completion for `settings.json`.", "type": "object", "additionalProperties": false, "properties": { "$schema": { "title": "Schema", "description": "The URL of the JSON schema for this settings file. Used by editors for validation and autocompletion.", "type": "string", "default": "https://raw.githubusercontent.com/google-gemini/gemini-cli/main/schemas/settings.schema.json" }, "mcpServers": { "title": "MCP Servers", "description": "Configuration for MCP servers.", "markdownDescription": "Configuration for MCP servers.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "additionalProperties": { "$ref": "#/$defs/MCPServerConfig" } }, "general": { "title": "General", "description": "General application settings.", "markdownDescription": "General application settings.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "previewFeatures": { "title": "Preview Features (e.g., models)", "description": "Enable preview features (e.g., preview models).", "markdownDescription": "Enable preview features (e.g., preview models).\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "preferredEditor": { "title": "Preferred Editor", "description": "The preferred editor to open files in.", "markdownDescription": "The preferred editor to open files in.\n\n- Category: `General`\n- Requires restart: `no`", "type": "string" }, "vimMode": { "title": "Vim Mode", "description": "Enable Vim keybindings", "markdownDescription": "Enable Vim keybindings\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "disableAutoUpdate": { "title": "Disable Auto Update", "description": "Disable automatic updates", "markdownDescription": "Disable automatic updates\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "disableUpdateNag": { "title": "Disable Update Nag", "description": "Disable update notification prompts.", "markdownDescription": "Disable update notification prompts.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "checkpointing": { "title": "Checkpointing", "description": "Session checkpointing settings.", "markdownDescription": "Session checkpointing settings.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "Enable Checkpointing", "description": "Enable session checkpointing for recovery", "markdownDescription": "Enable session checkpointing for recovery\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" } }, "additionalProperties": false }, "enablePromptCompletion": { "title": "Enable Prompt Completion", "description": "Enable AI-powered prompt completion suggestions while typing.", "markdownDescription": "Enable AI-powered prompt completion suggestions while typing.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "retryFetchErrors": { "title": "Retry Fetch Errors", "description": "Retry on \"exception TypeError: fetch failed sending request\" errors.", "markdownDescription": "Retry on \"exception TypeError: fetch failed sending request\" errors.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "debugKeystrokeLogging": { "title": "Debug Keystroke Logging", "description": "Enable debug logging of keystrokes to the console.", "markdownDescription": "Enable debug logging of keystrokes to the console.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "sessionRetention": { "title": "Session Retention", "description": "Settings for automatic session cleanup.", "markdownDescription": "Settings for automatic session cleanup.\n\n- Category: `General`\n- Requires restart: `no`", "type": "object", "properties": { "enabled": { "title": "Enable Session Cleanup", "description": "Enable automatic session cleanup", "markdownDescription": "Enable automatic session cleanup\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "maxAge": { "title": "Max Session Age", "description": "Maximum age of sessions to keep (e.g., \"30d\", \"7d\", \"24h\", \"1w\")", "markdownDescription": "Maximum age of sessions to keep (e.g., \"30d\", \"7d\", \"24h\", \"1w\")\n\n- Category: `General`\n- Requires restart: `no`", "type": "string" }, "maxCount": { "title": "Max Session Count", "description": "Alternative: Maximum number of sessions to keep (most recent)", "markdownDescription": "Alternative: Maximum number of sessions to keep (most recent)\n\n- Category: `General`\n- Requires restart: `no`", "type": "number" }, "minRetention": { "title": "Min Retention Period", "description": "Minimum retention period (safety limit, defaults to \"1d\")", "markdownDescription": "Minimum retention period (safety limit, defaults to \"1d\")\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `1d`", "default": "1d", "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, "output": { "title": "Output", "description": "Settings for the CLI output.", "markdownDescription": "Settings for the CLI output.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "format": { "title": "Output Format", "description": "The format of the CLI output.", "markdownDescription": "The format of the CLI output.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `text`", "default": "text", "type": "string", "enum": ["text", "json"] } }, "additionalProperties": false }, "ui": { "title": "UI", "description": "User interface settings.", "markdownDescription": "User interface settings.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "theme": { "title": "Theme", "description": "The color theme for the UI. See the CLI themes guide for available options.", "markdownDescription": "The color theme for the UI. See the CLI themes guide for available options.\n\n- Category: `UI`\n- Requires restart: `no`", "type": "string" }, "customThemes": { "title": "Custom Themes", "description": "Custom theme definitions.", "markdownDescription": "Custom theme definitions.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "additionalProperties": { "$ref": "#/$defs/CustomTheme" } }, "hideWindowTitle": { "title": "Hide Window Title", "description": "Hide the window title bar", "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" }, "showHomeDirectoryWarning": { "title": "Show Home Directory Warning", "description": "Show a warning when running Gemini CLI in the home directory.", "markdownDescription": "Show a warning when running Gemini CLI in the home directory.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "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`", "default": false, "type": "boolean" }, "hideBanner": { "title": "Hide Banner", "description": "Hide the application banner", "markdownDescription": "Hide the application banner\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "hideContextSummary": { "title": "Hide Context Summary", "description": "Hide the context summary (GEMINI.md, MCP servers) above the input.", "markdownDescription": "Hide the context summary (GEMINI.md, MCP servers) above the input.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "footer": { "title": "Footer", "description": "Settings for the footer.", "markdownDescription": "Settings for the footer.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "hideCWD": { "title": "Hide CWD", "description": "Hide the current working directory path in the footer.", "markdownDescription": "Hide the current working directory path in the footer.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "hideSandboxStatus": { "title": "Hide Sandbox Status", "description": "Hide the sandbox status indicator in the footer.", "markdownDescription": "Hide the sandbox status indicator in the footer.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "hideModelInfo": { "title": "Hide Model Info", "description": "Hide the model name and context usage in the footer.", "markdownDescription": "Hide the model name and context usage in the footer.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "hideContextPercentage": { "title": "Hide Context Window Percentage", "description": "Hides the context window remaining percentage.", "markdownDescription": "Hides the context window remaining percentage.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" } }, "additionalProperties": false }, "hideFooter": { "title": "Hide Footer", "description": "Hide the footer from the UI", "markdownDescription": "Hide the footer from the UI\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "showMemoryUsage": { "title": "Show Memory Usage", "description": "Display memory usage information in the UI", "markdownDescription": "Display memory usage information in the UI\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "showLineNumbers": { "title": "Show Line Numbers", "description": "Show line numbers in the chat.", "markdownDescription": "Show line numbers in the chat.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" }, "showCitations": { "title": "Show Citations", "description": "Show citations for generated text in the chat.", "markdownDescription": "Show citations for generated text in the chat.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "showModelInfoInChat": { "title": "Show Model Info In Chat", "description": "Show the model name in the chat for each model turn.", "markdownDescription": "Show the model name in the chat for each model turn.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "useFullWidth": { "title": "Use Full Width", "description": "Use the entire width of the terminal for output.", "markdownDescription": "Use the entire width of the terminal for output.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" }, "useAlternateBuffer": { "title": "Use Alternate Screen Buffer", "description": "Use an alternate screen buffer for the UI, preserving shell history.", "markdownDescription": "Use an alternate screen buffer for the UI, preserving shell history.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "incrementalRendering": { "title": "Incremental Rendering", "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`", "default": true, "type": "boolean" }, "customWittyPhrases": { "title": "Custom Witty Phrases", "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: `[]`", "default": [], "type": "array", "items": { "type": "string" } }, "accessibility": { "title": "Accessibility", "description": "Accessibility settings.", "markdownDescription": "Accessibility settings.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "disableLoadingPhrases": { "title": "Disable Loading Phrases", "description": "Disable loading phrases for accessibility", "markdownDescription": "Disable loading phrases for accessibility\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "screenReader": { "title": "Screen Reader Mode", "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`", "default": false, "type": "boolean" } }, "additionalProperties": false } }, "additionalProperties": false }, "ide": { "title": "IDE", "description": "IDE integration settings.", "markdownDescription": "IDE integration settings.\n\n- Category: `IDE`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "IDE Mode", "description": "Enable IDE integration mode", "markdownDescription": "Enable IDE integration mode\n\n- Category: `IDE`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "hasSeenNudge": { "title": "Has Seen IDE Integration Nudge", "description": "Whether the user has seen the IDE integration nudge.", "markdownDescription": "Whether the user has seen the IDE integration nudge.\n\n- Category: `IDE`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" } }, "additionalProperties": false }, "privacy": { "title": "Privacy", "description": "Privacy-related settings.", "markdownDescription": "Privacy-related settings.\n\n- Category: `Privacy`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "usageStatisticsEnabled": { "title": "Enable Usage Statistics", "description": "Enable collection of usage statistics", "markdownDescription": "Enable collection of usage statistics\n\n- Category: `Privacy`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" } }, "additionalProperties": false }, "telemetry": { "title": "Telemetry", "description": "Telemetry configuration.", "markdownDescription": "Telemetry configuration.\n\n- Category: `Advanced`\n- Requires restart: `yes`", "$ref": "#/$defs/TelemetrySettings" }, "model": { "title": "Model", "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.5`", "default": 0.5, "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 }, "modelConfigs": { "title": "Model Configs", "description": "Model configurations.", "markdownDescription": "Model configurations.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `{\n \"aliases\": {\n \"base\": {\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"temperature\": 0,\n \"topP\": 1\n }\n }\n },\n \"chat-base\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"includeThoughts\": true\n },\n \"temperature\": 1,\n \"topP\": 0.95,\n \"topK\": 64\n }\n }\n },\n \"chat-base-2.5\": {\n \"extends\": \"chat-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingBudget\": 8192\n }\n }\n }\n },\n \"chat-base-3\": {\n \"extends\": \"chat-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingLevel\": \"HIGH\"\n }\n }\n }\n },\n \"gemini-3-pro-preview\": {\n \"extends\": \"chat-base-3\",\n \"modelConfig\": {\n \"model\": \"gemini-3-pro-preview\"\n }\n },\n \"gemini-3-flash-preview\": {\n \"extends\": \"chat-base-3\",\n \"modelConfig\": {\n \"model\": \"gemini-3-flash-preview\"\n }\n },\n \"gemini-2.5-pro\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"gemini-2.5-flash\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"gemini-2.5-flash-lite\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\"\n }\n },\n \"gemini-2.5-flash-base\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"classifier\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 1024,\n \"thinkingConfig\": {\n \"thinkingBudget\": 512\n }\n }\n }\n },\n \"prompt-completion\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"temperature\": 0.3,\n \"maxOutputTokens\": 16000,\n \"thinkingConfig\": {\n \"thinkingBudget\": 0\n }\n }\n }\n },\n \"edit-corrector\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingBudget\": 0\n }\n }\n }\n },\n \"summarizer-default\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 2000\n }\n }\n },\n \"summarizer-shell\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 2000\n }\n }\n },\n \"web-search\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"tools\": [\n {\n \"googleSearch\": {}\n }\n ]\n }\n }\n },\n \"web-fetch\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"tools\": [\n {\n \"urlContext\": {}\n }\n ]\n }\n }\n },\n \"web-fetch-fallback\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"loop-detection\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"loop-detection-double-check\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"llm-edit-fixer\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"next-speaker-checker\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"chat-compression-3-pro\": {\n \"modelConfig\": {\n \"model\": \"gemini-3-pro-preview\"\n }\n },\n \"chat-compression-3-flash\": {\n \"modelConfig\": {\n \"model\": \"gemini-3-flash-preview\"\n }\n },\n \"chat-compression-2.5-pro\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"chat-compression-2.5-flash\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"chat-compression-2.5-flash-lite\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\"\n }\n },\n \"chat-compression-default\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n }\n },\n \"overrides\": [\n {\n \"match\": {\n \"model\": \"chat-base\",\n \"isRetry\": true\n },\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"temperature\": 1\n }\n }\n }\n ]\n}`", "default": { "aliases": { "base": { "modelConfig": { "generateContentConfig": { "temperature": 0, "topP": 1 } } }, "chat-base": { "extends": "base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "includeThoughts": true }, "temperature": 1, "topP": 0.95, "topK": 64 } } }, "chat-base-2.5": { "extends": "chat-base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "thinkingBudget": 8192 } } } }, "chat-base-3": { "extends": "chat-base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "thinkingLevel": "HIGH" } } } }, "gemini-3-pro-preview": { "extends": "chat-base-3", "modelConfig": { "model": "gemini-3-pro-preview" } }, "gemini-3-flash-preview": { "extends": "chat-base-3", "modelConfig": { "model": "gemini-3-flash-preview" } }, "gemini-2.5-pro": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-pro" } }, "gemini-2.5-flash": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-flash" } }, "gemini-2.5-flash-lite": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-flash-lite" } }, "gemini-2.5-flash-base": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash" } }, "classifier": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 1024, "thinkingConfig": { "thinkingBudget": 512 } } } }, "prompt-completion": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "temperature": 0.3, "maxOutputTokens": 16000, "thinkingConfig": { "thinkingBudget": 0 } } } }, "edit-corrector": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "thinkingConfig": { "thinkingBudget": 0 } } } }, "summarizer-default": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 2000 } } }, "summarizer-shell": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 2000 } } }, "web-search": { "extends": "gemini-2.5-flash-base", "modelConfig": { "generateContentConfig": { "tools": [ { "googleSearch": {} } ] } } }, "web-fetch": { "extends": "gemini-2.5-flash-base", "modelConfig": { "generateContentConfig": { "tools": [ { "urlContext": {} } ] } } }, "web-fetch-fallback": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "loop-detection": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "loop-detection-double-check": { "extends": "base", "modelConfig": { "model": "gemini-2.5-pro" } }, "llm-edit-fixer": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "next-speaker-checker": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "chat-compression-3-pro": { "modelConfig": { "model": "gemini-3-pro-preview" } }, "chat-compression-3-flash": { "modelConfig": { "model": "gemini-3-flash-preview" } }, "chat-compression-2.5-pro": { "modelConfig": { "model": "gemini-2.5-pro" } }, "chat-compression-2.5-flash": { "modelConfig": { "model": "gemini-2.5-flash" } }, "chat-compression-2.5-flash-lite": { "modelConfig": { "model": "gemini-2.5-flash-lite" } }, "chat-compression-default": { "modelConfig": { "model": "gemini-2.5-pro" } } }, "overrides": [ { "match": { "model": "chat-base", "isRetry": true }, "modelConfig": { "generateContentConfig": { "temperature": 1 } } } ] }, "type": "object", "properties": { "aliases": { "title": "Model Config Aliases", "description": "Named presets for model configs. Can be used in place of a model name and can inherit from other aliases using an `extends` property.", "markdownDescription": "Named presets for model configs. Can be used in place of a model name and can inherit from other aliases using an `extends` property.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `{\n \"base\": {\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"temperature\": 0,\n \"topP\": 1\n }\n }\n },\n \"chat-base\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"includeThoughts\": true\n },\n \"temperature\": 1,\n \"topP\": 0.95,\n \"topK\": 64\n }\n }\n },\n \"chat-base-2.5\": {\n \"extends\": \"chat-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingBudget\": 8192\n }\n }\n }\n },\n \"chat-base-3\": {\n \"extends\": \"chat-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingLevel\": \"HIGH\"\n }\n }\n }\n },\n \"gemini-3-pro-preview\": {\n \"extends\": \"chat-base-3\",\n \"modelConfig\": {\n \"model\": \"gemini-3-pro-preview\"\n }\n },\n \"gemini-3-flash-preview\": {\n \"extends\": \"chat-base-3\",\n \"modelConfig\": {\n \"model\": \"gemini-3-flash-preview\"\n }\n },\n \"gemini-2.5-pro\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"gemini-2.5-flash\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"gemini-2.5-flash-lite\": {\n \"extends\": \"chat-base-2.5\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\"\n }\n },\n \"gemini-2.5-flash-base\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"classifier\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 1024,\n \"thinkingConfig\": {\n \"thinkingBudget\": 512\n }\n }\n }\n },\n \"prompt-completion\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"temperature\": 0.3,\n \"maxOutputTokens\": 16000,\n \"thinkingConfig\": {\n \"thinkingBudget\": 0\n }\n }\n }\n },\n \"edit-corrector\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"thinkingConfig\": {\n \"thinkingBudget\": 0\n }\n }\n }\n },\n \"summarizer-default\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 2000\n }\n }\n },\n \"summarizer-shell\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\",\n \"generateContentConfig\": {\n \"maxOutputTokens\": 2000\n }\n }\n },\n \"web-search\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"tools\": [\n {\n \"googleSearch\": {}\n }\n ]\n }\n }\n },\n \"web-fetch\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {\n \"generateContentConfig\": {\n \"tools\": [\n {\n \"urlContext\": {}\n }\n ]\n }\n }\n },\n \"web-fetch-fallback\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"loop-detection\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"loop-detection-double-check\": {\n \"extends\": \"base\",\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"llm-edit-fixer\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"next-speaker-checker\": {\n \"extends\": \"gemini-2.5-flash-base\",\n \"modelConfig\": {}\n },\n \"chat-compression-3-pro\": {\n \"modelConfig\": {\n \"model\": \"gemini-3-pro-preview\"\n }\n },\n \"chat-compression-3-flash\": {\n \"modelConfig\": {\n \"model\": \"gemini-3-flash-preview\"\n }\n },\n \"chat-compression-2.5-pro\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n },\n \"chat-compression-2.5-flash\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash\"\n }\n },\n \"chat-compression-2.5-flash-lite\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-flash-lite\"\n }\n },\n \"chat-compression-default\": {\n \"modelConfig\": {\n \"model\": \"gemini-2.5-pro\"\n }\n }\n}`", "default": { "base": { "modelConfig": { "generateContentConfig": { "temperature": 0, "topP": 1 } } }, "chat-base": { "extends": "base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "includeThoughts": true }, "temperature": 1, "topP": 0.95, "topK": 64 } } }, "chat-base-2.5": { "extends": "chat-base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "thinkingBudget": 8192 } } } }, "chat-base-3": { "extends": "chat-base", "modelConfig": { "generateContentConfig": { "thinkingConfig": { "thinkingLevel": "HIGH" } } } }, "gemini-3-pro-preview": { "extends": "chat-base-3", "modelConfig": { "model": "gemini-3-pro-preview" } }, "gemini-3-flash-preview": { "extends": "chat-base-3", "modelConfig": { "model": "gemini-3-flash-preview" } }, "gemini-2.5-pro": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-pro" } }, "gemini-2.5-flash": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-flash" } }, "gemini-2.5-flash-lite": { "extends": "chat-base-2.5", "modelConfig": { "model": "gemini-2.5-flash-lite" } }, "gemini-2.5-flash-base": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash" } }, "classifier": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 1024, "thinkingConfig": { "thinkingBudget": 512 } } } }, "prompt-completion": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "temperature": 0.3, "maxOutputTokens": 16000, "thinkingConfig": { "thinkingBudget": 0 } } } }, "edit-corrector": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "thinkingConfig": { "thinkingBudget": 0 } } } }, "summarizer-default": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 2000 } } }, "summarizer-shell": { "extends": "base", "modelConfig": { "model": "gemini-2.5-flash-lite", "generateContentConfig": { "maxOutputTokens": 2000 } } }, "web-search": { "extends": "gemini-2.5-flash-base", "modelConfig": { "generateContentConfig": { "tools": [ { "googleSearch": {} } ] } } }, "web-fetch": { "extends": "gemini-2.5-flash-base", "modelConfig": { "generateContentConfig": { "tools": [ { "urlContext": {} } ] } } }, "web-fetch-fallback": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "loop-detection": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "loop-detection-double-check": { "extends": "base", "modelConfig": { "model": "gemini-2.5-pro" } }, "llm-edit-fixer": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "next-speaker-checker": { "extends": "gemini-2.5-flash-base", "modelConfig": {} }, "chat-compression-3-pro": { "modelConfig": { "model": "gemini-3-pro-preview" } }, "chat-compression-3-flash": { "modelConfig": { "model": "gemini-3-flash-preview" } }, "chat-compression-2.5-pro": { "modelConfig": { "model": "gemini-2.5-pro" } }, "chat-compression-2.5-flash": { "modelConfig": { "model": "gemini-2.5-flash" } }, "chat-compression-2.5-flash-lite": { "modelConfig": { "model": "gemini-2.5-flash-lite" } }, "chat-compression-default": { "modelConfig": { "model": "gemini-2.5-pro" } } }, "type": "object", "additionalProperties": true }, "customAliases": { "title": "Custom Model Config Aliases", "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: `{}`", "default": {}, "type": "object", "additionalProperties": true }, "customOverrides": { "title": "Custom Model Config Overrides", "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: `[]`", "default": [], "type": "array", "items": {} }, "overrides": { "title": "Model Config Overrides", "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: `[]`", "default": [], "type": "array", "items": {} } }, "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.", "markdownDescription": "Settings for git-aware file filtering.\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "respectGitIgnore": { "title": "Respect .gitignore", "description": "Respect .gitignore files when searching", "markdownDescription": "Respect .gitignore files when searching\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" }, "respectGeminiIgnore": { "title": "Respect .geminiignore", "description": "Respect .geminiignore files when searching", "markdownDescription": "Respect .geminiignore files when searching\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" }, "enableRecursiveFileSearch": { "title": "Enable Recursive File Search", "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`", "$ref": "#/$defs/BooleanOrString" }, "shell": { "title": "Shell", "description": "Settings for shell execution.", "markdownDescription": "Settings for shell execution.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enableInteractiveShell": { "title": "Enable Interactive Shell", "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" }, "inactivityTimeout": { "title": "Inactivity Timeout", "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`", "default": 300, "type": "number" }, "enableShellOutputEfficiency": { "title": "Enable Shell Output Efficiency", "description": "Enable shell output efficiency optimizations for better performance.", "markdownDescription": "Enable shell output efficiency optimizations for better performance.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `true`", "default": true, "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" }, "enableHooks": { "title": "Enable Hooks System (Experimental)", "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`", "default": true, "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 }, "useWriteTodos": { "title": "Use WriteTodos", "description": "Enable the write_todos tool.", "markdownDescription": "Enable the write_todos tool.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" }, "security": { "title": "Security", "description": "Security-related settings.", "markdownDescription": "Security-related settings.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "disableYoloMode": { "title": "Disable YOLO Mode", "description": "Disable YOLO mode, even if enabled by a flag.", "markdownDescription": "Disable YOLO mode, even if enabled by a flag.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "enablePermanentToolApproval": { "title": "Allow Permanent Tool Approval", "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`", "default": false, "type": "boolean" }, "blockGitExtensions": { "title": "Blocks extensions from Git", "description": "Blocks installing and loading extensions from Git.", "markdownDescription": "Blocks installing and loading extensions from Git.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "folderTrust": { "title": "Folder Trust", "description": "Settings for folder trust.", "markdownDescription": "Settings for folder trust.\n\n- Category: `Security`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "Folder Trust", "description": "Setting to track whether Folder trust is enabled.", "markdownDescription": "Setting to track whether Folder trust is enabled.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" } }, "additionalProperties": false }, "environmentVariableRedaction": { "title": "Environment Variable Redaction", "description": "Settings for environment variable redaction.", "markdownDescription": "Settings for environment variable redaction.\n\n- Category: `Security`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "allowed": { "title": "Allowed Environment Variables", "description": "Environment variables to always allow (bypass redaction).", "markdownDescription": "Environment variables to always allow (bypass redaction).\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `[]`", "default": [], "type": "array", "items": { "type": "string" } }, "blocked": { "title": "Blocked Environment Variables", "description": "Environment variables to always redact.", "markdownDescription": "Environment variables to always redact.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `[]`", "default": [], "type": "array", "items": { "type": "string" } }, "enabled": { "title": "Enable Environment Variable Redaction", "description": "Enable redaction of environment variables that may contain secrets.", "markdownDescription": "Enable redaction of environment variables that may contain secrets.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" } }, "additionalProperties": false }, "auth": { "title": "Authentication", "description": "Authentication settings.", "markdownDescription": "Authentication settings.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "selectedType": { "title": "Selected Auth Type", "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: `{}`", "default": {}, "type": "object", "properties": { "autoConfigureMemory": { "title": "Auto Configure Max Old Space Size", "description": "Automatically configure Node.js memory limits", "markdownDescription": "Automatically configure Node.js memory limits\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "dnsResolutionOrder": { "title": "DNS Resolution Order", "description": "The DNS resolution order.", "markdownDescription": "The DNS resolution order.\n\n- Category: `Advanced`\n- Requires restart: `yes`", "type": "string" }, "excludedEnvVars": { "title": "Excluded Project Environment Variables", "description": "Environment variables to exclude from project context.", "markdownDescription": "Environment variables to exclude from project context.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[\n \"DEBUG\",\n \"DEBUG_MODE\"\n]`", "default": ["DEBUG", "DEBUG_MODE"], "type": "array", "items": { "type": "string" } }, "bugCommand": { "title": "Bug Command", "description": "Configuration for the bug report command.", "markdownDescription": "Configuration for the bug report command.\n\n- Category: `Advanced`\n- Requires restart: `no`", "$ref": "#/$defs/BugCommandSettings" } }, "additionalProperties": false }, "experimental": { "title": "Experimental", "description": "Setting to enable experimental features", "markdownDescription": "Setting to enable experimental features\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enableAgents": { "title": "Enable Agents", "description": "Enable local and remote subagents. Warning: Experimental feature, uses YOLO mode for subagents", "markdownDescription": "Enable local and remote subagents. Warning: Experimental feature, uses YOLO mode for subagents\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "extensionManagement": { "title": "Extension Management", "description": "Enable extension management features.", "markdownDescription": "Enable extension management features.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" }, "extensionReloading": { "title": "Extension Reloading", "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" }, "jitContext": { "title": "JIT Context Loading", "description": "Enable Just-In-Time (JIT) context loading.", "markdownDescription": "Enable Just-In-Time (JIT) context loading.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "skills": { "title": "Agent Skills", "description": "Enable Agent Skills (experimental).", "markdownDescription": "Enable Agent Skills (experimental).\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`", "default": false, "type": "boolean" }, "codebaseInvestigatorSettings": { "title": "Codebase Investigator Settings", "description": "Configuration for Codebase Investigator.", "markdownDescription": "Configuration for Codebase Investigator.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "Enable Codebase Investigator", "description": "Enable the Codebase Investigator agent.", "markdownDescription": "Enable the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" }, "maxNumTurns": { "title": "Codebase Investigator Max Num Turns", "description": "Maximum number of turns for the Codebase Investigator agent.", "markdownDescription": "Maximum number of turns for the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `10`", "default": 10, "type": "number" }, "maxTimeMinutes": { "title": "Max Time (Minutes)", "description": "Maximum time for the Codebase Investigator agent (in minutes).", "markdownDescription": "Maximum time for the Codebase Investigator agent (in minutes).\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `3`", "default": 3, "type": "number" }, "thinkingBudget": { "title": "Thinking Budget", "description": "The thinking budget for the Codebase Investigator agent.", "markdownDescription": "The thinking budget for the Codebase Investigator agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `8192`", "default": 8192, "type": "number" }, "model": { "title": "Model", "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: `auto`", "default": "auto", "type": "string" } }, "additionalProperties": false }, "useOSC52Paste": { "title": "Use OSC 52 Paste", "description": "Use OSC 52 sequence for pasting instead of clipboardy (useful for remote sessions).", "markdownDescription": "Use OSC 52 sequence for pasting instead of clipboardy (useful for remote sessions).\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "cliHelpAgentSettings": { "title": "CLI Help Agent Settings", "description": "Configuration for CLI Help Agent.", "markdownDescription": "Configuration for CLI Help Agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "Enable CLI Help Agent", "description": "Enable the CLI Help Agent.", "markdownDescription": "Enable the CLI Help Agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `true`", "default": true, "type": "boolean" } }, "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: `{}`", "default": {}, "type": "object", "properties": { "disabled": { "title": "Disabled Extensions", "description": "List of disabled extensions.", "markdownDescription": "List of disabled extensions.\n\n- Category: `Extensions`\n- Requires restart: `yes`\n- Default: `[]`", "default": [], "type": "array", "items": { "type": "string" } }, "workspacesWithMigrationNudge": { "title": "Workspaces with Migration Nudge", "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 }, "skills": { "title": "Skills", "description": "Settings for agent skills.", "markdownDescription": "Settings for agent skills.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "disabled": { "title": "Disabled Skills", "description": "List of disabled skills.", "markdownDescription": "List of disabled skills.\n\n- Category: `Advanced`\n- Requires restart: `yes`\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", "properties": { "enabled": { "title": "Enable Hooks", "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`", "default": false, "type": "boolean" }, "disabled": { "title": "Disabled Hooks", "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" } }, "notifications": { "title": "Hook Notifications", "description": "Show visual indicators when hooks are executing.", "markdownDescription": "Show visual indicators when hooks are executing.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" }, "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: `[]`", "default": [], "$ref": "#/$defs/HookDefinitionArray" } }, "additionalProperties": { "type": "array", "items": {} } }, "admin": { "title": "Admin", "description": "Settings configured remotely by enterprise admins.", "markdownDescription": "Settings configured remotely by enterprise admins.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "secureModeEnabled": { "title": "Secure Mode Enabled", "description": "If true, disallows yolo mode from being used.", "markdownDescription": "If true, disallows yolo mode from being used.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `false`", "default": false, "type": "boolean" }, "extensions": { "title": "Extensions Settings", "description": "Extensions-specific admin settings.", "markdownDescription": "Extensions-specific admin settings.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "Extensions Enabled", "description": "If false, disallows extensions from being installed or used.", "markdownDescription": "If false, disallows extensions from being installed or used.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" } }, "additionalProperties": false }, "mcp": { "title": "MCP Settings", "description": "MCP-specific admin settings.", "markdownDescription": "MCP-specific admin settings.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `{}`", "default": {}, "type": "object", "properties": { "enabled": { "title": "MCP Enabled", "description": "If false, disallows MCP servers from being used.", "markdownDescription": "If false, disallows MCP servers from being used.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `true`", "default": true, "type": "boolean" } }, "additionalProperties": false } }, "additionalProperties": false } }, "$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": "URL for SSE or HTTP transport. Use with \"type\" field to specify transport type." }, "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." }, "type": { "type": "string", "description": "Transport type. Use \"stdio\" for local command, \"sse\" for Server-Sent Events, or \"http\" for Streamable HTTP.", "enum": ["stdio", "sse", "http"] }, "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`).", "enum": [ "dynamic_discovery", "google_credentials", "service_account_impersonation" ] }, "targetAudience": { "type": "string", "description": "OAuth target audience (CLIENT_ID.apps.googleusercontent.com)." }, "targetServiceAccount": { "type": "string", "description": "Service account email to impersonate (name@project.iam.gserviceaccount.com)." } } }, "TelemetrySettings": { "type": "object", "description": "Telemetry configuration for Gemini CLI.", "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "description": "Enables telemetry emission." }, "target": { "type": "string", "description": "Telemetry destination (for example `stderr`, `stdout`, or `otlp`)." }, "otlpEndpoint": { "type": "string", "description": "Endpoint for OTLP exporters." }, "otlpProtocol": { "type": "string", "description": "Protocol for OTLP exporters.", "enum": ["grpc", "http"] }, "logPrompts": { "type": "boolean", "description": "Whether prompts are logged in telemetry payloads." }, "outfile": { "type": "string", "description": "File path for writing telemetry output." }, "useCollector": { "type": "boolean", "description": "Whether to forward telemetry to an OTLP collector." }, "useCliAuth": { "type": "boolean", "description": "Whether to use CLI authentication for telemetry (only for in-process exporters)." } } }, "BugCommandSettings": { "type": "object", "description": "Configuration for the bug report helper command.", "additionalProperties": false, "properties": { "urlTemplate": { "type": "string", "description": "Template used to open a bug report URL. Variables in the template are populated at runtime." } }, "required": ["urlTemplate"] }, "SummarizeToolOutputSettings": { "type": "object", "description": "Controls summarization behavior for individual tools. All properties are optional.", "additionalProperties": false, "properties": { "tokenBudget": { "type": "number", "description": "Maximum number of tokens used when summarizing tool output." } } }, "CustomTheme": { "type": "object", "description": "Custom theme definition used for styling Gemini CLI output. Colors are provided as hex strings or named ANSI colors.", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["custom"], "default": "custom" }, "name": { "type": "string", "description": "Theme display name." }, "text": { "type": "object", "additionalProperties": false, "properties": { "primary": { "type": "string" }, "secondary": { "type": "string" }, "link": { "type": "string" }, "accent": { "type": "string" } } }, "background": { "type": "object", "additionalProperties": false, "properties": { "primary": { "type": "string" }, "diff": { "type": "object", "additionalProperties": false, "properties": { "added": { "type": "string" }, "removed": { "type": "string" } } } } }, "border": { "type": "object", "additionalProperties": false, "properties": { "default": { "type": "string" }, "focused": { "type": "string" } } }, "ui": { "type": "object", "additionalProperties": false, "properties": { "comment": { "type": "string" }, "symbol": { "type": "string" }, "gradient": { "type": "array", "items": { "type": "string" } } } }, "status": { "type": "object", "additionalProperties": false, "properties": { "error": { "type": "string" }, "success": { "type": "string" }, "warning": { "type": "string" } } }, "Background": { "type": "string" }, "Foreground": { "type": "string" }, "LightBlue": { "type": "string" }, "AccentBlue": { "type": "string" }, "AccentPurple": { "type": "string" }, "AccentCyan": { "type": "string" }, "AccentGreen": { "type": "string" }, "AccentYellow": { "type": "string" }, "AccentRed": { "type": "string" }, "DiffAdded": { "type": "string" }, "DiffRemoved": { "type": "string" }, "Comment": { "type": "string" }, "Gray": { "type": "string" }, "DarkGray": { "type": "string" }, "GradientColors": { "type": "array", "items": { "type": "string" } } }, "required": ["type", "name"] }, "StringOrStringArray": { "description": "Accepts either a single string or an array of strings.", "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "BooleanOrString": { "description": "Accepts either a boolean flag or a string command name.", "anyOf": [ { "type": "boolean" }, { "type": "string" } ] }, "HookDefinitionArray": { "type": "array", "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": { "name": { "type": "string", "description": "Unique identifier for the hook." }, "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." }, "description": { "type": "string", "description": "A description of the hook." }, "timeout": { "type": "number", "description": "Timeout in milliseconds for hook execution." } } } } } } } } }