Remove one draft attachment
Open the draft in its mailbox's composer, or request removeDraftAttachment in Complexity. Composer removal is a direct user action. The tool only proposes removal and needs separate single-use approval.
Both paths dispatch mailbox.draft.attachment.remove through Kafka. The actor needs mail.draft.attachment.remove, based on mail.draft.edit, a MailGen license, and an active owned mailbox. Agent use also needs its separate grant and enabled tool selection.
Approval binds actor, chat, mailbox, draftId, attachmentId, draft content revision, and operation ID. The worker rechecks these. The worker rejects scheduled or no longer editable drafts.
m365local and m365Ent read the draft and complete attachment manifest, including inline attachments. They delete the exact Graph attachment and read the draft and manifest again. The queue reports confirmed only for matching IDs with verifiedAbsent. Prisma explicitly rejects this action. See Microsoft setup.
The composer updates the attachment chip only after its own operation confirms and a fresh draft read succeeds. Failure, interruption, or 60 seconds of waiting shows a retryable state. Inspect the existing operation before retrying.
Graph attachment DELETE has no documented If-Match contract in this implementation. The content revision and exact attachment ID reject stale intent, but do not make preflight and remote DELETE atomically conditional. Draft content writes do not upload files. Use scanned attachment upload to add one.