@@ -1275,7 +1275,9 @@ ${skillMd}
12751275 permissionOverrides : permissionPrompt ?. permissions ,
12761276 messagePermissions : pendingToolCallMessage . message ?. meta ?. permissions ,
12771277 } ) ;
1278- permissionPrompt = await this . appendDeferredPermissionPrompt ( sessionId , permissionPrompt , sessionController ) ;
1278+ await this . appendDeferredPermissionPrompt ( sessionId , permissionPrompt , sessionController ) ;
1279+ // Permission replies are one-shot: do not reuse decisions or append the deferred user prompt again on later tool-call batches.
1280+ permissionPrompt = undefined ;
12791281 if ( this . isInterrupted ( sessionId ) ) {
12801282 return ;
12811283 }
@@ -2298,17 +2300,17 @@ ${skillMd}
22982300 sessionId : string ,
22992301 userPrompt : UserPromptContent | undefined ,
23002302 controller : AbortController
2301- ) : Promise < UserPromptContent | undefined > {
2303+ ) : Promise < void > {
23022304 if ( ! userPrompt || this . isContinuePrompt ( userPrompt ) ) {
2303- return undefined ;
2305+ return ;
23042306 }
23052307 const text = userPrompt . text ?? "" ;
23062308 const hasUserContent =
23072309 text . trim ( ) . length > 0 ||
23082310 ( Array . isArray ( userPrompt . imageUrls ) && userPrompt . imageUrls . length > 0 ) ||
23092311 ( Array . isArray ( userPrompt . skills ) && userPrompt . skills . length > 0 ) ;
23102312 if ( ! hasUserContent ) {
2311- return undefined ;
2313+ return ;
23122314 }
23132315 this . reportNewPrompt ( ) ;
23142316 const signal = controller . signal ;
@@ -2343,7 +2345,6 @@ ${skillMd}
23432345 this . onAssistantMessage ( skillMessage , true ) ;
23442346 }
23452347 }
2346- return undefined ;
23472348 }
23482349
23492350 private buildToolParamsSnippet ( toolFunction : unknown | null ) : string {
0 commit comments