---
title: Slack, GitHub and Discord
description: Connect the apps your team talks in. Choose what Lia may read and change, approve it on the app's side, and change or revoke that access later.
sidebar:
  label: Slack, GitHub and Discord
  icon: message-circle
---

These three are the apps people already have open all day. Slack and Discord are where Lia posts and answers; GitHub is where the work the handoff refers to actually sits. All three are connected from the same list, and all three end with an approval on the app's own side.

## Slack and Discord

Press **Connect** on the row and the first thing you see is a permission picker. This is about your Ali workspace, not about the channel: it decides what Lia may read and change here when she is working from there.

![The Connect Slack dialog, with the full access switch and the six resources](/images/integrations/permissions.webp)

**Full access** flips everything to Write at once. Under it, each of the six resources takes **None**, **Read** or **Write** on its own. The defaults are Read on everything, which is a reasonable place to start: Lia can answer from your workspace, and she cannot change it.

1. **Choose the access**

    Leave it on Read to start, or raise the rows where Lia has a job to do. Tasks, Write is the usual one, because that is what lets her open a task from a thread.

2. **Press Connect**

    Ali hands you over to Slack or Discord. You pick the workspace or the server, and approve the app there.

3. **Come back**

    You land on Integrations again with a toast confirming it. The row now reads **Connected**.

The levels are the same ones an API token or an agent uses, so if you have already read [Permissions](/mcp/permissions), there is nothing new here. Dashboard stays read only whatever you set, since there is nothing to write.

## GitHub

GitHub has no picker. Press **Connect**, approve the installation on GitHub, and you are done: the row turns into a **Connected** badge with **Disconnect** next to it. Where GitHub can act is decided by the repositories you grant it during that installation, on GitHub's side.

## Changing access later

Open the **Connected** button on a Slack or Discord row and you get the same picker, this time under the app's name.

![The Slack access dialog, with per-resource levels and the disconnect button](/images/integrations/manage.webp)

Move any row and press **Save changes**. The change applies to the existing connection — you are not sent back through the approval, and nothing is reconnected.

**Disconnect** removes the connection right there. It takes effect immediately: Lia stops reading and posting, and Ali forgets the token. Nothing that was already posted in Slack or Discord is deleted, and nothing that already came into Ali is rolled back.

## Channels for agents

A connected Slack or Discord is what makes those channels available to agents. In the agent form, **Where it reports** lists the channels of a connected integration, and nothing else.

That has one consequence worth knowing: disconnecting an integration that an agent reports into breaks the delivery, not the run. The agent still runs and the report is still written, but posting it fails, and the run says so. If a run reports a delivery failure and nobody touched the channel, check this screen first.

**[Create an agent](/agents/create)**

Pick the trigger, write the instruction, and send the report to a connected channel.

**[Runs](/agents/runs)**

Where a delivery failure shows up, and how to read it.

## When something fails

- **The toast says it could not connect.** The approval was refused or cancelled on the app's side. The row stays as it was, so press Connect and go through it again.
- **An agent's channel field says "Connect it in Integrations".** The integration is not connected at all. This screen is where that starts.
- **It says "Reconnect it in Integrations".** The connection is still listed, but the app no longer accepts it, usually because access was revoked on the other side. Disconnect it here and connect it again.
- **It says "No channels found".** The connection works, and the app reports no channel Ali can post to. Check on the app's side that the bot is in the channel you want.
- **Access looks wider than you remember.** Open the row, read the six levels, and lower what you do not need. Saving takes effect on the next thing Lia does.

## Where to go next

**[Meeting notes](/integrations/meetings)**

Granola and Fireflies, connected with an API key instead of a sign-in.

**[Permissions](/mcp/permissions)**

The six resources and the three levels, in detail.
