Skip to content

TUI cannot open HEY onboarding emails: GET /messages/{id}.json returns 500 for sign_up_message #347

Description

@lil2good

Description

Opening any thread in hey tui fails with:

the service is refusing requests: API error: 500 Internal Server Error

This is not a local auth or install problem. hey doctor is clean, listing boxes works, and the same threads load in the HEY web app. The TUI (and hey thread read) fail because HEY's JSON body endpoint 500s for onboarding / sign_up_message entries.

Steps to Reproduce

On a new HEY account whose Imbox is still the default HEY Team welcome threads:

  1. hey tui
  2. Open any Imbox thread (e.g. "Getting started with HEY")

Or from the CLI:

hey box view imbox --json   # works; postings have topic_id
hey thread read TOPIC_ID  # 500

Direct API (same OAuth token):

GET /topics/TOPIC_ID/entries.json     → 200, kind=sign_up_message
GET /messages/ENTRY_ID.json     → 500 HTML "Something went wrong."
GET /topics/TOPIC_ID (HTML)           → 200, thread renders in the web app

Every Imbox thread on this account is kind: sign_up_message and every GET /messages/ENTRY_ID.json for those entry IDs returns 500. Examples:

topic_id entry_id subject
2109939384 2242475713 Getting started with HEY
2109939378 2242475705 FAQs: Notifications, multiple accounts, apps, etc.

Request id from a 500: bf55c710-8ccf-4762-a81f-cca704b7ce7b.

Expected Behavior

The TUI opens the thread. hey thread read returns the body (or at least a bodyless/partial result instead of aborting the whole load).

Actual Behavior

internal/threadload treats HTTP 500 as ErrSystemic ("the service is refusing requests") and aborts hydration. hey thread read --allow-partial still fails because the 500 is classified as systemic, not as a single failed body.

Verbose log:

GET (entries index) → 200
GET (message body)  → 500, retried, then the TUI error overlay

Environment

  • hey-cli 1.2.1 (58c83f1e, 2026-08-26)
  • Auth: OAuth, not expired, keyring
  • hey doctor: all ok
  • OS: Linux
  • HEY status page: operational (no incident on 2026-08-27)

Notes

This looks like a HEY API bug on Messages().Get / GET /messages/ENTRY_ID.json for sign_up_message. New accounts only have those threads, so the TUI looks completely broken until other mail arrives. The web UI still renders the same topics, so the content exists — the JSON message resource does not.

Possible client-side mitigations until the API is fixed:

  • Do not treat a 500 on a single message hydrate as ErrSystemic; record StateFailed so --allow-partial and the TUI can show the entry summary.
  • Skip Messages().Get for kind: sign_up_message (and similar non-message kinds) and render the entry summary instead of a fatal overlay.

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