Skip to content

Suggested drafts (do not send)

Duckbill™ generates a Suggested Draft for RESPOND threads. It does not send mail, does not replace Outlook, and does not open a compose/reply-all client.

See ADR 0021, ADR 0019, FR §29, UI draft safety, API DraftReply / Command SendDraft, 04_MVP §3 and §6, Lifecycle §30, and 01 AI §8.

Labels

The three states must stay visually distinct:

KindLabelMeaning
suggestedSuggested DraftLocal recommendation. Copy it into an existing mail client.
savedSaved DraftProvider draft. Not created by the AI DraftReply tool.
sentSent MessageMail that left the mailbox. Never produced here.

Flow

Agent DraftReply
  → evaluatePolicy (ADR 0019; missing gateway fails closed on send)
  → persist Suggested Draft + optional AIInference / audit
  → return copyText

SendDraft, AI-authorized send, and AI-initiated CreateDraft-to-provider throw. ENABLE_SEND is recorded only; flipping it without an explicit future ticket still denies send. The module never calls a mail provider adapter. Graph scopes stay Mail.Read / Mail.ReadWrite — not Mail.Send.

Retrieve

Authenticated application API:

Prompt-injection in the source message cannot force send. Fixture RESPOND threads yield a draft; the send adapter counter stays zero.