diff --git a/packages/web/src/components/chat/Message.tsx b/packages/web/src/components/chat/Message.tsx
index 61b0dfb8..fc7c27e3 100644
--- a/packages/web/src/components/chat/Message.tsx
+++ b/packages/web/src/components/chat/Message.tsx
@@ -132,6 +132,13 @@ export function Message({ message, isCompact, isFirstInGroup, previousMessageId
const pending = isPendingMessage(message) ? message.__pending : null;
const showInteractions = !pending;
+ const transfersForRow = useTransferStore((s) => s.transfers);
+ const anyTransferTerminallyBad = !!pending && pending.transferIds.some((tid) => {
+ const t = transfersForRow.get(tid);
+ return t && (t.state === 'failed' || t.state === 'aborted');
+ });
+ const showRetryDiscardRow = pending?.state === 'failed' || anyTransferTerminallyBad;
+
const channelKey: string = isPendingMessage(message)
? message.channelId || message.dmChannelId || ''
: message.channelId || (message as MessageWithUser & { dmChannelId?: string }).dmChannelId || '';
@@ -503,7 +510,7 @@ export function Message({ message, isCompact, isFirstInGroup, previousMessageId
)}
{/* Failed-state retry/discard row */}
- {pending?.state === 'failed' && (
+ {showRetryDiscardRow && pending && (