Scope the Archyl Bot Per Channel: Right Room, Right Projects
When we put Archyl in Slack and Teams in June, the bot answered about every project in your organization, in every channel. For a small team that is the right default. For a workspace with a payments team, a lending team and a platform team, it means someone in #payments asks "what depends on the ledger?" and gets an answer about the lending platform's ledger, in the wrong room, and nobody notices until a decision gets made on it.
Today you can narrow a channel to what it should see. An admin scopes a Slack channel or a Teams conversation to one or more teams, or to an explicit list of projects. Everything else in the organization stays invisible to that channel. Channels you have not scoped keep the org-wide default.
Scoping #payments to the Payments team
Say the Payments team owns three projects: Checkout, Billing and PaymentService. In Archyl, open Organization → Bot → Channel scope and click Scope a channel. Three steps:
- What the channel sees. Pick the Payments team. Or pick projects one by one, if the channel does not map to a team.
- Which channel. Choose Slack or Teams and type a name for the list,
#payments. Click Get the command. - Paste this in #payments. Archyl shows a command. Send it in the channel:
@Archyl scope K7Q4M2PX
The bot confirms in the channel with the scope it applied and the projects it resolved to:
✅ This channel is now scoped to team "Payments" — Billing, Checkout, PaymentService.
The channel appears in Archyl's list the moment the code is applied, with no page reload. From then on, #payments answers about those three projects and nothing else. Ask it about the lending platform and it has nothing to answer from: the project is not in its context, and the tools refuse to fetch it.
Because the scope is a team rather than a list of project IDs, it follows the team. When Payments picks up a fourth project next quarter, the channel covers it the next time someone asks. The binding is expanded at answer time, not copied when you create it.
Why a code and not a button
The bot answers with the permissions of the admin who connected it, and it cannot tell who is typing in a channel. A slash command anyone could run would let any member of the channel widen or narrow what the bot reveals. So scoping starts in Archyl: the code is minted by an organization admin, is valid for 15 minutes, and works once.
Pasting it in the channel is what tells Archyl which channel you meant, because the bot cannot read channel names either. The name you typed in step 2 is a label for the list. The binding itself is to whichever channel you paste the command in.
Enforced at the tool layer, not in the prompt
A scoped channel does get a narrower system prompt naming the projects it may discuss. That is a steer, and a steer is not a boundary. The boundary sits lower.
Every call the bot makes to Archyl's MCP server carries the channel's project allow-list, and the server applies it to each call. A tool asked for an element by ID looks up which project that element lives in and refuses if it is outside the scope. Listing tools filter their results the same way. In direct mode, where the bot answers from a context bundle instead of calling tools, the same allow-list narrows the bundle. Asking for another project's container by its ID does not work, because the refusal happens before any data is read.
Two consequences worth knowing:
- Organization-level ADRs, documentation and API contracts stay visible in a scoped channel. They belong to the organization, not to a project, so the project filter does not apply to them.
- The scope fails closed. A channel bound to a team that owns no project answers nothing and says so, rather than quietly falling back to the whole organization.
Widening it again
Click Clear next to the channel in Archyl's list. The channel returns to the org-wide default on the next question.
Availability
The Slack and Teams bot is part of the Business, Scale and Custom plans, and channel scoping comes with it. The full walkthrough is in the docs under Scoping a channel to a team or projects.
If your bot already lives in a shared workspace, the first channel to scope is the one where the wrong answer would cost the most. For most teams that is the one with "payments" in the name.