The MxAccess docs explicitly state OnWriteComplete always fires after Write(). The real cause is no Windows message pump in the headless service process to marshal the COM callback. Fire-and-forget is safe for supervisory writes but would miss secured/verified write rejections (errors 1012/1013). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>