Prevent passive Slack thread participants from receiving plugin OAuth prompts
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- typescript
- Lĩnh vực
- authentication, backend-api-design
Hướng nghiên cứu
Bắt đầu từ SlackTurnRuntime.handleSubscribedMessage và theo dõi cách nguồn gốc actor của conversation-store đi tới xác thực MCP, đồng thời so sánh các cuộc hội thoại đã đăng ký đang hoạt động và ở trạng thái nhàn rỗi. Sử dụng các trường hợp tái hiện và chấp nhận để bổ sung phạm vi kiểm thử cho các phản hồi thụ động xuyên actor, các lượt đề cập tường minh và việc phân phối OAuth; hoàn tất khi ngữ cảnh được giữ lại mà không thay đổi quyền hạn và không có người tham gia không liên quan nào nhận được prompt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
Junior treats the author of every subscribed Slack reply as the actor for a new turn, even when that person only joined an existing thread to provide context.
This produces a bad OAuth flow in shared threads:
- Alice asks Junior to debug an engineering problem.
- Junior begins an investigation that uses an authenticated MCP plugin such as PlanetScale.
- Bob replies without mentioning Junior and adds support context, an identifier, or a correction.
- The subscribed-reply router decides Bob's message continues Junior's work.
- Junior starts the turn with Bob as the actor.
- When PlanetScale requires authentication, Junior sends Bob an OAuth link.
Bob never requested PlanetScale access, may not have a PlanetScale account, and did not take ownership of the investigation. The original task also stalls waiting for an authorization Bob cannot complete.
Current behavior
SlackTurnRuntime.handleSubscribedMessage assigns the latest message author as the turn actor:
const actorId = isResourceEventNotification
? undefined
: message.author.userId;
MCP authentication then creates and delivers the authorization request for that actor:
userId: input.actorId
The conversation store already preserves the original conversation actor when another Slack user participates, but the subscribed-turn runtime does not use that distinction.
Plugin manifests also have no audience or eligibility configuration. Every actor can reach every plugin's OAuth flow if the model selects its tools.
Expected behavior
Posting a passive reply in a subscribed thread must not implicitly make someone the task authority or credential principal.
- A cross-actor reply without an explicit Junior mention may contribute context to the existing task.
- It must not trigger an OAuth link for its author.
- It must not authorize new work or broaden the original task.
- Junior may continue using the task owner's authority only within the work that owner already requested.
- If attribution is ambiguous, Junior should wait for the task owner instead of asking the incidental participant to authenticate.
- An explicit mention from another actor may start a separate turn under that actor's credentials.
- Junior must never reuse the task owner's credentials for a new request from another participant.
Reproduction
- Alice mentions Junior in a Slack thread and requests an investigation that requires an MCP plugin.
- Alice has authorized the plugin.
- Allow the initial turn to complete or pause.
- Bob replies in the same thread without mentioning Junior.
- Make Bob's reply a natural continuation, such as supplying the requested record ID.
- Observe Junior send Bob the plugin OAuth link.
Acceptance
- Passive cross-actor subscribed replies never send their author an OAuth link.
- The message remains available as attributed conversation context.
- Existing task authority and credential ownership do not silently change.
- Explicit cross-actor mentions remain separate actor-owned turns.
- Tests cover both active and idle subscribed conversations.
Related
- #773 tracks actor and instruction provenance across multi-actor runs.
- #956 tracks cross-actor mentions arriving during an active run.
- This issue covers the remaining subscribed-thread case where an incidental participant becomes the actor for a later turn and receives an unintended OAuth prompt.
- Ngôn ngữ chính
- TypeScript
- Star
- 397
- Fork
- 43
- Merge trung bình
- 7 giờ 55 phút
- Pull request đã merge (30 ngày)
- 661
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của getsentry/junior
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
getsentry/junior#335 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của getsentry/junior
Issue tương tự
-
status: needs triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
mastra-ai/mastra#29706 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
lingdojo/kana-dojo#33802 · 1 bình luận · 5 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
cloudflare/workerd#8290 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area: build-and-ci possible-duplicate S3: minor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
manaflow-ai/cmux#38889 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
ValentinH/react-easy-crop#670 ·