How to Create and Manage Email Drafts
Save emails as drafts for review, update them, then send when ready. Reply and forward as drafts too.
Save emails as drafts in your Outlook Drafts folder, edit them, and send when ready. Useful for composing important emails that need review before sending, or preparing replies you want to revisit later.
Create a Draft
“Draft an email to Sarah about the project update — save it, don’t send”
tool: draft
params:
action: "create"
to: "sarah@company.com"
subject: "Project Alpha Update"
body: "Hi Sarah,\n\nHere's the latest on Project Alpha..."
The draft is saved to your Drafts folder. The response includes the draft ID — you’ll need this to update, send, or delete it later.
Unlike send-email, drafts don’t require all fields. You can save a draft with just a subject, just a body, or even empty — fill in the details later.
Preview Before Saving (Dry Run)
“Show me what this draft would look like before saving”
tool: draft
params:
action: "create"
to: "sarah@company.com"
subject: "Project Alpha Update"
body: "Hi Sarah..."
dryRun: true
Returns a preview of the draft without saving it to your Drafts folder.
Update a Draft
“Update that draft — change the subject and add a CC”
tool: draft
params:
action: "update"
id: "draft-id-from-create"
subject: "Project Alpha — Q2 Update"
cc: "manager@company.com"
body: "Hi Sarah and team,\n\nUpdated content..."
You can update any combination of subject, body, recipients (to/cc/bcc), and importance. Only the fields you include are changed.
The id must be an unsent draft. If it points at a received or sent message, the update is refused and nothing is changed; an ID that no longer exists returns “Draft not found”.
Send a Draft
“That draft looks good — send it”
tool: draft
params:
action: "send"
id: "draft-id-from-create"
The draft is sent and moved to Sent Items. Note: The draft ID becomes invalid after sending — the message gets a new ID in Sent Items.
The send action counts towards the send-email rate limit (OUTLOOK_MAX_SEND_EMAIL_PER_SESSION, or OUTLOOK_MAX_EMAILS_PER_SESSION when that isn’t set). If the server has a recipient allowlist, the draft’s current to, cc and bcc are checked first; if any isn’t allowed, nothing is sent and the draft stays in Drafts.
Delete a Draft
“Delete that draft, I don’t need it”
tool: draft
params:
action: "delete"
id: "draft-id"
The draft skips Deleted Items and goes straight to Recoverable Items. It isn’t gone for good: Outlook’s Recover deleted items (in the Deleted Items folder) can restore it for a limited time, depending on your account. Like update and send, delete refuses any id that is not an unsent draft, so it can’t remove a received or sent message.
Reply as Draft
“Draft a reply to that email from Sarah — I’ll review it before sending”
tool: draft
params:
action: "reply"
id: "original-message-id"
comment: "Thanks for the update, Sarah. I'll review and get back to you."
Creates a reply draft with the correct RE: subject, original recipient, and threading headers auto-populated. The draft appears in your Drafts folder for review.
For reply-all:
tool: draft
params:
action: "reply-all"
id: "original-message-id"
comment: "Thanks everyone."
Comment vs Body
comment— short text prepended above the quoted original message (most common)body— full HTML or text body replacing the default reply content (advanced)
These are mutually exclusive — use one or the other, not both.
Forward as Draft
“Forward that email to James — save as draft so I can add a note first”
tool: draft
params:
action: "forward"
id: "original-message-id"
to: "james@company.com"
comment: "FYI — relevant to our discussion yesterday."
Forward requires a to recipient. The original message content and attachments are included automatically.
Find Your Drafts
Use search-emails with the drafts folder to list your saved drafts:
tool: search-emails
params:
folder: "drafts"
count: 10
Safety Controls
The draft tool inherits the same safety controls as send-email:
| Control | Applies to | Config |
|---|---|---|
| Dry-run preview | create (other actions refuse dryRun: true and change nothing) | dryRun: true |
| Mail-tips check | create | checkRecipients: true |
| Recipient allowlist | create, update, forward, reply, reply-all, send | OUTLOOK_ALLOWED_RECIPIENTS env |
| Rate limiting | create, update, reply, reply-all, forward | OUTLOOK_MAX_DRAFT_PER_SESSION env, else OUTLOOK_MAX_EMAILS_PER_SESSION; 0 blocks, unset = no limit |
| Send rate limiting | send | Shared with send-email: OUTLOOK_MAX_SEND_EMAIL_PER_SESSION env, else OUTLOOK_MAX_EMAILS_PER_SESSION; 0 blocks every send, unset = no limit |
| Drafts-only guard | update, send, delete | Always on (non-drafts are refused) |
With an allowlist set, send checks the draft’s to, cc and bcc as they are at send time, so a recipient added later (including in Outlook) is caught before anything goes out. reply and reply-all check the recipients Graph fills in from the original message; if any isn’t allowed, the new draft is deleted and the call is refused. Since v3.14.1 a refused reply doesn’t count towards the rate limit once its draft has been deleted, and neither does one Graph rejects outright (a 4xx other than 408). A timeout, a server error (5xx), a 408 or a failed delete keeps the slot used, because a draft may have been left behind. Dry runs don’t count towards the rate limit.
Tips
- Use drafts for important emails that need review — safer than
send-emailwithdryRun - The draft-then-send workflow gives you a real draft in Outlook that you can also edit in the Outlook app
- Reply/forward drafts preserve threading — the sent message appears in the correct conversation
- No new Azure permissions needed — drafts use the same
Mail.ReadWriteandMail.Sendscopes
Related
- Send Email Safely — direct send with dry-run and safety controls
- Check Recipients Before Sending — pre-send mail tips
- Find Emails — search for emails to reply to
- Tools Reference — draft