@@ -479,7 +479,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
479479 } )
480480 } , [ modifiedMessages ] )
481481
482- const isReadOnlyToolAction = ( message : ClineMessage | undefined ) => {
482+ const isReadOnlyToolAction = useCallback ( ( message : ClineMessage | undefined ) => {
483483 if ( message ?. type === "ask" ) {
484484 if ( ! message . text ) {
485485 return true
@@ -488,9 +488,9 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
488488 return [ "readFile" , "listFiles" , "listFilesTopLevel" , "listFilesRecursive" , "listCodeDefinitionNames" , "searchFiles" ] . includes ( tool . tool )
489489 }
490490 return false
491- }
491+ } , [ ] )
492492
493- const isWriteToolAction = ( message : ClineMessage | undefined ) => {
493+ const isWriteToolAction = useCallback ( ( message : ClineMessage | undefined ) => {
494494 if ( message ?. type === "ask" ) {
495495 if ( ! message . text ) {
496496 return true
@@ -499,9 +499,9 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
499499 return [ "editedExistingFile" , "appliedDiff" , "newFileCreated" ] . includes ( tool . tool )
500500 }
501501 return false
502- }
502+ } , [ ] )
503503
504- const isMcpToolAlwaysAllowed = ( message : ClineMessage | undefined ) => {
504+ const isMcpToolAlwaysAllowed = useCallback ( ( message : ClineMessage | undefined ) => {
505505 if ( message ?. type === "ask" && message . ask === "use_mcp_server" ) {
506506 if ( ! message . text ) {
507507 return true
@@ -514,9 +514,9 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
514514 }
515515 }
516516 return false
517- }
517+ } , [ mcpServers ] )
518518
519- const isAllowedCommand = ( message : ClineMessage | undefined ) => {
519+ const isAllowedCommand = useCallback ( ( message : ClineMessage | undefined ) => {
520520 if ( message ?. type === "ask" ) {
521521 const command = message . text
522522 if ( ! command ) {
@@ -533,19 +533,32 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
533533 } )
534534 }
535535 return false
536- }
536+ } , [ allowedCommands ] )
537537
538- const isAutoApproved = ( message : ClineMessage | undefined ) => {
539- if ( ! message || message . type !== "ask" ) return false
538+ const isAutoApproved = useCallback (
539+ ( message : ClineMessage | undefined ) => {
540+ if ( ! message || message . type !== "ask" ) return false
540541
541- return (
542- ( alwaysAllowBrowser && message . ask === "browser_action_launch" ) ||
543- ( alwaysAllowReadOnly && message . ask === "tool" && isReadOnlyToolAction ( message ) ) ||
544- ( alwaysAllowWrite && message . ask === "tool" && isWriteToolAction ( message ) ) ||
545- ( alwaysAllowExecute && message . ask === "command" && isAllowedCommand ( message ) ) ||
546- ( alwaysAllowMcp && message . ask === "use_mcp_server" && isMcpToolAlwaysAllowed ( message ) )
547- )
548- }
542+ return (
543+ ( alwaysAllowBrowser && message . ask === "browser_action_launch" ) ||
544+ ( alwaysAllowReadOnly && message . ask === "tool" && isReadOnlyToolAction ( message ) ) ||
545+ ( alwaysAllowWrite && message . ask === "tool" && isWriteToolAction ( message ) ) ||
546+ ( alwaysAllowExecute && message . ask === "command" && isAllowedCommand ( message ) ) ||
547+ ( alwaysAllowMcp && message . ask === "use_mcp_server" && isMcpToolAlwaysAllowed ( message ) )
548+ )
549+ } ,
550+ [
551+ alwaysAllowBrowser ,
552+ alwaysAllowReadOnly ,
553+ alwaysAllowWrite ,
554+ alwaysAllowExecute ,
555+ alwaysAllowMcp ,
556+ isReadOnlyToolAction ,
557+ isWriteToolAction ,
558+ isAllowedCommand ,
559+ isMcpToolAlwaysAllowed
560+ ]
561+ )
549562
550563 useEffect ( ( ) => {
551564 // Only execute when isStreaming changes from true to false
0 commit comments