@@ -221,7 +221,10 @@ func (g *geminiClient) send(ctx context.Context, messages []message.Message, too
221221 }
222222 }
223223 }
224− finishReason := g.finishReason(resp.Candidates[0].FinishReason)
224+ finishReason := message.FinishReasonEndTurn
225+ if len(resp.Candidates) > 0 {
226+ finishReason = g.finishReason(resp.Candidates[0].FinishReason)
227+ }
225228 if len(toolCalls) > 0 {
226229 finishReason = message.FinishReasonToolUse
227230 }
@@ -350,7 +353,11 @@ func (g *geminiClient) stream(ctx context.Context, messages []message.Message, t
350353 eventChan <- ProviderEvent{Type: EventContentStop}
351354
352355 if finalResp != nil {
353− finishReason := g.finishReason(finalResp.Candidates[0].FinishReason)
356+
357+ finishReason := message.FinishReasonEndTurn
358+ if len(finalResp.Candidates) > 0 {
359+ finishReason = g.finishReason(finalResp.Candidates[0].FinishReason)
360+ }
354361 if len(toolCalls) > 0 {
355362 finishReason = message.FinishReasonToolUse
356363 }