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.