Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

← All guides

Gmail draft permissions and personal playbooks

Official Kody guide

Google has no drafts-only OAuth scope. gmail.compose permits managing drafts and sending email. Do not invent a narrower grant. Request gmail.readonly only if reading mail is also required.

Save a thin personal playbook that calls users.drafts.create, not messages.send or drafts.send. Document and test that behavior. Use the existing integrationLock({ name, playbook_id }) to restrict which playbook may use the connection; ad hoc execute and other playbooks are denied. Unlocking or removing grants remains an owner action in integration settings.

This is an identity-based integration grant, not an immutable code grant. Personal playbooks use current saved code and have no published revision lock. Do not promise that a drafts-only export permanently removes send authority from a token or from later edits. Editing must not automatically widen grants. If the user requires an unchangeable no-send boundary, explain that this workflow alone does not provide one; use a provider-side restriction or a separately controlled service that enforces it.

Read current source and edit_token with playbookGet; save complete files using expected_edit_token. Test only draft creation, with user consent for the actual draft write. Keep schedules disabled until the intended behavior and required approvals are verified.

See Google setup, integration bootstrap, and personal playbook authoring.

Working with an agent? This guide is also plain markdown at /guides/locked-gmail-drafts.md, or load it over MCP with search({ entity: 'locked_gmail_drafts:guide' }).