Files
gemini-cli/schemas/settings.schema.json

2128 lines
100 KiB
JSON

{
"$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"
},
"enableAutoUpdate": {
"title": "Enable Auto Update",
"description": "Enable automatic updates.",
"markdownDescription": "Enable automatic updates.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `true`",
"default": true,
"type": "boolean"
},
"enableAutoUpdateNotification": {
"title": "Enable Auto Update Notification",
"description": "Enable update notification prompts.",
"markdownDescription": "Enable update notification prompts.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `true`",
"default": true,
"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. Can be `text` or `json`.",
"markdownDescription": "The format of the CLI output. Can be `text` or `json`.\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 Thoughts in Title",
"description": "Show Gemini CLI model thoughts in the terminal window title during the working phase",
"markdownDescription": "Show Gemini CLI model thoughts in the terminal window title during the working phase\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`",
"default": false,
"type": "boolean"
},
"dynamicWindowTitle": {
"title": "Dynamic Window Title",
"description": "Update the terminal window title with current status icons (Ready: ◇, Action Required: ✋, Working: ✦)",
"markdownDescription": "Update the terminal window title with current status icons (Ready: ◇, Action Required: ✋, Working: ✦)\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`",
"default": true,
"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": {
"enableLoadingPhrases": {
"title": "Enable Loading Phrases",
"description": "Enable loading phrases during operations.",
"markdownDescription": "Enable loading phrases during operations.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `true`",
"default": true,
"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
},
"agents": {
"title": "Agents",
"description": "Settings for subagents.",
"markdownDescription": "Settings for subagents.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`",
"default": {},
"type": "object",
"properties": {
"overrides": {
"title": "Agent Overrides",
"description": "Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config.",
"markdownDescription": "Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`",
"default": {},
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/AgentOverride"
}
}
},
"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"
},
"enableFuzzySearch": {
"title": "Enable Fuzzy Search",
"description": "Enable fuzzy search when searching for files.",
"markdownDescription": "Enable fuzzy search when searching for files.\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `true`",
"default": true,
"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"
},
"approvalMode": {
"title": "Approval Mode",
"description": "The default approval mode for tool execution. 'default' prompts for approval, 'auto_edit' auto-approves edit tools, and 'plan' is read-only mode. 'yolo' is not supported yet.",
"markdownDescription": "The default approval mode for tool execution. 'default' prompts for approval, 'auto_edit' auto-approves edit tools, and 'plan' is read-only mode. 'yolo' is not supported yet.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `default`",
"default": "default",
"type": "string",
"enum": ["default", "auto_edit", "plan"]
},
"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"
},
"disableLLMCorrection": {
"title": "Disable LLM Correction",
"description": "Disable LLM-based error correction for edit tools. When enabled, tools will fail immediately if exact string matches are not found, instead of attempting to self-correct.",
"markdownDescription": "Disable LLM-based error correction for edit tools. When enabled, tools will fail immediately if exact string matches are not found, instead of attempting to self-correct.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `true`",
"default": true,
"type": "boolean"
},
"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"
},
"extensionConfig": {
"title": "Extension Configuration",
"description": "Enable requesting and fetching of extension settings.",
"markdownDescription": "Enable requesting and fetching of extension settings.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
"default": false,
"type": "boolean"
},
"enableEventDrivenScheduler": {
"title": "Event Driven Scheduler",
"description": "Enables event-driven scheduler within the CLI session.",
"markdownDescription": "Enables event-driven scheduler within the CLI session.\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"
},
"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"
},
"plan": {
"title": "Plan",
"description": "Enable planning features (Plan Mode and tools).",
"markdownDescription": "Enable planning features (Plan Mode and tools).\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
"default": false,
"type": "boolean"
}
},
"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": {
"enabled": {
"title": "Enable Agent Skills",
"description": "Enable Agent Skills.",
"markdownDescription": "Enable Agent Skills.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `true`",
"default": true,
"type": "boolean"
},
"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
},
"hooksConfig": {
"title": "HooksConfig",
"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: `true`",
"default": true,
"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"
}
},
"additionalProperties": false
},
"hooks": {
"title": "Hook Events",
"description": "Event-specific hook configurations.",
"markdownDescription": "Event-specific hook configurations.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `{}`",
"default": {},
"type": "object",
"properties": {
"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
},
"skills": {
"title": "Skills Settings",
"description": "Agent Skills-specific admin settings.",
"markdownDescription": "Agent Skills-specific admin settings.\n\n- Category: `Admin`\n- Requires restart: `no`\n- Default: `{}`",
"default": {},
"type": "object",
"properties": {
"enabled": {
"title": "Skills Enabled",
"description": "If false, disallows agent skills from being used.",
"markdownDescription": "If false, disallows agent skills 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."
}
}
},
"AgentOverride": {
"type": "object",
"description": "Override settings for a specific agent.",
"additionalProperties": false,
"properties": {
"modelConfig": {
"type": "object",
"additionalProperties": true
},
"runConfig": {
"type": "object",
"description": "Run configuration for an agent.",
"additionalProperties": false,
"properties": {
"maxTimeMinutes": {
"type": "number",
"description": "The maximum execution time for the agent in minutes."
},
"maxTurns": {
"type": "number",
"description": "The maximum number of conversational turns."
}
}
},
"enabled": {
"type": "boolean",
"description": "Whether to enable the agent."
}
}
},
"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."
}
}
}
}
}
}
}
}
}