@@ -337,7 +337,7 @@ func (m *messageListCmp) updateToolCalls(msg message.Message, existingToolCalls
337337 var cmds []tea.Cmd
338338
339339 for _, tc := range msg.ToolCalls() {
340− if cmd := m.updateOrAddToolCall(tc, existingToolCalls, msg.ID); cmd != nil {
340+ if cmd := m.updateOrAddToolCall(msg, tc, existingToolCalls); cmd != nil {
341341 cmds = append(cmds, cmd)
342342 }
343343 }
@@ -346,18 +346,21 @@ func (m *messageListCmp) updateToolCalls(msg message.Message, existingToolCalls
346346}
347347
348348// updateOrAddToolCall updates an existing tool call or adds a new one.
349−func (m *messageListCmp) updateOrAddToolCall(tc message.ToolCall, existingToolCalls map[int]messages.ToolCallCmp, messageID string) tea.Cmd {
349+func (m *messageListCmp) updateOrAddToolCall(msg message.Message, tc message.ToolCall, existingToolCalls map[int]messages.ToolCallCmp) tea.Cmd {
350350 // Try to find existing tool call
351351 for index, existingTC := range existingToolCalls {
352352 if tc.ID == existingTC.GetToolCall().ID {
353353 existingTC.SetToolCall(tc)
354+ if msg.FinishPart() != nil && msg.FinishPart().Reason == message.FinishReasonCanceled {
355+ existingTC.SetCancelled()
356+ }
354357 m.listCmp.UpdateItem(index, existingTC)
355358 return nil
356359 }
357360 }
358361
359362 // Add new tool call if not found
360− return m.listCmp.AppendItem(messages.NewToolCallCmp(messageID, tc))
363+ return m.listCmp.AppendItem(messages.NewToolCallCmp(msg.ID, tc))
361364}
362365
363366// handleNewAssistantMessage processes new assistant messages and their tool calls.