Skip to main content
Slack can be both a Roomote sign-in provider and a communications provider. You may use one Slack app for both jobs.

What you need

  • a Slack workspace where you can create and install apps
  • a stable public Roomote URL
  • access to Roomote setup or deployment environment variables
Use <public-url> below for the exact public URL printed by local development or configured for your self-hosted deployment.

Session path

In /setup or Settings → Communications, paste a Slack app configuration token and Roomote creates the Slack app for you through Slack’s apps.manifest.create API:
  1. open api.slack.com/apps and click Generate Token under Your App Configuration Tokens (at the bottom of the page), picking the workspace where Roomote should live
  2. paste the access token into Roomote and click Create Slack app
Roomote creates the app with redirect URLs, webhook URLs, interactivity, scopes, and events preconfigured for the current public URL, then saves the Client ID, Client Secret, and Signing Secret automatically. The configuration token is used once to create the app and never stored. Finish the Slack install step so Roomote can receive events and post replies. If Slack is already configured, Settings → Communications shows the saved credentials and still offers Create a new Slack app with a configuration token when you need to replace them.

Update an existing Slack app

After connecting a workspace, use Settings → Communications → Slack → Update app to bring the existing app manifest up to date with the current Roomote configuration. Generate and paste a fresh app configuration token when prompted. Roomote exports the app’s current manifest, preserves custom fields, adds or updates Roomote’s required capabilities, scopes, events, redirect URLs, and callback URLs, validates the result, and then applies it. The token is not stored. If the update changes permissions, Roomote shows Reinstall in Slack. Finish that approval step before testing the new capabilities because Slack does not add scopes to existing installations automatically.

Alternative: env vars or an existing app

If you already have a Slack app, or production secret management should own the credentials, create the app in Slack (optionally from a prefilled manifest) and set these deployment env vars instead of using the config-token flow:
After the values are available to Roomote, finish the Slack install step so Roomote can receive events and post replies. SLACK_APP_ID is optional for manual preconfiguration. Roomote saves Slack’s app_id from the OAuth installation response after workspace install. During OAuth install, Roomote also records the installed bot display name when Slack exposes it, so setup and automation guidance can show the actual Slack app users should mention instead of assuming @Roomote.

Automatic manager channel

After the app is installed, the first user who links their Slack account to Roomote triggers setup of a public #roomote-managers channel in that workspace. Installing the app alone does not trigger setup. Roomote creates the channel or reuses an existing public, unarchived, nonshared channel with that exact name, ensures the bot is a member, and sets it as the shared Manager Channel under Automations > Automation output. Existing Slack or Discord Manager Channel settings and explicit automation destinations are preserved. This setup does not create or enable automations. Private channels are not selected, converted, or read by automatic setup; they remain available for manual configuration with the appropriate bot access. Automatic setup requires the bot scopes channels:manage and channels:join. For an existing installation, use Update app, then Reinstall in Slack to approve these permissions. If workspace restrictions, unavailable permissions, or Slack errors prevent setup, account authentication still succeeds. Link your Slack account again to retry, or configure the Manager Channel manually.

Redirect URLs

Slack sign-in uses Slack OpenID Connect. Add the sign-in redirect URL:
If the same app handles the Slack communications integration, add the integration redirect URL too:
The current deployment configuration uses one Slack client credential pair for both sign-in and communications:

Bot scopes

Add these bot token scopes under OAuth & Permissions > Scopes > Bot Token Scopes:
After adding or changing scopes, reinstall the app from OAuth & Permissions > Install to Workspace. Slack does not apply new scopes to an existing installation until you reinstall. Native video replies require files:write. For an existing installation, reinstall the app and obtain workspace admin reapproval if required before expecting videos to appear as Slack files. Updating the manifest alone does not grant the installed bot this permission.

Video replies

Roomote can share selected task recordings as native Slack video files in the conversation. Ask for the recording from a task associated with the current session, including an earlier task in that session, and Roomote can recover its uploaded artifact and share it without recording again. Native delivery is limited to uploaded recordings from that session’s task runs, not arbitrary recordings from other sessions. Uploading a task artifact alone does not automatically post it to Slack. The recording must be no larger than 50 MiB. When conversion is needed, the converted file must also fit within 50 MiB. Larger recordings use an artifact viewer link instead of a native Slack attachment. For WebM recordings, delivery converts a copy to MP4 for Slack playback while preserving the original task artifact. If permissions, conversion, or upload prevent native delivery, Roomote shares only an artifact viewer link, without an error or unavailability explanation. Roomote only describes a video as attached when native delivery succeeds.

