Skip to content

Addie: resume pending GitHub issue draft after user connects GitHub #2995

Description

@bokelley

Problem

A first-time member asks Addie to file a bug. create_github_issue returns the "not connected" message with a Connect link (PR #2967, #2979). The user clicks the link, completes the WorkOS Pipes → GitHub OAuth flow, and lands back at `/member-hub?connected=github`. But the original draft — the title/body they described to Addie — is lost. They have to come back to the Addie conversation and re-ask.

This is the biggest retention gap in the new GitHub-issue flow. The hardest part of the user's work (articulating the bug) already happened; we're making them do it twice.

Desired behaviour

When a user asks Addie to file an issue and hits the not-connected path:

  1. Addie stashes the pending draft (title, body, optional labels) against the current conversation, keyed by a short opaque token.
  2. Addie's Connect URL includes that token (as a query param on `return_to`, e.g. `/member-hub?connected=github&resume=`).
  3. The member-hub page detects `?resume=` after a successful connect, and deep-links the user back to the Addie conversation with a hint that triggers Addie to call `create_github_issue` with the stashed payload — or surfaces a one-click "Want me to file that bug now?" button.
  4. On success, Addie posts the issue URL.

Out of scope

  • Any cross-channel persistence (Slack thread → web). The first iteration can be web-only and keyed by conversation ID.
  • Arbitrary deferred tool calls. This is specifically for GitHub issue drafts.

Related

Acceptance

  • Draft survives a cold OAuth round-trip.
  • Token expires after 15 minutes.
  • Test covers the stash → connect → resume path (mocked WorkOS + GitHub).
  • No cross-user contamination — token is scoped to the original `workos_user_id`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    addieIssues related to Addie (via any channel)claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions