Skip to main content

Documentation Index

Fetch the complete documentation index at: https://atcyrus.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Cyrus exposes a different set of tools to itself depending on which platform kicked off a session. The Allowed Tools page in the Cyrus webapp (/settings/tools) is split into three tabs — Slack, Linear, and GitHub — so you can grant Cyrus the right toolbelt for each surface.

Why per-platform tools?

A Linear issue assignment generally means Cyrus is going to do real engineering work — open PRs, run shell, edit files. A Slack @cyrus mention, on the other hand, is usually a question or a quick lookup; you probably don’t want every mention to be able to run arbitrary Bash. Splitting the allowed list by platform lets you tighten the high-frequency, transient surfaces (Slack) while leaving the engineering surfaces (Linear / GitHub) wide open.

The three tabs

Slack

These tools apply when Cyrus is @mentioned in Slack. Slack chat sessions are transient — they don’t check out a repository or open PRs — so the default list is the read-only set plus a handful of helpers needed to reply in-thread and queue follow-ups: Read, Glob, Grep, Bash(git -C * pull), WebFetch, WebSearch, SendMessage, ScheduleWakeup, Task, the full Task* lifecycle (TaskCreate / TaskUpdate / TaskGet / TaskList / TaskOutput / TaskStop), EnterPlanMode / ExitPlanMode, Monitor, Skill, ToolSearch, and the workspace MCP prefixes mcp__linear, mcp__cyrus-tools, mcp__cyrus-docs, mcp__slack. You can add or remove anything on this tab — it does not have to be a subset of the Linear list.

Linear

These tools apply to agent sessions triggered from Linear — issue assignment, mid-session prompts, agent session @ mentions, etc. Linear sessions are full engineering sessions, so the default is the full Claude Agent SDK toolset plus the workspace MCP prefixes (including mcp__slack, so Cyrus can post status updates to a Slack thread while working on an issue).

GitHub

These tools apply to GitHub- and GitLab-triggered sessions (PR / MR comments, automated fix-on-failure flows, and other webhooks that spawn an agent session). The default mirrors the Linear list except mcp__slack is omitted — GitHub sessions don’t post into Slack, that’s Slack’s surface. Each of the three lists is maintained independently in cyrus-core — adding a tool to one list does not silently add it to the others.

Per-repository overrides

Per-repository overrides live underneath the Linear and GitHub tabs (Slack is repo-agnostic, so it doesn’t have them). The single per-repo allow-list applies to both Linear and GitHub sessions on that repository — when you set an override under the Linear tab, the same override shows up under the GitHub tab with a “shared with GitHub” badge, and vice versa. Per-repo overrides are independent of the team-level Linear / GitHub defaults — they’re not bounded by them. A repo can both add tools the team default omits and remove tools the team default grants. When a repo has its own override, the runtime also pairs it with the repo’s MCP server set (repository.mcpConfigPath): the agent’s permission rules and the loaded MCP servers always travel as a unit. Repositories without an override inherit the team-level linearAllowedTools / githubAllowedTools and the team-level MCP config lists.

MCP servers

Custom integration MCP servers (added under /integrations) are gated through these same per-platform allow-lists. When you connect a custom MCP and select which of its tools should be available, the Cyrus webapp writes the chosen entries (mcp__<slug>__<tool>) into whichever platform tabs you’ve authorized the integration for. Toggling a tool on or off from /settings/tools is what enables or disables it for that surface — it is the single source of truth. The “Manage allowed tools” item in each MCP’s dropdown on /integrations links straight to /settings/tools so you can adjust the gating from one place.

Per-tool narrowing

Every entry on these tabs follows Claude Code’s permission-rule syntax, which lets you narrow a tool to specific arguments instead of granting it blanket access:
  • Bash(npm run build) — only allow npm run build, not arbitrary shell
  • Read(/src/**) — restrict reads to a glob
  • WebFetch(domain:docs.linear.app) — restrict web fetches to a domain
Click the small expand affordance on any row in the grid to set narrowing rules for that tool. The Bash section shows “N approved command(s)” when any rules are present.

Defaults

  • Slack default — the curated read-only set described above, plus the workspace MCP prefixes Cyrus needs to reply in-thread.
  • Linear default — full Claude Agent SDK toolset (Read, Edit, Write, Bash, Task, web tools, plan / worktree management, AskUserQuestion, push notifications, the full Task and Cron lifecycle, monitoring tools, team-create / team-delete, plus mcp__linear, mcp__cyrus-tools, mcp__cyrus-docs, and mcp__slack).
  • GitHub default — same shape as Linear, minus mcp__slack.
Hit Reset to Defaults on any tab to revert that platform to its baseline without touching the other two.