#OpenClaw not communicating on Slack
1 messages Β· Page 1 of 1 (latest)
That error is actually a good clue.
It usually means Slack is reaching OpenClaw, but the reply run is failing because the active model/tool tried to use provider google and the gateway has no Google auth configured.
First, what does this print?
openclaw --version
Then on the gateway host, please paste these:
openclaw status
openclaw models status
What Iβd expect:
- if your default model is
google/*, you need Gemini auth viaGEMINI_API_KEYorGOOGLE_API_KEY - or switch to a provider you already configured
Fastest fix if you do want Gemini:
openclaw onboard --auth-choice gemini-api-key
openclaw gateway restart
Important nuance: google and google-gemini-cli are different providers. If you only logged into Gemini CLI OAuth, that does not satisfy google/*.
If auth looks fine but Slack is still silent, run:
openclaw channels status --probe
openclaw logs --follow
Then send one Slack message and watch the log.
Docs:
- https://docs.openclaw.ai/help/faq
- https://docs.openclaw.ai/providers/google
- https://docs.openclaw.ai/channels/slack#troubleshooting
Paste the outputs here, and Iβll help narrow it down.
OpenClaw 2026.4.14 (323493f)
2026.4.14 is recent enough, so I would not blame the version.
Next check this:
openclaw models status
openclaw channels status --probe
What Iβm looking for:
- if
models statusshows missing auth forgoogle, that is the actual blocker - if Slack probe looks healthy, then Slack is fine and the bot is just failing at model runtime
If google is missing, fix it by either:
- configuring Gemini auth (
GEMINI_API_KEYorGOOGLE_API_KEY), or
- switching your default model away from
google/*
Then restart:
openclaw gateway restart
If you want the quickest path, paste openclaw models status here first. That should tell us a lot.
When I checked status, this is what I got:
kevinward@Kevins-iMac ~ % openclaw models status
openclaw channels status --probe
π¦ OpenClaw 2026.4.14 (323493f) β I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : anthropic/claude-sonnet-4-5
Fallbacks (1) : google/gemini-2.0-flash
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (0): all
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- anthropic effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | anthropic:default=sk-ant-a...V6OuswAA | models.json=sk-ant-a...V6OuswAA | source=models.json: ~/.openclaw/agents/main/agent/models.json
- google effective=models.json:AQ.Ab8RN...l1G06z8w | models.json=AQ.Ab8RN...l1G06z8w | source=models.json: ~/.openclaw/agents/main/agent/models.json
OAuth/token status
- none
π¦ OpenClaw 2026.4.14 (323493f) β Type the command with confidenceβnature will provide the stack trace if needed.
β
β
Gateway not reachable: Error: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /Users/kevinward/.openclaw/openclaw.json
Bind: loopback
Gateway not reachable; showing config-only status.
Config: /Users/kevinward/.openclaw/openclaw.json
Mode: local
Nice, this helps a lot.
The big clue is this part:
Gateway not reachable ... showing config-only status
So right now Iβm more worried about the gateway being down than the Google auth.
Also, your models status says Google auth does exist on disk:
- google effective=models.json:...
So the likely situation is:
- your config has Google auth, but
- the running gateway is down, crashed, or never reloaded that auth
Iβd do this next, in order:
openclaw gateway status
openclaw gateway restart
openclaw logs --follow
Then, while logs --follow is running, send one Slack message and see what the log says.
If gateway restart fails, also run:
openclaw doctor
and paste that output too.
If the gateway comes back up but you still get the Google error, then Iβd suspect one of these:
- Slack is routed to a different agent than
main - the gateway is using stale auth/runtime state
- the Google fallback is being resolved differently at runtime than the CLI status suggests
Docs:
Paste openclaw gateway status and the first relevant lines from openclaw logs --follow, and we should be very close.
Run "openclaw doctor --fix" to apply changes.
β
β Doctor complete.
kevinward@Kevins-iMac ~ % openclaw gateway restart
π¦ OpenClaw 2026.4.14 (323493f) β I'll do the boring stuff while you dramatically stare at the logs like it's cinema.
Restarted LaunchAgent: gui/501/ai.openclaw.gateway
Timed out after 60s waiting for gateway port 18789 to become healthy.
Service runtime: status=stopped, state=active
Gateway port 18789 status: free.
Gateway restart timed out after 60s waiting for health checks.
Tip: openclaw gateway status --deep
Tip: openclaw doctor
kevinward@Kevins-iMac ~ %
Yep, this looks like a gateway startup crash, not a Slack-only issue.
The key bits are:
status=stopped, state=active- port
18789stays free - restart times out waiting for health
That usually means launchd tries to start it, then the gateway dies immediately.
Next, please run these:
openclaw gateway status --deep
openclaw logs --follow
If logs --follow does not show enough, grab the startup logs directly:
tail -n 80 ~/.openclaw/logs/gateway.log
tail -n 80 ~/.openclaw/logs/gateway.err.log
Please paste the output from:
openclaw gateway status --deep- the last part of
~/.openclaw/logs/gateway.err.log
That should show the actual crash reason.
Small macOS-specific note: if the log mentions an old Node/nvm path or a missing JS file under ~/.nvm/..., thatβs a known LaunchAgent problem, and the fix is different. So the log matters a lot here.
kevinward@Kevins-iMac ~ % penclaw gateway status --deep
zsh: command not found: penclaw
kevinward@Kevins-iMac ~ % openclaw logs --follow
π¦ OpenClaw 2026.4.14 (323493f) β I autocomplete your thoughtsβjust slower and with more API calls.
Gateway not reachable. Is it running and accessible?
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /Users/kevinward/.openclaw/openclaw.json
Bind: loopback
Hint: run openclaw doctor.
kevinward@Kevins-iMac ~ %
No worries, that first one was just a typo.
Since openclaw logs --follow needs the gateway to be reachable, letβs go straight to the file logs.
Please run these exactly:
openclaw gateway status --deep
ls -lah ~/.openclaw/logs
tail -n 80 ~/.openclaw/logs/gateway.log
tail -n 80 ~/.openclaw/logs/gateway.err.log
If either tail says the file does not exist, paste that too.
At this point Iβm trying to catch the startup crash, and the direct log files are the best source.
On the four lines you ask me to run, do I paste and run them all four at once?
Yep, you can paste all four at once.
Theyβre all read-only checks, so thatβs totally fine.
openclaw gateway status --deep
ls -lah ~/.openclaw/logs
tail -n 80 ~/.openclaw/logs/gateway.log
tail -n 80 ~/.openclaw/logs/gateway.err.log
If one says βfile not foundβ, thatβs useful too, paste that result.
I'll paste this in parts because of length.
π¦ OpenClaw 2026.4.14 (323493f) β Like having a senior engineer on call, except I don't bill hourly or sigh audibly.
β
β
Service: LaunchAgent (loaded)
File logs: /tmp/openclaw/openclaw-2026-04-17.log
Command: /opt/homebrew/opt/node@22/bin/node /opt/homebrew/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/Library/LaunchAgents/ai.openclaw.gateway.plist
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 98593, state active)
Warm-up: launch agents can take a few seconds. Try again shortly.
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006):
Gateway port 18789 is not listening (service appears running).
Last gateway error: 2026-04-17T18:03:34.734-06:00 Gateway start blocked: existing config is missing gateway.mode. Treat this as suspicious or clobbered config. Re-run openclaw onboard --mode local or openclaw setup, set gateway.mode=local manually, or pass --allow-unconfigured.
Logs: ~/.openclaw/logs/gateway.log
Errors: ~/.openclaw/logs/gateway.err.log
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
total 14408
Perfect, thatβs fine.
Please start with these two first, since theyβre the most useful:
openclaw gateway status --deeptail -n 80 ~/.openclaw/logs/gateway.err.log
Then we can look at the others if needed.
We found it. The real blocker is here:
Gateway start blocked: existing config is missing gateway.mode
So the gateway is failing before Slack even gets a chance.
Please run this exact sequence:
openclaw config set gateway.mode local
openclaw config get gateway.mode
openclaw gateway restart
openclaw status
What we want to see:
config getprintslocalgateway restartcomes up cleanlystatusshows the gateway reachable
If that works, then test Slack again.
If Slack still throws the Google error after the gateway is back, paste the new output and weβll do the second fix. But first we need the gateway to start at all.
Docs match this exactly: https://docs.openclaw.ai/gateway/troubleshooting
No response at all on slack.
Got it. I need the post-fix command output, because βstill no responseβ could now mean either:
- the gateway still is not up, or
- Slack is up but blocked by channel policy / mention rules
Please paste these now:
openclaw config get gateway.mode
openclaw status
openclaw channels status --probe
If youβre testing in a Slack channel (not DM), also make sure you @mention the bot once for the test.
π¦ OpenClaw 2026.4.14 (323493f) β I autocomplete your thoughtsβjust slower and with more API calls.
local
π¦ OpenClaw 2026.4.14 (323493f) β I don't judge, but your missing API keys are absolutely judging you.
β
β
β
β
OpenClaw status
Nice, gateway.mode is fixed now. That part is good.
I still need the rest of the output though. Right now I only have the start of openclaw status.
Please run these one at a time and paste each result separately:
openclaw status
then
openclaw channels status --probe
If openclaw status hangs for more than about 30 seconds, stop it with Ctrl+C and run:
openclaw gateway status --deep
Weβre close, I just need the full live status to tell whether this is now:
- still a Google auth issue, or
- a Slack routing / mention / allowlist issue.
OpenClaw status
Overview
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Item β Value β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β OS β macos 26.4.1 (arm64) Β· node 22.22.2 β
β Dashboard β http://127.0.0.1:18789/ β
β Tailscale β off β
β Channel β stable (default) β
β Update β available Β· pnpm Β· npm update 2026.4.15 β
β Gateway β local Β· ws://127.0.0.1:18789 (local loopback) Β· reachable 67ms Β· auth token Β· Kevins-iMac. β
β β local (10.0.0.182) app 2026.4.14 macos 26.4.1 β
β Gateway self β Kevins-iMac.local (10.0.0.182) app 2026.4.14 macos 26.4.1 β
β Gateway service β LaunchAgent installed Β· loaded Β· running (pid 99774, state active) β
β Node service β LaunchAgent not installed β
β Agents β 1 Β· no bootstrap files Β· sessions 1 Β· default main active 4h ago β
β Memory β 0 files Β· 0 chunks Β· dirty Β· sources memory Β· plugin memory-core Β· vector ready Β· fts ready β
β β Β· cache on (0)
Plugin compatibility β none β
β Probes β skipped (use --deep) β
β Events β none β
β Tasks β none β
β Heartbeat β 30m (main) β
β Sessions β 1 active Β· default claude-sonnet-4-5 (200k ctx) Β· ~/.openclaw/agents/main/sessions/sessions. β
β β json
Good, this is progress. The gateway is up and reachable now.
So the startup problem is fixed. The remaining issue is now either:
- Slack transport / channel policy, or
- the original Google runtime/auth issue during message handling
Next, please paste this:
openclaw channels status --probe
That should tell us whether Slack itself is connected and healthy. If youβre testing in a Slack channel, keep using an @mention for the test message.
Security audit
Summary: 0 critical Β· 1 warn Β· 1 info
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client cβ¦
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
Full report: openclaw security audit
Deep probe: openclaw security audit --deep
Thanks, that confirms the gateway/session side looks healthy now.
That last paste is still from openclaw status, not the Slack probe.
I need this one next:
openclaw channels status --probe
That is the command that should tell us whether the Slack connector itself is connected and allowed to receive/respond.
Youβre still pasting more of openclaw status, thatβs why we havenβt hit the Slack part yet π
Wait until youβre back at the normal shell prompt, then run a new command:
openclaw channels status --probe
The output I want should mention channel accounts, and ideally Slack specifically. If itβs long, just paste the Slack section.
π¦ OpenClaw 2026.4.14 (323493f) β I've read more man pages than any human shouldβso you don't have to.
β
β
Gateway reachable.
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
If that was the entire output, thatβs very interesting.
It suggests OpenClaw sees the gateway, but may not be seeing any configured channel accounts to probe.
Please run this next:
openclaw channels list
If Slack is configured, it should show up there. If it does not, that would explain the silence on Slack. If it does show up, paste the Slack part.
π¦ OpenClaw 2026.4.14 (323493f) β Alexa, but with taste.
Chat channels:
Auth providers (OAuth + API keys):
- anthropic:default (api_key)
β
β
Usage:
Claude: HTTP 401: Invalid bearer token
Docs: gateway/configuration
Aha, thatβs the smoking gun.
openclaw channels list is showing:
Chat channels:
with nothing under it.
That means OpenClaw currently has no chat channels configured, so it cannot reply on Slack at all.
My guess is the config got partially clobbered, which also matches the earlier gateway.mode problem.
Please run this next:
openclaw config get channels.slack
If that comes back empty / null / missing, then Slack needs to be added again, for example:
openclaw channels add --channel slack
If you want, paste the channels.slack output first and Iβll tell you whether itβs recoverable or if you should just re-add Slack.
Slack setup docs: https://docs.openclaw.ai/channels/slack
Config path not found: channels.slack
Yep, that confirms it. Your Slack config is gone.
That is why OpenClaw is silent on Slack right now.
The next step is to add Slack back:
openclaw channels add --channel slack
Then verify it:
openclaw channels list
openclaw channels status --probe
After that, send one Slack test message, preferably with an @mention if itβs in a channel.
If Slack starts working again but you get the Google API key error afterward, paste that and weβll fix the model/auth side next.
Slack setup docs: https://docs.openclaw.ai/channels/slack
If you want, I can also help you choose the right Slack setup path:
- Socket Mode:
appToken+botToken - HTTP mode:
botToken+signingSecret
Slack requires --bot-token and --app-token (or --use-env).
Yep, that means the add command is expecting a Socket Mode Slack setup.
Use one of these:
openclaw channels add --channel slack --bot-token 'xoxb-...' --app-token 'xapp-...'
or, if those are already in env vars:
openclaw channels add --channel slack --use-env
For env-based setup, the vars are:
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
Important on macOS: because your gateway runs as a LaunchAgent, shell-only env vars may not be visible to it. The safest place is ~/.openclaw/.env.
After adding Slack back, run:
openclaw gateway restart
openclaw channels list
openclaw channels status --probe
If you want, I can help with the exact .env contents next.
Added Slack and ran restart and channels list and status probe. Result:
π¦ OpenClaw 2026.4.14 (323493f) β I'm not AI-powered, I'm AI-possessed. Big difference.
Restarted LaunchAgent: gui/501/ai.openclaw.gateway
π¦ OpenClaw 2026.4.14 (323493f) β Self-hosted, self-updating, self-aware (just kidding... unless?).
Chat channels:
- Slack default: configured, bot=config, app=config, enabled
Auth providers (OAuth + API keys):
- anthropic:default (api_key)
β
β
Usage:
Claude: HTTP 401: Invalid bearer token
Docs: gateway/configuration
π¦ OpenClaw 2026.4.14 (323493f) β Your terminal just grew clawsβtype something and let the bot pinch the busywork.
β
β
Gateway not reachable: Error: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /Users/kevinward/.openclaw/openclaw.json
Bind: loopback
Gateway not reachable; showing config-only status.
Config: /Users/kevinward/.openclaw/openclaw.json
Mode: local
- Slack default: enabled, configured, bot:config, app:config
Okay, I think weβve untangled the main issue.
Slack is configured again.
But your model auth looks broken now:
Claude: HTTP 401: Invalid bearer token- earlier, your fallback was
google/gemini-2.0-flash
So the likely sequence is:
- OpenClaw tries your primary Anthropic model, that fails with 401
- it falls back to Google, that fails because Google auth is missing
- result: no useful reply, or the earlier Google error
So the next fix is model/auth, not Slack.
Easiest path
Run the interactive model config:
openclaw configure --section model
In there, do one of these:
- fix your Anthropic API key, and keep Anthropic as primary
- or switch primary/fallbacks to providers you actually have working auth for
- or add Google auth too, if you want to keep the Google fallback
If you want Anthropic + Google specifically, the docs-backed auth routes are:
After fixing model auth, restart and test again:
openclaw gateway restart
openclaw models status
If you want, paste the fresh openclaw models status after that, and Iβll sanity-check it before you test Slack again.
I added the Anthropic API key as primary. How do I add Google gemini as fallback at this point?
Two parts:
- make sure Google auth exists
- add the fallback model
1) Google auth
Use a Gemini API key (GEMINI_API_KEY or GOOGLE_API_KEY).
If youβre using env vars on macOS LaunchAgent, put it in:
~/.openclaw/.env
2) Add the fallback
First see what Google models OpenClaw sees:
openclaw models list --provider google
Then add the one you want as fallback:
openclaw models fallbacks add <provider/model>
Example shape:
openclaw models fallbacks add google/...
Then verify and restart:
openclaw models status
openclaw gateway restart
Docs:
If you paste the output of openclaw models list --provider google, I can tell you which exact ref to use.
I don't know what this is or if I'm using it:
env vars on macOS LaunchAgent
Totally fair, the wording is a bit cursed π
Yes, you are using a macOS LaunchAgent. We know that because your earlier status showed:
Gateway service: LaunchAgent installed Β· loaded Β· running
What that means in plain English:
- OpenClaw runs in the background
- it does not always see variables you set only in your Terminal shell
- so for API keys, the safest choices are:
- use OpenClawβs setup/onboarding commands, or
- put the key in
~/.openclaw/.env
Easiest Google setup
Do this:
openclaw onboard --auth-choice gemini-api-key
Then add the fallback:
openclaw models list --provider google
openclaw models fallbacks add <provider/model>
openclaw gateway restart
If you want, I can keep it dead simple and walk you command-by-command from here.
I was configuring it, and we nearly done, then when it asked for the Slack channel allowlist, I gave it the channel name instead of the Channel ID, so it exited the setup. Do I have to start over?
No, you should not need to start completely over.
Just rerun the channel part:
openclaw configure --section channels
For Slack, the allowlist should use the channel ID (C...), not the human name.
If you want OpenClaw to resolve the name for you first, try:
openclaw channels resolve --channel slack "#your-channel-name"
Then paste the returned C... id into the allowlist prompt.
So, short version: not full restart, just rerun the channels section.
I think configure is complete. How do I test it?
Nice. Fastest test:
openclaw gateway restart
openclaw models status
openclaw channels status --probe
Then test in Slack:
- DM: send a simple
hi - channel: send
@OpenClaw hi(use an @mention)
What you want to see:
models statusshows your primary + fallback with no missing authchannels status --probeshows Slack configured/healthy
- Slack replies to your test message
If it still does not reply, paste:
openclaw models statusopenclaw channels status --probe
and Iβll check the last bits.
Response on Terminal:
Gateway not reachable: Error: gateway closed (1006 abnormal closure (no close frame)): no close reason
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /Users/kevinward/.openclaw/openclaw.json
Bind: loopback
Gateway not reachable; showing config-only status.
Config: /Users/kevinward/.openclaw/openclaw.json
Mode: local
- Slack default: enabled, configured, bot:config, app:config
That means the gateway is crashing again, not that Slack is misconfigured.
So, good news, Slack config exists now.
Bad news, the service still is not staying up.
Please run these and paste the output:
openclaw gateway status --deep
tail -n 80 ~/.openclaw/logs/gateway.err.log
tail -n 80 ~/.openclaw/logs/gateway.log
Right now the important question is: what is the gateway dying on during startup?
The log should show it.
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 8037, state active)
Warm-up: launch agents can take a few seconds. Try again shortly.
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006):
Gateway port 18789 is not listening (service appears running).
Last gateway error: 2026-04-17T18:07:37.074-06:00 Gateway start blocked: existing config is missing gateway.mode. Treat this as suspicious or clobbered config. Re-run openclaw onboard --mode local or openclaw setup, set gateway.mode=local manually, or pass --allow-unconfigured.
Logs: ~/.openclaw/logs/gateway.log
Errors: ~/.openclaw/logs/gateway.err.log
Troubles: run openclaw status
Thanks, that helps, but that last gateway error looks stale from the earlier gateway.mode problem.
We already fixed gateway.mode, so I really need the actual log file output now, not just status --deep.
Please paste these two specifically:
tail -n 80 ~/.openclaw/logs/gateway.err.log
tail -n 80 ~/.openclaw/logs/gateway.log
If one of them is empty, say that too.
Right now Iβm trying to catch the current startup failure, and the status --deep screen is still surfacing the old cached error.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:02.783-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
2026-04-17T18:54:04.882-06:00 (node:7504) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:13.918-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
2026-04-17T18:54:16.106-06:00 (node:7558) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:22.272-06:00 [bonjour] watchdog detected non-announced service; attempting re-advertise (gateway fqdn=Kevinβs iMac (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing)
2026-04-17T18:54:26.417-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
2026-04-17T18:54:28.610-06:00 (node:7603) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:37.688-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
2026-04-17T18:54:39.826-06:00 (node:7659) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:48.969-06:00 [ERROR] socket-mode:SocketModeClient:0 Failed to retrieve a new WSS URL (error: Error: An API error occurred: invalid_auth)
2026-04-17T18:54:48.990-06:00 [slack] socket mode failed to start due to non-recoverable auth error β skipping channel (An API error occurred: invalid_auth)
2026-04-17T18:54:48.991-06:00 [slack] [default] channel exited: An API error occurred: invalid_auth
2026-04-17T18:54:49.777-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
We found the current blocker.
This is the important line:
Error: An API error occurred: invalid_auth
So the gateway is dying because the Slack credentials are invalid.
This is not the Google problem anymore.
Most likely:
- the bot token is wrong / expired / from a different app or workspace
- or the app token and bot token do not belong to the same Slack app
Fix
Re-enter the Slack credentials with the correct tokens.
If youβre using Socket Mode, you need:
xoxb-...= bot tokenxapp-...= app token
You can fix it by rerunning the channel setup:
openclaw configure --section channels
or by re-adding Slack with the right tokens.
After that:
openclaw gateway restart
openclaw channels status --probe
Then test in Slack again with an @mention in the channel.
The punycode warning is harmless here, ignore it.
Slack docs: https://docs.openclaw.ai/channels/slack#troubleshooting
2026-04-17T18:54:52.431-06:00 (node:7713) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:54:58.648-06:00 [bonjour] watchdog detected non-announced service; attempting re-advertise (gateway fqdn=Kevinβs iMac (OpenClaw)._openclaw-gw._tcp.local. host=openclaw.local. port=18789 state=probing)
2026-04-17T18:55:02.538-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
2026-04-17T18:55:04.638-06:00 (node:7756) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
(Use node --trace-deprecation ... to show where the warning was created)
2026-04-17T18:55:13.461-06:00 [openclaw] Unhandled promise rejection: Error: An API error occurred: invalid_auth
at platformErrorFromResult (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/errors.ts:119:5)
at WebClient.apiCall (/opt/homebrew/lib/node_modules/openclaw/node_modules/@slack/web-api/src/WebClient.ts:405:36)
at processTicksAndRejections (node:internal/process/task_queues:103:5)
Yep, this confirms it.
The Slack failure is definitely Socket Mode auth, not Google, and not the punycode warning.
This line is the giveaway:
Failed to retrieve a new WSS URL ... invalid_auth
For Socket Mode, check these exactly in your Slack app:
- App token is an
xapp-...token - that app token has
connections:write - Bot token is an
xoxb-...token - both tokens belong to the same Slack app / same workspace
- if you changed scopes or regenerated tokens, reinstall the app to the workspace
Best next step
Re-run the Slack channel config with the fresh tokens:
openclaw configure --section channels
or re-add explicitly with the correct pair.
Then:
openclaw gateway restart
openclaw channels status --probe
If you want, I can give you a super short βgo here in Slack UI, copy these two exact fieldsβ checklist next.
Youβre still seeing the same Slack auth failure. Nothing new in that log beyond invalid_auth.
So the next move is not more log reading, itβs replacing the Slack tokens with the correct ones.
Exact Slack UI checklist
Go to your Slack app at https://api.slack.com/apps
1) Get the app token
- Open Basic Information
- Find App-Level Tokens
- Create/copy an
xapp-...token - It must include
connections:write
2) Get the bot token
- Open OAuth & Permissions
- Copy the Bot User OAuth Token
- It should be an
xoxb-...token
3) Make sure Socket Mode is enabled
- Open Socket Mode
- Turn it on
4) Reinstall the app
- In OAuth & Permissions, click Install to Workspace or reinstall if prompted
Then put those into OpenClaw again
Easiest path:
openclaw configure --section channels
or re-add Slack with the fresh xapp-... + xoxb-... pair.
Then:
openclaw gateway restart
openclaw channels status --probe
So, short version: the tokens are wrong or mismatched. Until those are corrected, Slack will keep failing with invalid_auth.
Okay. Just ran: openclaw configure --section channels.
Can you walk me step by step through the process on Terminal?
Yep. Go screen by screen like this:
In openclaw configure --section channels
-
When it asks which channel to configure
- choose Slack
-
If it asks for connection mode
- choose Socket Mode
-
When it asks for the bot token
- paste the
xoxb-...token - this is the Bot User OAuth Token
- paste the
-
When it asks for the app token
- paste the
xapp-...token - this is the App-Level Token
- paste the
- it must have
connections:write
-
If it asks about channel/group policy
- choose allowlist if you only want it in specific channels
-
When it asks for the Slack channel allowlist
- paste the channel ID like
C1234567890 - do not use the channel name like
#general
- paste the channel ID like
-
If it asks whether replies should require a mention
- choose yes (safer, and good for testing)
-
Save / continue / finish when it offers that
After configure exits
Run:
openclaw gateway restart
openclaw channels status --probe
Then test in Slack with:
@OpenClaw hi
If a prompt appears and youβre not sure what to choose, paste the exact prompt text here and Iβll translate it live.
Finally worked! How can I tell if it's using Anthropic API or Google gemini?
Nice, glad we got it working π
Fastest way to check:
openclaw models status
That shows:
- your primary model/provider
- your fallbacks
- whether auth is configured for each provider
Practical rule:
- if Anthropic is your primary, OpenClaw will try that first