hey reply / hey draft send report success but the message stays in Drafts (send-as address) · Issue #544 · basecamp/hey-cli · GitHub
Skip to content

hey reply / hey draft send report success but the message stays in Drafts (send-as address) #544

Open

Description

@heredia21

Summary

With hey-cli 1.7.0 (Linux), replying in a thread whose latest entry was sent from a send-as address reports success, but nothing is delivered: the message stays in Drafts and never appears in the thread. Running hey draft send on that draft also reports success and has the same result. Because both commands exit ok, an agent or script assumes the email went out.

Steps to reproduce

  1. Pick a thread whose latest entry you sent from a send-as address (not the primary @hey.com identity).
  2. Check the envelope:
    hey reply <thread-id> --replace-recipients --to a@example.com --cc b@example.com --dry-run
    
    This resolves correctly: "from": {"email_address": "<send-as address>"}, with the right To and CC.
  3. Send it:
    hey reply <thread-id> --replace-recipients --to a@example.com --cc b@example.com -m "..."
    
    Output: {"ok": true, ..., "summary": "Reply sent"}
  4. hey thread read <thread-id> --json: the entry count is unchanged, even after several minutes.
  5. hey draft list --json: the reply is there as a draft (subject Re: ..., from = the send-as address, correct To/CC and body).
  6. hey draft send <draft-id>: {"ok": true, "data": {"id": <draft-id>}, "summary": "Draft sent"}
  7. Polling for about 2 more minutes: the thread still has the same number of entries, and the draft is still in hey draft list.

Expected

Either the reply is delivered (it shows up in the thread and leaves Drafts), or the command exits non-zero with the server's reason. A success summary should only be reported once the message has actually left Drafts.

Actual

Both commands report success while the message stays an unsent draft. Sending from the HEY web app is the workaround.

Notes

Activity

  1. heredia21 commented on Oct 5, 2026

    @heredia21
    Author

    Found the cause. Trying to send the same draft from the HEY web app shows:

    We couldn't send this message right now. Your account has reached the limit for the maximum number of messages you can send now. We saved this message as a draft instead, so you'll be able to send it later.

    So the server rejects the send because of the account's sending limit (after a bulk send earlier the same day) and saves the message as a draft. The CLI doesn't surface any of that: hey reply returns "ok": true, "summary": "Reply sent" and hey draft send returns "ok": true, "summary": "Draft sent".

    Suggested fix: when the send response says the message was kept as a draft because of a sending limit, exit non-zero with a clear error (for example "error": "sending limit reached; saved as draft <id>") and, if available, when sending will be possible again. This ties in with #521 (expose sending limits).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions