diff --git a/ts/components/conversation/right-panel/overlay/message-info/OverlayMessageInfo.tsx b/ts/components/conversation/right-panel/overlay/message-info/OverlayMessageInfo.tsx
index dcf6baf91..59d75bc2b 100644
--- a/ts/components/conversation/right-panel/overlay/message-info/OverlayMessageInfo.tsx
+++ b/ts/components/conversation/right-panel/overlay/message-info/OverlayMessageInfo.tsx
@@ -20,6 +20,7 @@ import {
import { deleteMessagesById } from '../../../../../interactions/conversations/unsendingInteractions';
import {
useMessageAttachments,
+ useMessageBody,
useMessageDirection,
useMessageIsDeletable,
useMessageQuote,
@@ -42,6 +43,8 @@ import { PanelButtonGroup, PanelIconButton } from '../../../../buttons';
import { Message } from '../../../message/message-item/Message';
import { AttachmentInfo, MessageInfo } from './components';
import { AttachmentCarousel } from './components/AttachmentCarousel';
+import { clipboard } from 'electron';
+import { isEmpty } from 'lodash';
// NOTE we override the default max-widths when in the detail isDetailView
const StyledMessageBody = styled.div`
@@ -188,6 +191,7 @@ export const OverlayMessageInfo = () => {
const rightOverlayMode = useRightOverlayMode();
const messageId = useSelector(getMessageInfoId);
const messageInfo = useMessageInfo(messageId);
+ const messageBody = useMessageBody(messageId);
const isDeletable = useMessageIsDeletable(messageId);
const direction = useMessageDirection(messageId);
const timestamp = useMessageTimestamp(messageId);
@@ -285,6 +289,16 @@ export const OverlayMessageInfo = () => {
+ {messageBody && !isEmpty(messageBody) ? (
+ {
+ clipboard.writeText(messageBody);
+ }}
+ dataTestId="copy-msg-from-details"
+ />
+ ) : null}