4040import com .github .copilot .sdk .json .PermissionInvocation ;
4141import com .github .copilot .sdk .json .PermissionRequest ;
4242import com .github .copilot .sdk .json .PermissionRequestResult ;
43+ import com .github .copilot .sdk .json .PermissionRequestResultKind ;
4344import com .github .copilot .sdk .json .PostToolUseHookInput ;
4445import com .github .copilot .sdk .json .PreToolUseHookInput ;
4546import com .github .copilot .sdk .json .SendMessageRequest ;
@@ -684,6 +685,14 @@ private void executeToolAndRespondAsync(String requestId, String toolName, Strin
684685 });
685686 } catch (Exception e ) {
686687 LOG .log (Level .WARNING , "Error executing tool for requestId=" + requestId , e );
688+ try {
689+ rpc .invoke (
690+ "session.tools.handlePendingToolCall" , Map .of ("sessionId" , sessionId , "requestId" ,
691+ requestId , "error" , e .getMessage () != null ? e .getMessage () : e .toString ()),
692+ Object .class );
693+ } catch (Exception sendEx ) {
694+ LOG .log (Level .WARNING , "Error sending tool error for requestId=" + requestId , sendEx );
695+ }
687696 }
688697 });
689698 }
@@ -708,7 +717,7 @@ private void executePermissionAndRespondAsync(String requestId, PermissionReques
708717 }).exceptionally (ex -> {
709718 try {
710719 PermissionRequestResult denied = new PermissionRequestResult ();
711- denied .setKind ("denied-could-not-request-from-user" );
720+ denied .setKind (PermissionRequestResultKind . DENIED_COULD_NOT_REQUEST_FROM_USER );
712721 rpc .invoke ("session.permissions.handlePendingPermissionRequest" ,
713722 Map .of ("sessionId" , sessionId , "requestId" , requestId , "result" , denied ), Object .class );
714723 } catch (Exception e ) {
@@ -718,6 +727,14 @@ private void executePermissionAndRespondAsync(String requestId, PermissionReques
718727 });
719728 } catch (Exception e ) {
720729 LOG .log (Level .WARNING , "Error executing permission handler for requestId=" + requestId , e );
730+ try {
731+ PermissionRequestResult denied = new PermissionRequestResult ();
732+ denied .setKind (PermissionRequestResultKind .DENIED_COULD_NOT_REQUEST_FROM_USER );
733+ rpc .invoke ("session.permissions.handlePendingPermissionRequest" ,
734+ Map .of ("sessionId" , sessionId , "requestId" , requestId , "result" , denied ), Object .class );
735+ } catch (Exception sendEx ) {
736+ LOG .log (Level .WARNING , "Error sending permission denied for requestId=" + requestId , sendEx );
737+ }
721738 }
722739 });
723740 }
0 commit comments