"description":"The default approval mode for tool execution. 'default' prompts for approval, 'auto_edit' auto-approves edit tools, and 'plan' is read-only mode. 'yolo' is not supported yet.",
"markdownDescription":"The default approval mode for tool execution. 'default' prompts for approval, 'auto_edit' auto-approves edit tools, and 'plan' is read-only mode. 'yolo' is not supported yet.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `default`",
"markdownDescription":"Planning features configuration.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"directory":{
"title":"Plan Directory",
"description":"The directory where planning artifacts are stored. If not specified, defaults to the system temporary directory.",
"markdownDescription":"The directory where planning artifacts are stored. If not specified, defaults to the system temporary directory.\n\n- Category: `General`\n- Requires restart: `yes`",
"description":"Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pro for the planning phase and Flash for the implementation phase.",
"markdownDescription":"Automatically switch between Pro and Flash models based on Plan Mode status. Uses Pro for the planning phase and Flash for the implementation phase.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `true`",
"description":"Maximum number of attempts for requests to the main chat model. Cannot exceed 10.",
"markdownDescription":"Maximum number of attempts for requests to the main chat model. Cannot exceed 10.\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `10`",
"markdownDescription":"Automatically delete chats older than this time period (e.g., \"30d\", \"7d\", \"24h\", \"1w\")\n\n- Category: `General`\n- Requires restart: `no`\n- Default: `30d`",
"description":"Automatically switch between default light and dark themes based on terminal background color.",
"markdownDescription":"Automatically switch between default light and dark themes based on terminal background color.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"terminalBackgroundPollingInterval":{
"title":"Terminal Background Polling Interval",
"description":"Interval in seconds to poll the terminal background color.",
"markdownDescription":"Interval in seconds to poll the terminal background color.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `60`",
"description":"Show Gemini CLI model thoughts in the terminal window title during the working phase",
"markdownDescription":"Show Gemini CLI model thoughts in the terminal window title during the working phase\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `false`",
"description":"Update the terminal window title with current status icons (Ready: ◇, Action Required: ✋, Working: ✦)",
"markdownDescription":"Update the terminal window title with current status icons (Ready: ◇, Action Required: ✋, Working: ✦)\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`",
"description":"Show a warning when running Gemini CLI in the home directory.",
"markdownDescription":"Show a warning when running Gemini CLI in the home directory.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `true`",
"description":"List of item IDs to display in the footer. Rendered in order",
"markdownDescription":"List of item IDs to display in the footer. Rendered in order\n\n- Category: `UI`\n- Requires restart: `no`",
"type":"array",
"items":{
"type":"string"
}
},
"showLabels":{
"title":"Show Footer Labels",
"description":"Display a second line above the footer items with descriptive headers (e.g., /model).",
"markdownDescription":"Display a second line above the footer items with descriptive headers (e.g., /model).\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `true`",
"description":"Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled.",
"markdownDescription":"Enable incremental rendering for the UI. This option will reduce flickering but may cause rendering artifacts. Only supported when useAlternateBuffer is enabled.\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `true`",
"description":"What to show while the model is working: tips, witty comments, both, or nothing.",
"markdownDescription":"What to show while the model is working: tips, witty comments, both, or nothing.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `tips`",
"description":"Custom witty phrases to display during loading. When provided, the CLI cycles through these instead of the defaults.",
"markdownDescription":"Custom witty phrases to display during loading. When provided, the CLI cycles through these instead of the defaults.\n\n- Category: `UI`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Render output in plain-text to be more screen reader accessible",
"markdownDescription":"Render output in plain-text to be more screen reader accessible\n\n- Category: `UI`\n- Requires restart: `yes`\n- Default: `false`",
"markdownDescription":"Billing and AI credits settings.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"overageStrategy":{
"title":"Overage Strategy",
"description":"How to handle quota exhaustion when AI credits are available. 'ask' prompts each time, 'always' automatically uses credits, 'never' disables credit usage.",
"markdownDescription":"How to handle quota exhaustion when AI credits are available. 'ask' prompts each time, 'always' automatically uses credits, 'never' disables credit usage.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `ask`",
"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`",
"description":"Custom named presets for model configs. These are merged with (and override) the built-in aliases.",
"markdownDescription":"Custom named presets for model configs. These are merged with (and override) the built-in aliases.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `{}`",
"description":"Custom model config overrides. These are merged with (and added to) the built-in overrides.",
"markdownDescription":"Custom model config overrides. These are merged with (and added to) the built-in overrides.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used.",
"markdownDescription":"Apply specific configuration overrides based on matches, with a primary key of model (or alias). The most specific match will be used.\n\n- Category: `Model`\n- Requires restart: `no`\n- Default: `[]`",
"markdownDescription":"Settings for subagents.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`",
"default":{},
"type":"object",
"properties":{
"overrides":{
"title":"Agent Overrides",
"description":"Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config.",
"markdownDescription":"Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `{}`",
"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`",
"description":"Whether to include the directory tree of the current working directory in the initial request to the model.",
"markdownDescription":"Whether to include the directory tree of the current working directory in the initial request to the model.\n\n- Category: `Context`\n- Requires restart: `no`\n- Default: `true`",
"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: `[]`",
"description":"Controls how /memory reload loads GEMINI.md files. When true, include directories are scanned; when false, only the current directory is used.",
"markdownDescription":"Controls how /memory reload 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`",
"description":"Additional ignore file paths to respect. These files take precedence over .geminiignore and .gitignore. Files earlier in the array take precedence over files later in the array, e.g. the first file takes precedence over the second one.",
"markdownDescription":"Additional ignore file paths to respect. These files take precedence over .geminiignore and .gitignore. Files earlier in the array take precedence over files later in the array, e.g. the first file takes precedence over the second one.\n\n- Category: `Context`\n- Requires restart: `yes`\n- Default: `[]`",
"description":"Sandbox execution environment. Set to a boolean to enable or disable the sandbox, provide a string path to a sandbox profile, or specify an explicit sandbox command (e.g., \"docker\", \"podman\", \"lxc\").",
"markdownDescription":"Sandbox execution environment. Set to a boolean to enable or disable the sandbox, provide a string path to a sandbox profile, or specify an explicit sandbox command (e.g., \"docker\", \"podman\", \"lxc\").\n\n- Category: `Tools`\n- Requires restart: `yes`",
"description":"Use node-pty for an interactive shell experience. Fallback to child_process still applies.",
"markdownDescription":"Use node-pty for an interactive shell experience. Fallback to child_process still applies.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `true`",
"default":true,
"type":"boolean"
},
"pager":{
"title":"Pager",
"description":"The pager command to use for shell output. Defaults to `cat`.",
"markdownDescription":"The pager command to use for shell output. Defaults to `cat`.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `cat`",
"default":"cat",
"type":"string"
},
"showColor":{
"title":"Show Color",
"description":"Show color in shell output.",
"markdownDescription":"Show color in shell output.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `false`",
"description":"The maximum time in seconds allowed without output from the shell command. Defaults to 5 minutes.",
"markdownDescription":"The maximum time in seconds allowed without output from the shell command. Defaults to 5 minutes.\n\n- Category: `Tools`\n- Requires restart: `no`\n- Default: `300`",
"description":"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`",
"description":"Maximum characters to show when truncating large tool outputs. Set to 0 or negative to disable truncation.",
"markdownDescription":"Maximum characters to show when truncating large tool outputs. Set to 0 or negative to disable truncation.\n\n- Category: `General`\n- Requires restart: `yes`\n- Default: `40000`",
"description":"Disable LLM-based error correction for edit tools. When enabled, tools will fail immediately if exact string matches are not found, instead of attempting to self-correct.",
"markdownDescription":"Disable LLM-based error correction for edit tools. When enabled, tools will fail immediately if exact string matches are not found, instead of attempting to self-correct.\n\n- Category: `Tools`\n- Requires restart: `yes`\n- Default: `true`",
"description":"Enable the \"Allow for all future sessions\" option in tool confirmation dialogs.",
"markdownDescription":"Enable the \"Allow for all future sessions\" option in tool confirmation dialogs.\n\n- Category: `Security`\n- Requires restart: `no`\n- Default: `false`",
"description":"List of Regex patterns for allowed extensions. If nonempty, only extensions that match the patterns in this list are allowed. Overrides the blockGitExtensions setting.",
"markdownDescription":"List of Regex patterns for allowed extensions. If nonempty, only extensions that match the patterns in this list are allowed. Overrides the blockGitExtensions setting.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `[]`",
"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`",
"description":"Enable the context-aware security checker. This feature uses an LLM to dynamically generate and enforce security policies for tool use based on your prompt, providing an additional layer of protection against unintended actions.",
"markdownDescription":"Enable the context-aware security checker. This feature uses an LLM to dynamically generate and enforce security policies for tool use based on your prompt, providing an additional layer of protection against unintended actions.\n\n- Category: `Security`\n- Requires restart: `yes`\n- Default: `false`",
"description":"Minimum number of tokens to protect from masking (most recent tool outputs).",
"markdownDescription":"Minimum number of tokens to protect from masking (most recent tool outputs).\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `50000`",
"default":50000,
"type":"number"
},
"minPrunableTokensThreshold":{
"title":"Min Prunable Tokens Threshold",
"description":"Minimum prunable tokens required to trigger a masking pass.",
"markdownDescription":"Minimum prunable tokens required to trigger a masking pass.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `30000`",
"default":30000,
"type":"number"
},
"protectLatestTurn":{
"title":"Protect Latest Turn",
"description":"Ensures the absolute latest turn is never masked, regardless of token count.",
"markdownDescription":"Ensures the absolute latest turn is never masked, regardless of token count.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `true`",
"description":"Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it).",
"markdownDescription":"Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it).\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `false`",
"default":false,
"type":"boolean"
},
"useOSC52Copy":{
"title":"Use OSC 52 Copy",
"description":"Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it).",
"markdownDescription":"Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it).\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `false`",
"description":"Enable model steering (user hints) to guide the model during tool execution.",
"markdownDescription":"Enable model steering (user hints) to guide the model during tool execution.\n\n- Category: `Experimental`\n- Requires restart: `no`\n- Default: `false`",
"description":"Enable the Gemma Model Router (experimental). Requires a local endpoint serving Gemma via the Gemini API using LiteRT-LM shim.",
"markdownDescription":"Enable the Gemma Model Router (experimental). Requires a local endpoint serving Gemma via the Gemini API using LiteRT-LM shim.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`",
"markdownDescription":"The host of the classifier.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `http://localhost:9379`",
"default":"http://localhost:9379",
"type":"string"
},
"model":{
"title":"Model",
"description":"The model to use for the classifier. Only tested on `gemma3-1b-gpu-custom`.",
"markdownDescription":"The model to use for the classifier. Only tested on `gemma3-1b-gpu-custom`.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `gemma3-1b-gpu-custom`",
"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: `[]`",
"markdownDescription":"Canonical toggle for the hooks system. When disabled, no hooks will be executed.\n\n- Category: `Advanced`\n- Requires restart: `yes`\n- Default: `true`",
"description":"List of hook names (commands) that should be disabled. Hooks in this list will not execute even if configured.",
"markdownDescription":"List of hook names (commands) that should be disabled. Hooks in this list will not execute even if configured.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Hooks that execute before tool execution. Can intercept, validate, or modify tool calls.",
"markdownDescription":"Hooks that execute before tool execution. Can intercept, validate, or modify tool calls.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterTool":{
"title":"After Tool Hooks",
"description":"Hooks that execute after tool execution. Can process results, log outputs, or trigger follow-up actions.",
"markdownDescription":"Hooks that execute after tool execution. Can process results, log outputs, or trigger follow-up actions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeAgent":{
"title":"Before Agent Hooks",
"description":"Hooks that execute before agent loop starts. Can set up context or initialize resources.",
"markdownDescription":"Hooks that execute before agent loop starts. Can set up context or initialize resources.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterAgent":{
"title":"After Agent Hooks",
"description":"Hooks that execute after agent loop completes. Can perform cleanup or summarize results.",
"markdownDescription":"Hooks that execute after agent loop completes. Can perform cleanup or summarize results.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"Notification":{
"title":"Notification Hooks",
"description":"Hooks that execute on notification events (errors, warnings, info). Can log or alert on specific conditions.",
"markdownDescription":"Hooks that execute on notification events (errors, warnings, info). Can log or alert on specific conditions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"SessionStart":{
"title":"Session Start Hooks",
"description":"Hooks that execute when a session starts. Can initialize session-specific resources or state.",
"markdownDescription":"Hooks that execute when a session starts. Can initialize session-specific resources or state.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"SessionEnd":{
"title":"Session End Hooks",
"description":"Hooks that execute when a session ends. Can perform cleanup or persist session data.",
"markdownDescription":"Hooks that execute when a session ends. Can perform cleanup or persist session data.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"PreCompress":{
"title":"Pre-Compress Hooks",
"description":"Hooks that execute before chat history compression. Can back up or analyze conversation before compression.",
"markdownDescription":"Hooks that execute before chat history compression. Can back up or analyze conversation before compression.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeModel":{
"title":"Before Model Hooks",
"description":"Hooks that execute before LLM requests. Can modify prompts, inject context, or control model parameters.",
"markdownDescription":"Hooks that execute before LLM requests. Can modify prompts, inject context, or control model parameters.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"AfterModel":{
"title":"After Model Hooks",
"description":"Hooks that execute after LLM responses. Can process outputs, extract information, or log interactions.",
"markdownDescription":"Hooks that execute after LLM responses. Can process outputs, extract information, or log interactions.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"default":[],
"$ref":"#/$defs/HookDefinitionArray"
},
"BeforeToolSelection":{
"title":"Before Tool Selection Hooks",
"description":"Hooks that execute before tool selection. Can filter or prioritize available tools dynamically.",
"markdownDescription":"Hooks that execute before tool selection. Can filter or prioritize available tools dynamically.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `[]`",
"description":"Array of hook definition objects for a specific event.",
"items":{
"type":"object",
"description":"Hook definition specifying matcher pattern and hook configurations.",
"properties":{
"matcher":{
"type":"string",
"description":"Pattern to match against the event context (tool name, notification type, etc.). Supports exact match, regex (/pattern/), and wildcards (*)."
},
"hooks":{
"type":"array",
"description":"Hooks to execute when the matcher matches.",