stacklok / stacklok/mecatl

Slack bot: manual permission approval flow

Open
#1,397 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Go
Stars
152
Forks
16
Avg merge
14h 48m
Merged PRs (30d)
536

Description

Summary

Add a manual permission approval flow to the Slack bot so a run can pause for
an authorized person's decision instead of automatically allowing every ask.

The current reference implementation passes
onPermissionAsk: () => "allow_once". This is appropriate for its trusted
development baseline, but it does not provide a human approval boundary for a
deployed bot.

Scope

  • Represent a pending permission ask with Slack's suspended status and Block
    Kit controls.
  • Deliver the request only to the authorized person who initiated the run.
  • Support allow-once and deny decisions. Include allow-always only if the
    server and SDK can preserve its existing authority semantics.
  • Correlate every interaction with the exact session, run, and ask.
  • Reject stale, duplicate, unauthorized, and post-terminal interactions.
  • Resume the run after an accepted decision and clear the pending Slack UI
    when the run terminates or is canceled.
  • Cover the interaction and race behavior with offline tests.

Completion criteria

  • A permission ask never appears as an actionable control to a whole channel.
  • One accepted decision resolves the exact pending ask.
  • A stale or unauthorized interaction cannot affect another run.
  • The bot can select manual approval without retaining the unconditional
    auto-approval callback.

References

  • #883 and sdk/typescript/examples/slack-bot/DESIGN.md.
  • The Slack bot integration roadmap parent.

Fully or partially written by an AI agent.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with sdk/typescript/examples/slack-bot/DESIGN.md and the implementation referenced by #883; inspect how the current onPermissionAsk callback selects allow_once. Define the offline interaction and race tests around the Slack suspended status and Block Kit controls. Done means only the initiating authorized user can resolve the exact pending ask, stale or duplicate actions are rejected, and terminal runs clear the UI.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, typescript
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.