Skip to content

Slack

Slack is the Control Channel for Tarsk: mention the bot in a bound Slack channel, continue in the Slack thread, and get the assistant’s final reply back in Slack. Full tool output, diffs, and streaming stay in the Tarsk UI. Chat history in Tarsk shows those prompts as normal user turns, labeled with who sent them.

The channel only works while Tarsk is running (desktop app, npx tarsk, or npx tarsk --server). There is no always-on companion process and no Tarsk-hosted shared Slack app.

  • Tarsk running with at least one project
  • A Slack workspace where you can create and install apps
  • Permission to install a custom Slack app (workspace admin approval may be required)

Step 1: Create the Slack app from Tarsk’s manifest

Section titled “Step 1: Create the Slack app from Tarsk’s manifest”
  1. In Tarsk, open Settings → Slack and click Copy app manifest.
  2. Open api.slack.com/appsCreate New AppFrom a manifest.
  3. Pick your workspace, paste the JSON, and create the app.
  4. Click Install to Workspace and approve the requested scopes.
  5. Under OAuth & Permissions, copy the Bot User OAuth Token (xoxb-…).
  6. Under Basic Information → App-Level Tokens, click Generate Token and Scopes, add the connections:write scope, and copy the token (xapp-…).
  7. Confirm Socket Mode is enabled (the manifest turns it on).

Use a separate Slack app (and tokens) for each Tarsk instance. Do not reuse one bot across machines.

AreaValue
Socket ModeEnabled (outbound WebSocket; no public URL required)
Bot eventsapp_mention, message.channels, message.groups
Bot scopesMentions, channel history/read, chat write, files read, reactions write, users read
  1. Open Settings → Slack.
  2. Paste the Bot User OAuth Token and App-Level Token.
  3. Click Save tokens.
  4. Confirm the page shows the bot username, workspace, and bridge as running.

If the bridge shows stopped, save the tokens again and check that Tarsk is still open. Use Settings → Logs to diagnose Socket Mode errors.

  1. In Slack, invite the bot to the channel (/invite @YourBotName).
  2. In Tarsk Settings → Slack, choose the channel and a Tarsk project.
  3. Click Bind channel.

Each channel maps to at most one project. Multiple channels may bind to the same project. Unbound channels are ignored. DMs with the bot are not supported.

Re-open Settings → Slack after inviting the bot if the channel picker was empty — Tarsk lists channels the bot can see once the bridge is connected.

In a bound channel, create the channel’s working clone first:

@Tarsk branch Summarize the last commit and suggest a test to add.

Or create the clone only with bare @Tarsk branch, then mention the bot with a prompt afterward.

Tarsk:

  1. Starts (or reuses) the channel’s default Tarsk branch, opens a new Tarsk chat, and replies in a Slack thread under your message
  2. On a new clone, posts Creating a new branch and repo clone… then Branch {name} · path {folder}
  3. Posts a short Working… note (with an Open in Tarsk link when possible)
  4. Replies in the Slack thread with the assistant’s final text

Continue the conversation by replying in the same Slack thread — no mention required. Later top-level @Tarsk mentions start a new Slack thread and a new Tarsk chat on the same channel-default clone (they do not create a new branch). Ordinary mentions do not create clones; if the channel has no default yet, Tarsk asks you to run @Tarsk branch first.

For an additional isolated clone (separate Slack thread and repo copy):

@Tarsk branch Try a different approach to the auth refactor

Your Slack messages appear in Tarsk chat as user turns labeled with the Slack display name. Images and common text/file attachments are included when Slack provides download URLs.

In a Tarsk Slack thread, reply with exactly one of these — or @ the bot with the same word:

Reply / mentionPurpose
helpHelp text
statusBound project and bridge status
stopStop the busy turn in this thread
modelsList enabled models and switch this thread’s model
tasksList project tasks; use buttons to implement, delete, or apply a skill
skillsPick a skill to prompt with
branchCreate a new repo clone and Slack thread (required once per channel before other prompts)

You can also @ the bot from the channel composer (for example @Tarsk status before starting a thread).

If the agent needs shell/web approval or an open-ended question, Slack posts a short notice with an Open in Tarsk link. Resolve those in the Tarsk UI — Slack does not show Allow/Deny buttons in v1.

If Tarsk is already running a turn on that Slack↔Tarsk thread, new prompts are rejected until the turn finishes or you reply stop in that Slack thread. Other Slack threads in the same channel can still run in parallel.

SymptomWhat to check
Bridge stopped / not configuredBoth tokens saved? Tarsk still running? Re-save tokens and check Settings → Logs.
Bot ignores the channelChannel bound in Settings? Bot invited (/invite)?
No 👀 reaction on promptsUpdate the Slack app with the latest Tarsk manifest (adds reactions:write), then reinstall the app to the workspace so the bot token picks up the new scope.
“Still working…”Wait, or reply stop inside that Slack thread.
Empty channel pickerBridge running and bot invited to channels, then refresh Settings → Slack.
DM with no useful replyDMs are not supported; use a bound channel.
Permission / ask-user stuckOpen the Tarsk UI link from Slack and answer there.
  • Keep Bot and App-Level tokens private. Clearing tokens in Settings stops the bridge.
  • Anyone in a bound Slack channel can prompt Tarsk against that project’s workspace and tools.
  • Pairing is not used; Slack channel membership is the access control.