[BUG] Gmail MCP: gmail_read_message fails on all draft messages (returns error, no body)

Resolved 💬 3 comments Opened Apr 15, 2026 by trajanus-usa Closed May 25, 2026

Bug Description

gmail_read_message returns an error for ALL draft messages. It works correctly on sent/inbox messages but fails on every draft — including drafts just created by gmail_create_draft in the same session.

Reproduction Steps

  1. Create a draft: gmail_create_draft → returns messageId
  2. Immediately read it: gmail_read_message(messageId)error
  3. Read any sent message with gmail_read_messageworks fine

What Works vs What's Broken

| Tool | Status |
|------|--------|
| gmail_search_messages (finds drafts) | ✅ Works (snippet only) |
| gmail_list_drafts | ✅ Works (snippet only) |
| gmail_create_draft | ✅ Works |
| gmail_read_message on sent/inbox | ✅ Works |
| gmail_read_message on ANY draft | ❌ Broken — returns opaque error |
| gmail_get_profile | ✅ Works |

Impact

This breaks any workflow that uses Gmail drafts as a communication channel. We use drafts as a dead-drop protocol between Claude Code instances — the primary comms system for our multi-agent setup. With this broken, agents can find drafts exist (via search/list) but cannot read the body content.

Environment

  • Claude Code version: 2.1.107 (updated 2026-04-14)
  • Platform: Windows 11, bash shell
  • Gmail MCP: Anthropic-hosted remote server (claude_ai_Gmail)
  • This worked in previous sessions (pre-2.1.107 and/or pre-April 14 MCP server state)

Root Cause Hypothesis

Gmail API requires drafts.get(draftId) to read draft bodies — messages.get(messageId) does not return bodies for draft-only messages. The MCP server likely uses messages.get() internally, which works for sent/inbox but not drafts.

Related

  • #32266 — gmail_send_draft tool also missing from hosted server

Requested Fix

Either:

  1. Fix gmail_read_message to handle draft messageIds (use drafts.get internally when the message has DRAFT label), or
  2. Add a dedicated gmail_read_draft(draftId) tool

🤖 Generated with Claude Code

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