Summary
On the Windows client, the Outlook reply action intermittently raises Outlook's Object Model Guard dialog and blocks the automated timeline until a human clicks Allow:
Microsoft Outlook
A program is trying to access email address information stored in Outlook. If this is unexpected, click Deny and verify your antivirus software is up to date.
Root cause
Both Windows reply handlers read the incoming message's sender address directly off the Outlook Interop MailItem:
src/Ghosts.Client.Windows/Handlers/Outlookv2.cs — ReplyViaOutlook: folderItem.SenderEmailAddress at lines ~990, ~1017, ~1038
src/Ghosts.Client.Windows/Handlers/Outlook.cs — ReplyViaOutlook: folderItem.SenderEmailAddress at lines ~324, ~345
MailItem.SenderEmailAddress is one of the properties protected by Outlook's Object Model Guard. When Outlook cannot confirm an up-to-date, registered antivirus (common on lab/VM/isolated hosts), accessing it raises the security prompt above.
Every other Outlook action (create/send) already sends through Redemption's SafeMailItem, which is precisely the mechanism that bypasses the Object Model Guard — but the reply path still reads the sender address through raw Interop, so it isn't covered. That is why the prompt only appears on reply cycles (and only on hosts without registered AV).
Suggested fix
Wrap the inbox item in a Redemption SafeMailItem (already imported and used for sending in both handlers) and read SenderEmailAddress from that wrapper. This is behavior-preserving — SafeMailItem.SenderEmailAddress returns the same underlying MAPI property value — and it eliminates the prompt because the read no longer goes through the guarded Object Model.
Environment
Ghosts.Client.Windows (.NET Framework), Outlook desktop with Redemption in lib/.
- Reproduces on hosts where Outlook has no up-to-date/registered antivirus, on any timeline with a non-zero
reply-probability and mail in the inbox.
PR to follow.
Summary
On the Windows client, the Outlook reply action intermittently raises Outlook's Object Model Guard dialog and blocks the automated timeline until a human clicks Allow:
Root cause
Both Windows reply handlers read the incoming message's sender address directly off the Outlook Interop
MailItem:src/Ghosts.Client.Windows/Handlers/Outlookv2.cs—ReplyViaOutlook:folderItem.SenderEmailAddressat lines ~990, ~1017, ~1038src/Ghosts.Client.Windows/Handlers/Outlook.cs—ReplyViaOutlook:folderItem.SenderEmailAddressat lines ~324, ~345MailItem.SenderEmailAddressis one of the properties protected by Outlook's Object Model Guard. When Outlook cannot confirm an up-to-date, registered antivirus (common on lab/VM/isolated hosts), accessing it raises the security prompt above.Every other Outlook action (create/send) already sends through Redemption's
SafeMailItem, which is precisely the mechanism that bypasses the Object Model Guard — but the reply path still reads the sender address through raw Interop, so it isn't covered. That is why the prompt only appears on reply cycles (and only on hosts without registered AV).Suggested fix
Wrap the inbox item in a Redemption
SafeMailItem(already imported and used for sending in both handlers) and readSenderEmailAddressfrom that wrapper. This is behavior-preserving —SafeMailItem.SenderEmailAddressreturns the same underlying MAPI property value — and it eliminates the prompt because the read no longer goes through the guarded Object Model.Environment
Ghosts.Client.Windows(.NET Framework), Outlook desktop with Redemption inlib/.reply-probabilityand mail in the inbox.PR to follow.