Skip to content

feature: custom slack apps can read threads + send as user #789

Description

@AggManik

Custom Slack apps currently can’t reliably (a) read Slack threads or (b) send messages on the user’s behalf (user identity).

Current behavior

  • No supported path for reading thread history for a given channel/thread
  • No supported path for posting as the user (vs bot)

Expected behavior

  • If a user installs a custom Slack app, core can read thread context (configurable scope)
  • core can send a message either as bot or as the user (explicit mode), depending on what the user authorized

Suggested implementation notes

  • Support both posting modes:
    • Bot token mode: chat.postMessage as the app
    • User token mode: chat.postMessage with a user token (or Slack Connect where applicable)
  • OAuth + scopes:
    • Reading: channels:history, groups:history, im:history, mpim:history (depending on target), plus channels:read/groups:read
    • Thread expansion: use conversations.replies for thread_ts
    • Posting: chat:write (bot), chat:write:user (if using user token), plus users:read if needed
  • Store token type and workspace metadata; enforce least-privilege and clear UX copy for what’s being authorized
  • Add API surface to fetch a thread by (channel_id, thread_ts) and return messages in chronological order

Acceptance criteria

  • Given (channel_id, thread_ts), core fetches the full thread messages reliably.
  • core can post to a channel in bot mode.
  • If user token authorized, core can post in user mode (and fails with a clear error when not authorized).
  • Unit/integration tests cover: missing scopes, revoked token, and thread with > 100 replies (pagination).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions