Skip to main content

Use Ghast from messaging platforms

Channels let you send messages to Ghast and receive replies in Telegram, Discord, Feishu, Slack, or Weixin. Complete the platform connection under Settings → Channels first; see Channel settings for credentials and platform-specific limits.

Complete an end-to-end test​

  1. Create the platform Bot/App or QR session.
  2. Enter its credentials and allowed scope in Ghast.
  3. Choose the default model and Workspace.
  4. Enable the Channel, click Save, and wait for its status to refresh. A successful save does not itself prove a successful connection.
  5. On platforms with a Ghast allowlist, send plain text from an allowed test account. Feishu and Weixin have no such client-side allowlist control, so narrow the account or app's platform-side exposure first and test from a non-sensitive conversation.
  6. Confirm that Ghast receives it and generates a reply.
  7. Return to the platform and confirm delivery.
  8. Test group mentions, threads, images, and files separately.

Do not begin in a production group. A reply visible in Ghast proves generation only; the round trip is complete only after it appears on the platform.

Platform entry points​

PlatformConnectionMain scope controlsCheck before launch
TelegramBot TokenAllowed user IDs restrict private messages, not group members; workspace bindings route chatsBotFather group/privacy settings, numeric test recipient, shared group/topic context
DiscordBot TokenServer/channel lists filter server messages, not DMs; mention-only controls replies, not collection; Workspace bindings route tasksMessage Content Intent, Bot permissions, exact channel/thread IDs, DM exposure
FeishuApp ID and App Secret; fixed WebSocket connectionDefault model and Workspace bindings; no Ghast user/group allowlist or mention switchLimit app availability; separate DM/group event permissions; publish; Running is not verified delivery
SlackBot Token and App TokenExact conversation allowlist includes DMs; mention-only for public/private channels; Workspace bindingsSocket Mode, scopes, bot events, both tokens from the same App, new conversation per top-level message
WeixinQR-authorized bot connectionDefault model and sender-conversation Workspace routing (not an allowlist)Login versus Save, fallback workspace, exact remote ID, batching, audio and session expiry

A Weixin binding only routes that sender's conversation to a Workspace; it is not an inbound access control. An unbound sender whose messages reach this configured connection can still use the fallback Workspace. Keep it narrow. This bot connection does not import all chats, contacts or groups from the signed-in account. QR login actions are immediate and separate from saved settings; read Connect Weixin before requesting a code.

Direct messages​

In a connected test conversation that fits the platform's current scope controls, send a task as you would in an ordinary conversation. For the first test, request a unique response such as “Reply only with channel-ready-47” so you can match the platform message to the current run.

A Channel task uses the default model and Workspace configured for that platform. If the configuration leaves one unspecified, the page uses an available default. Before any file task, confirm the effective Workspace; never bind a broad parent directory containing several projects to an external Bot.

Groups, channels, and threads​

Groups are easiest to trigger accidentally.

  1. Turn on mention-only when the platform offers it.
  2. Where Ghast provides an allowlist, fill the allowed server, channel, group, or user IDs. Constrain Feishu visibility on the platform. Weixin has no client allowlist, and a target-conversation binding only routes Workspace selection; it cannot prevent other conversations from reaching the default Workspace.
  3. Add the Bot only where it is needed.
  4. Test one explicit @Bot message.
  5. Test a threaded reply and confirm it did not land at the channel root.
  6. Prevent multiple Bots from triggering each other.

Turning mention-only off can send ordinary group messages to Ghast. Do so only when membership, Workspace, and data scope are controlled.

On Discord, leaving mention-only on still does not exclude unmentioned messages from collection or later context, and audio can be transcribed before that check. Its server/channel lists also do not filter DMs. Follow the Discord-specific rules, not a generic “@Bot only” assumption.

Telegram has no Ghast mention-only switch or group-ID allowlist on its settings page. Its allowed-user list does not restrict group members, and topics share group-level conversation/workspace routing. Review Telegram group behavior before connecting a group.

Slack differs again: the allowlist applies to DMs too, public/private thread replies need a fresh mention when mention-only is on, and every top-level message starts a separate Ghast conversation. See Slack's complete workflow.

Models, Tools, and Skills​

The Channel default model determines which model is preferred for tasks started from that platform. It does not bypass:

  • model enablement in 0G Compute;
  • Tool, Skill, and MCP availability;
  • command, network, or external-write permissions;
  • Computer Use system permission and app approval;
  • Workspace file boundaries.

Links, files, and instructions arriving through a Channel are external input. They cannot grant themselves permission to read unrelated local data or send it back to the platform.

Images, files, and voice​

Attachment support depends on both the platform and Channel implementation. Test each behavior before relying on it:

  • image download into the intended message;
  • accepted file type and size;
  • reply files sent to the correct conversation or thread;
  • splitting of long replies;
  • readable Markdown and code blocks;
  • voice transcription and the selected voice-reply mode.

See Voice input and replies for voice behavior.

Confirm writes and sends​

A Channel task can still modify a Workspace, call an external service, or control an app. State:

  • directories that may be read or changed;
  • whether commands may run;
  • whether content may be sent to a third party;
  • final actions that require confirmation;
  • how completion must be verified.

For example, replace “publish this release” with “inspect the build and release configuration and list what would be published; do not publish.”

Status and logs​

The settings page shows connection state for every platform. Feishu, Slack, and Weixin also expose Bot Log or Bridge Log. Diagnose in order:

  1. Channel is enabled and credentials are complete.
  2. Runtime is running.
  3. The platform delivered the event to the Bot/App.
  4. An allowlist or mention-only rule did not block the message.
  5. The model generated a reply.
  6. The platform send returned success.

Logs can contain messages, user/channel IDs, filenames, and errors. Redact them before sharing.

Disable and revoke​

Disabling a Channel in Ghast stops later bridging, but does not delete existing platform messages and may not revoke the platform credential. When retiring a connection, also rotate or revoke Tokens, uninstall the Bot/App, sign out of QR sessions, and review remaining channel permissions on the platform.