{
  "$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"
        },
        "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"
        },
        "introspectionAgentSettings": {
          "title": "Introspection Agent Settings",
          "description": "Configuration for Introspection Agent.",
          "markdownDescription": "Configuration for Introspection Agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `{}`",
          "default": {},
          "type": "object",
          "properties": {
            "enabled": {
              "title": "Enable Introspection Agent",
              "description": "Enable the Introspection Agent.",
              "markdownDescription": "Enable the Introspection Agent.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
              "default": false,
              "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."
                }
              }
            }
          }
        }
      }
    }
  }
}
