2026 OpenClaw Channel-Side Troubleshooting: Group @mention, Pairing Approvals & Slack/Discord Bot Permission Checklist (Connected but No Reply)

You already completed the fast path to a running gateway, and port 18789 checks out—yet DMs work while group threads feel dead, or the channel tile stays green with zero answers. That is often not the model layer but IM policy and bot permissions. This article complements heartbeat/thinking silence and the Matrix channel guide by focusing on requireMention, pairing / new-sender approval, and a minimal Slack/Discord scope set: a symptom matrix, a five-step command sequence, and parameters you can paste into a runbook so you label incidents as channel-side instead of reinstalling blindly.

Diagram of troubleshooting OpenClaw Slack and Discord channels for mention and pairing on a Mac cloud host

In this article

1. Three pain classes: common roots of “connected, no reply”

Logs may say “handled” while users see nothing—usually channel policy, not an instantly dead API key. Teams often swap models or reinstall packages first; the bug remains because nobody separated “did the platform hand the message to the bot?” from “did the gateway hand it to the model?”.

  1. Group @mention and requireMention: When the bot only reacts after @Bot, plain messages are dropped at the policy layer and look like an outage. DMs bypass that rule. Turn the flag off for test channels, or scope it to an allowlist, and document “must @ in public channels” for users. If behaviour differs per channel, check for per-room overrides left behind after experiments.
  2. Pairing and new-sender approval: Under stricter security, new users or threads may sit in a pending queue until you run pairing approve or equivalent—connection tests still pass, veterans still get answers, newcomers never do. Read alongside production hardening and tokens to separate policy blocks from auth failures. Upgrades or merged configs can reset pairing defaults; note “run pairing list after upgrade” in change logs.
  3. Slack/Discord permissions and intents: Missing chat:write, a bot not invited to the channel, or Discord without Message Content Intent / history rights yields inbound visibility with failed or silently dropped outbound traffic. Webhook docs and Socket Mode docs need different scopes—mixing them produces “curl works, production channel does not”. With multiple Slack workspaces, confirm the app is installed in the workspace users actually use and that event URLs target the live gateway hostname; dashboards can still show “connected” while one workspace never delivers payloads.

Use the matrix in the next section before touching model parameters or dependencies.

Operationally, split runbooks: channel-side covers probe, pairing, mention flags, platform ACLs, callback URLs; session/model-side covers models status, thinking, heartbeat, and Cron channels. A single mega-runbook trains on-call to rotate keys first every time.

If you run Matrix plus Slack, “Matrix room OK, IM group broken” almost always points to IM-specific policy or install scope—not the homeserver.

Change one variable at a time: mention, pairing, or Slack re-auth per window, with probe messages recorded before and after.

2. Symptom matrix

SymptomSuspect firstVerifyDeprioritise
Groups silent, DMs finerequireMention, room policySend a short line with @botGlobal model key
New members silent, old ones finePairing backlogpairing list for pendingPort 18789
All channels dead, doctor warnsChannel token / handshakechannels status --probeCPU pegged
Discord DMs OK, guild channels muteIntents, role, channel visibilityDeveloper portal + permission matrixModel temperature
Slack only inside threadsEvent subscriptions, install scopeRe-auth; align event URL with gatewayRandom “flakiness”
Pairing hint: After upgrades or config migration, if every new hire goes silent overnight, run openclaw pairing list (add --channel) before blaming Cron silence.

The “deprioritise” column lists frequent false leads: if port 18789 were truly unreachable, DMs would usually fail too; if only newcomers break, do not start with firewall churn. Temperature changes wording, not whether Discord delivers events—invest intents first.

3. Five-step triage: probe, pairing, doctor, logs

Work outside-in: prove transport and platform rights before model routing. Each step tests one hypothesis.

  1. Channel probe: Run openclaw channels status --probe; capture OK/fail and latency. Intermittent failures often trace to reverse-proxy timeouts, TLS chain issues, or health-check paths blocked on 443—not Discord intents.
  2. Pairing queue: For Slack/Discord/Telegram run openclaw pairing list --channel <name>; approve or reject per runbook; retest groups only when the queue is empty. Bulk invites commonly create “everyone pending by morning”.
  3. Mention policy: Search config for requireMention; disable temporarily on a sandbox channel or allowlist production rooms; compare messages with and without @. Validate with a real end-user account—admins may be exempt, producing “works for me”.
  4. Doctor: openclaw doctor fixes common drift; when paired with Docker, ensure container and host read the same config. Doctor passing does not replace the platform permission matrix.
  5. Logs: openclaw logs --follow while sending a probe message; look for policy drop, mention required, pairing pending. Prefix probes with [OC-PROBE] for easy grep.
  6. Mac cloud persistence: Confirm launchd/plist working directory matches the config you edited under SSH—otherwise manual shells see new policy while daemons still load an old openclaw.json, same class of bug as launchd environment gaps.
openclaw channels status --probe openclaw pairing list --channel slack openclaw doctor openclaw logs --follow

4. Parameters and checklists you can cite

Discord: Production commonly needs Message Content Intent; add Server Members or Presence only if you truly depend on them—least privilege. ② Slack: The bot must post and read channel history (trim scopes to your event/Socket design); /invite the bot or some events never fire.

Callbacks: Public HTTPS URLs in Slack/Discord must match the gateway; avoid mixing internal http with public hostnames; if a proxy strips path prefixes, align basePath. ④ Cache cadence: After policy or re-auth, platform caches may lag minutes—wait two probe cycles before declaring failure. ⑤ User docs: Publishing “please @ the bot in public channels” cuts false tickets more than endless config toggles; keep an internal pairing approver roster.

Audit: Log ticket IDs and operators for bulk pairing approvals, mirroring token rotation notes in hardening guidance so “who approved whom” is recoverable.

5. From rotating tokens to a stable Mac cloud agent host

Swapping bot tokens on every silence hides mention/pairing issues and destroys reproducibility. Fixing probe → pairing → doctor → logs in order beats hoarding secrets.

Debugging IM permissions on a personal laptop fights sleep, local firewalls, and lid-close Wi-Fi—fine for experiments, poor for stable event streams. A always-on, always-plugged node reproduces Slack/Discord reconnect behaviour honestly.

Windows or generic Linux VPS plus Apple-toolchain workarounds add friction. Renting a VPSMAC M4 Mac cloud host colocates the gateway with launchd automation, aligns behaviour with production, and keeps troubleshooting predictable; for a quick skeleton still start from the five-minute deploy guide, then apply this IM-side checklist.

6. FAQ

DMs work, groups never—what first?

requireMention and room policy, then a short @ message. If @ fixes it, document the rule or relax mention for internal sandboxes.

Empty pairing list but still silent?

Return to channel probe and bot ACLs; follow logs for policy drops. Also confirm you are not using a staging-workspace token while users post in production.

How is this different from heartbeat silence?

Heartbeat skews scheduled/empty-output paths; group-only issues correlated with mentions are channel-side first. If everything including DMs is dead, open the heartbeat article in parallel.

Discord intents on, still no guild messages?

Check View Channel and Read Message History for that channel; private channels may need explicit role grants. Wait a few minutes after saving in the developer portal.

Slack shows the app online but no triggers?

Verify event request URL, completed re-authorisation, and per-workspace installs. Correlate Slack delivery logs with gateway access timestamps.