@@ -93,6 +93,10 @@ pub struct McpServerConfig {
9393 #[ serde( default , with = "option_duration_secs" ) ]
9494 pub tool_timeout_sec : Option < Duration > ,
9595
96+ /// Approval mode for tools in this server unless a tool override exists.
97+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
98+ pub default_tools_approval_mode : Option < AppToolApproval > ,
99+
96100 /// Explicit allow-list of tools exposed from this server. When set, only these tools will be registered.
97101 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
98102 pub enabled_tools : Option < Vec < String > > ,
@@ -158,6 +162,8 @@ pub struct RawMcpServerConfig {
158162 #[ serde( default ) ]
159163 pub supports_parallel_tool_calls : Option < bool > ,
160164 #[ serde( default ) ]
165+ pub default_tools_approval_mode : Option < AppToolApproval > ,
166+ #[ serde( default ) ]
161167 pub enabled_tools : Option < Vec < String > > ,
162168 #[ serde( default ) ]
163169 pub disabled_tools : Option < Vec < String > > ,
@@ -194,6 +200,7 @@ impl TryFrom<RawMcpServerConfig> for McpServerConfig {
194200 enabled,
195201 required,
196202 supports_parallel_tool_calls,
203+ default_tools_approval_mode,
197204 enabled_tools,
198205 disabled_tools,
199206 scopes,
@@ -260,6 +267,7 @@ impl TryFrom<RawMcpServerConfig> for McpServerConfig {
260267 required : required. unwrap_or_default ( ) ,
261268 supports_parallel_tool_calls : supports_parallel_tool_calls. unwrap_or_default ( ) ,
262269 disabled_reason : None ,
270+ default_tools_approval_mode,
263271 enabled_tools,
264272 disabled_tools,
265273 scopes,
0 commit comments