Skip to content
Select themeSelect language

Discord commands

The SupaCloud Discord control bot accepts slash-prefixed message bodies in any channel or DM where the bot is present. The bot boots only when DISCORD_BOT_TOKEN is set and is entirely separate from the per-workspace Discord notify/trigger resource.

Ids: every listing shows the first 8 characters of an id, and every command that takes an id (/task, /logs, /cancel, /follow, /intervene, …) accepts that short form — a unique prefix resolves, an ambiguous one lists the candidates with a longer prefix each. Detail replies print the full id as a code span (Discord has no copy button; select it to copy).

Command Description
/help Show the list of available commands.
/status Active tasks.
/task <id> Task details.
/run <project> <agent> <prompt> Launch a task.
/tasks Open a button-driven recent-task picker (tap a task for detail, then act).
/issues [project] Open the Project → Issue → Agent → Launch wizard (button-driven).
/intervene <id> <msg> Send a message to a running task.
/approvals [tool|workflow] List pending human decision gates; the bare command lists the workflow human-gates (the default), tool lists the interactive tool/question/visual gates. Workflow gates carry inline Approve/Reject buttons (ADR 0045).
/skills [approve|reject <id>] List the open induced-skill proposals, or approve/reject one by id. Deciding is workspace-admin only (ADR 0045).
/usage Per-provider subscription-saturation windows for the active workspace (admin/owner only) (ADR 0045).
/budget The $-budget status (cap, spend, remaining) — a member read (ADR 0045).
/autonomy [0-100] Show the resolved effective autonomy (level, named stop, policy preview). Setting from chat is not yet available — use the web settings or the Management API (ADR 0045).
/approval_mode <project> [none|pr_draft|human_gate] Show or set a project’s PR-review approval mode. Setting is workspace-admin only (ADR 0045).
/schedule list|add|pause|resume|delete Manage schedules.
/link <code> Link your Discord identity to your SupaCloud account.

Run /link <code> in a DM with the bot. The link code is a short-lived bearer secret; sending it in a guild channel would expose it in shared history. The bot rejects /link calls made outside a DM and asks you to retry in a DM.

To obtain a link code, open Settings in the SupaCloud web UI, go to the Telegram section, and click Generate link token. The same one-time link token works for both the Telegram and Discord bots (POST /api/settings/telegram-link-token); there is no separate Discord token page.

Once linked, SupaCloud remembers your Discord identity against your account. The same account record backs both the Discord and Telegram control bots — you only need to link once per platform.

Two commands open interactive button flows rather than returning plain text:

  • /tasks — presents the five most recent active tasks as buttons. Tap a task to see its detail, then choose an action.
  • /issues [project] — chains a wizard: Project → Issue → Agent → Launch. Omit project to be prompted for it first. Button interactions are handled as Discord INTERACTION_CREATE events and edit the source message in place.

Launching a task from Discord — a direct /run, the /run wizard, or the /issues wizard — enters live mode automatically on the launching channel. Each task step updates a single message edited in place: the agent’s answer, a rolling list of the tools it runs, and its current thinking, all coalesced (with tool-line deduplication) so the channel stays readable. An Unfollow button sits under the confirmation so you can leave the stream in one press, and any plain (non-command) message you send while following is forwarded to the task as an intervention. The message finalises and live mode stops automatically when the task completes. Following is per-surface: a task you start from Discord streams in Discord only.

When a task finishes, a short TL;DR is pushed to the task owner’s linked Discord account. It carries a status glyph, the task title, a one-line result and a direct link to the task:

  • a task that succeeded reports what it produced — its result summary, or the agent’s last message when the summary has not been written yet;
  • a task that failed leads with the failure class — provider overloaded, usage limit reached, context window exceeded, auth / configuration error, or a plain error — followed by the error text itself, never a bare “failed”.

Both outcomes close with a narrow operational footer naming the model that ran, what it cost and the token counts — gpt-5.6-luna · $0.42 · 12.3k→4.1k tok. A value the server does not know simply drops its segment; a missing figure is never shown as $0.00.

The result line is clamped to about two sentences and passes the secret-redaction wall first, so nothing an agent printed can leak a key or token into chat. A per-account opt-out toggle in the chat-account settings turns the push off. With no linked Discord account there is nothing to push.