@@ -776,32 +776,14 @@ impl Agents {
776
776
777
777
/// Returns a label to describe the permission status for a given tool.
778
778
pub fn display_label ( & self , tool_name : & str , origin : & ToolOrigin ) -> String {
779
- use crate :: util:: pattern_matching :: matches_any_pattern ;
779
+ use crate :: util:: tool_permission_checker :: is_tool_in_allowlist ;
780
780
781
781
let tool_trusted = self . get_active ( ) . is_some_and ( |a| {
782
- if matches ! ( origin, & ToolOrigin :: Native ) {
783
- return matches_any_pattern ( & a. allowed_tools , tool_name) ;
784
- }
785
-
786
- a. allowed_tools . iter ( ) . any ( |name| {
787
- name. strip_prefix ( "@" ) . is_some_and ( |remainder| {
788
- remainder
789
- . split_once ( MCP_SERVER_TOOL_DELIMITER )
790
- . is_some_and ( |( _left, right) | right == tool_name)
791
- || remainder == <ToolOrigin as Borrow < str > >:: borrow ( origin)
792
- } ) || {
793
- if let Some ( server_name) = name. strip_prefix ( "@" ) . and_then ( |s| s. split ( '/' ) . next ( ) ) {
794
- if server_name == <ToolOrigin as Borrow < str > >:: borrow ( origin) {
795
- let tool_pattern = format ! ( "@{}/{}" , server_name, tool_name) ;
796
- matches_any_pattern ( & a. allowed_tools , & tool_pattern)
797
- } else {
798
- false
799
- }
800
- } else {
801
- false
802
- }
803
- }
804
- } )
782
+ let server_name = match origin {
783
+ ToolOrigin :: Native => None ,
784
+ ToolOrigin :: McpServer ( _) => Some ( <ToolOrigin as Borrow < str > >:: borrow ( origin) ) ,
785
+ } ;
786
+ is_tool_in_allowlist ( & a. allowed_tools , tool_name, server_name)
805
787
} ) ;
806
788
807
789
if tool_trusted || self . trust_all_tools {
@@ -818,9 +800,9 @@ impl Agents {
818
800
"fs_read" => "trust working directory" . dark_grey ( ) ,
819
801
"fs_write" => "not trusted" . dark_grey ( ) ,
820
802
#[ cfg( not( windows) ) ]
821
- "execute_bash" => "trust read-only commands " . dark_grey ( ) ,
803
+ "execute_bash" => "not trusted " . dark_grey ( ) ,
822
804
#[ cfg( windows) ]
823
- "execute_cmd" => "trust read-only commands " . dark_grey ( ) ,
805
+ "execute_cmd" => "not trusted " . dark_grey ( ) ,
824
806
"use_aws" => "trust read-only commands" . dark_grey ( ) ,
825
807
"report_issue" => "trusted" . dark_green ( ) . bold ( ) ,
826
808
"introspect" => "trusted" . dark_green ( ) . bold ( ) ,
@@ -1189,8 +1171,8 @@ mod tests {
1189
1171
let execute_name = if cfg ! ( windows) { "execute_cmd" } else { "execute_bash" } ;
1190
1172
let execute_bash_label = agents. display_label ( execute_name, & ToolOrigin :: Native ) ;
1191
1173
assert ! (
1192
- execute_bash_label. contains( "read-only " ) ,
1193
- "execute_bash should show read-only by default, instead found: {}" ,
1174
+ execute_bash_label. contains( "not trusted " ) ,
1175
+ "execute_bash should not be trusted by default, instead found: {}" ,
1194
1176
execute_bash_label
1195
1177
) ;
1196
1178
}
0 commit comments