Events and interactivity

Turn on Event Subscriptions and set Request URL to:
Subscribe to these bot events:
Turn on Interactivity & Shortcuts and use the same request URL:
Roomote uses this endpoint for button clicks and other interactive Slack payloads.

Agent messaging experience

Roomote-created apps enable Slack’s current Agent messaging experience (features.agent_view). This keeps conversations in the app’s Messages tab, opens session responses in threads, and allows Slack to render native loading states and streamed task cards for tasks delegated by Roomote. These cards stream coding progress and settle to their final result in the same thread. For an existing app, use Update app in Settings → Communications to apply these settings. You can also configure them manually by enabling the Agents feature, selecting the Agent messaging experience, adding the assistant:write scope and the app_home_opened and app_context_changed events, and then reinstalling the app. Hard-refresh Slack afterward. Keep message.im enabled so direct messages continue reaching Roomote.

Session answers

Session responses are always on across Slack, Discord, Microsoft Teams, and Telegram: ordinary messages from your linked account go through the session orchestrator, which can delegate work into tasks. In channels, mention the app, for example @Roomote summarize this thread or @Roomote fix the failing CI job. Replies in a Roomote-owned Slack thread continue that session; replies in an existing task-only thread continue the task. Roomote can read a bounded history from the current Slack channel, discover other channels in the same workspace, and post standalone updates to channels where the Roomote app is authorized. From another session surface, such as Telegram, you can provide a Slack link or explicitly name Slack to read authorized context, then ask Roomote to send an update to an explicit workspace and destination. Roomote uses the same destination lookup and send action for your own linked Slack account, an explicitly named linked member, or an authorized Slack channel or thread. People and channel lookups require a targeted search or exact destination, return bounded pages, and can be limited to one workspace. A self destination is always resolved from your authenticated identity without enumerating the Slack directory; it is not a caller-supplied user ID. Public channels require app membership; private channels also require your linked Slack account to be a member, and direct messages to another member require workspace-scoped linked identities for both participants. Reactions remain scoped to the current inbound message. Roomote can also use MCP servers and user-scoped integrations that you are allowed to access and delegate repository work to Roomote tasks. Members can create and manage their own custom automations through a session; deployment admins can manage all custom automations, including those without a creator. Built-in automations and deployment settings remain admin-only. Roomote does not read other channels implicitly or inspect repository contents without delegating the work to a task. When the request spans every repository, Roomote can delegate it to the deployment’s all-repositories environment. Eligible human discussion in an established Roomote Slack thread keeps reaching Roomote after another participant is mentioned. When a judgment model is configured, every unmentioned reply from a linked member in a Roomote thread with more than one person is judged before it can start a turn: it routes when the model finds it is addressed to Roomote. Messages meant for a colleague stay silent; acknowledgements addressed to Roomote reach the session, which then decides whether a response is warranted. Without a judgment model, Roomote stays quiet around peer discussion unless directly addressed. Direct mentions always work. Every Roomote reply ends with a compact footer: Reply anytime, a plain running-task count when at least one task is running, links to pull requests the session is working on, and Open in Roomote, which opens the session transcript. Roomote keeps the footer on the latest reply current as delegated tasks start and finish, checking about every 30 seconds while work is running, so the thread shows whether coding is still going without another reply. Only the newest reply carries the footer; earlier replies drop it when a new reply posts. Agent replies and delegated reports can include up to two native Slack charts. Ask Roomote to visualize suitable data as a pie, bar, area, or line chart. Each chart keeps a Markdown fallback for notifications and accessibility, and the same structured data renders as a chart with an accessible table in the Roomote web transcript. No additional Slack scope is required.

Local URL changes

Keep the public URL stable. When it changes, update the Slack app’s redirect URLs, Event Subscriptions request URL, and Interactivity request URL, then restart Roomote with the matching URL.

Verify setup

  1. sign in with Slack, if Slack sign-in is enabled
  2. install the Slack app to the workspace
  3. mention the app in a channel or send it a direct message
  4. confirm Roomote answers in the session and includes a web continuation link
  5. reply in the same thread and confirm the message continues the same session; when Roomote delegates work, confirm the task card stays in that thread