Why is the `OnPermissionRequest` event triggered twice for the same `PermissionRequestKindWrite` request?
- Langage dominant
- Java
- Étoiles
- 10.5k
- Forks
- 1.5k
- Merge moyen
- 1 j 11 h
- PR mergées (30 j)
- 127
Description
Except for the requestID, the `request` and `invocation` in both calls are identical.
```
permissionHandler := func(request copilot.PermissionRequest, invocation copilot.PermissionInvocation) (copilotrpc.PermissionDecision, error) {
requiresWriteConfirm := requiresWriteApproval(request)
requestID := uuid.NewString()
if request.Kind() == copilotrpc.PermissionRequestKindWrite {
fmt.Printf("[Permission Check] invocation: %s, Kind: %v, Request: %+v\n", invocation.SessionID, request.Kind(), request)
}
h.pushBridgeEvent(session.userID, session.sessionID, "permission.request", gin.H{
"request_id": requestID,
"kind": string(request.Kind()),
"request": request,
"copilot_session_id": fmt.Sprintf("%v", invocation.SessionID),
"requires_write_confirm": requiresWriteConfirm,
"session_id": strconv.FormatInt(session.sessionID, 10),
})
if !requiresWriteConfirm {
decision := copilotrpc.PermissionDecisionApproveOnce{}
h.pushBridgeEvent(session.userID, session.sessionID, "permission.decision", gin.H{
"request_id": requestID,
"kind": string(request.Kind()),
"approved": true,
})
return decision, nil
}
....
}
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Start by reproducing the duplicate callbacks with the shown permissionHandler and logging request.Kind(), request, invocation.SessionID, and requestID for PermissionRequestKindWrite. Trace where the OnPermissionRequest event is dispatched and compare both invocations, then verify that one logical write request produces one callback while preserving the existing permission decision flow.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- go
- Domaine
- api, backend-api-design
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 42/100