#OpenClaw not communicating on Slack

1 messages Β· Page 1 of 1 (latest)

hexed radish
#

Chatting with OpenClaw on Slack.
Got this message:
⚠️ Missing API key for provider "google". Configure the gateway auth for that provider, then try again.
Now it will not respond at all on Slack

floral thistleBOT
pearl carbonBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> βœ… Mark Solution

floral thistleBOT
manic gardenBOT
#

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 via GEMINI_API_KEY or GOOGLE_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:

hexed radish
#

OpenClaw 2026.4.14 (323493f)

manic gardenBOT
#

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 status shows missing auth for google, 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:

  1. configuring Gemini auth (GEMINI_API_KEY or GOOGLE_API_KEY), or
#
  1. 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.

hexed radish
#

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

manic gardenBOT
#

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:

#
  1. your config has Google auth, but
  2. 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.

hexed radish
#

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 ~ %

manic gardenBOT
#

Yep, this looks like a gateway startup crash, not a Slack-only issue.

The key bits are:

  • status=stopped, state=active
  • port 18789 stays 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:

  1. openclaw gateway status --deep
  2. 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.

Docs: https://docs.openclaw.ai/gateway/troubleshooting

hexed radish
#

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 ~ %

manic gardenBOT
#

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.

hexed radish
#

On the four lines you ask me to run, do I paste and run them all four at once?

manic gardenBOT
#

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.

hexed radish
#

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

manic gardenBOT
#

Perfect, that’s fine.

Please start with these two first, since they’re the most useful:

  1. openclaw gateway status --deep
  2. tail -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 get prints local
  • gateway restart comes up cleanly
  • status shows 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

hexed radish
#

No response at all on slack.

manic gardenBOT
#

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.

hexed radish
#

🦞 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

manic gardenBOT
#

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.
hexed radish
#

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

manic gardenBOT
#

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.

hexed radish
#

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

manic gardenBOT
#

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.

hexed radish
#

🦞 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).

manic gardenBOT
#

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.

hexed radish
#

🦞 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

manic gardenBOT
#

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

hexed radish
#

Config path not found: channels.slack

manic gardenBOT
#

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
hexed radish
#

Slack requires --bot-token and --app-token (or --use-env).

manic gardenBOT
#

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.

hexed radish
#

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
manic gardenBOT
#

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:

  1. OpenClaw tries your primary Anthropic model, that fails with 401
  2. it falls back to Google, that fails because Google auth is missing
  3. 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.

hexed radish
#

I added the Anthropic API key as primary. How do I add Google gemini as fallback at this point?

manic gardenBOT
#

Two parts:

  1. make sure Google auth exists
  2. 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:

hexed radish
#

I don't know what this is or if I'm using it:

env vars on macOS LaunchAgent

manic gardenBOT
#

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:
    1. use OpenClaw’s setup/onboarding commands, or
    2. 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.

hexed radish
#

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?

manic gardenBOT
#

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.

hexed radish
#

I think configure is complete. How do I test it?

manic gardenBOT
#

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 status shows your primary + fallback with no missing auth
  • channels status --probe shows Slack configured/healthy
#
  • Slack replies to your test message

If it still does not reply, paste:

  1. openclaw models status
  2. openclaw channels status --probe

and I’ll check the last bits.

hexed radish
#

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
manic gardenBOT
#

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.

hexed radish
#

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

manic gardenBOT
#

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.

hexed radish
#

(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)

manic gardenBOT
#

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 token
  • xapp-... = 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:

hexed radish
#

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)

manic gardenBOT
#

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:

  1. App token is an xapp-... token
  2. that app token has connections:write
  3. Bot token is an xoxb-... token
  4. both tokens belong to the same Slack app / same workspace
  5. 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.

hexed radish
#

Okay. Just ran: openclaw configure --section channels.

Can you walk me step by step through the process on Terminal?

manic gardenBOT
#

Yep. Go screen by screen like this:

In openclaw configure --section channels

  1. When it asks which channel to configure

    • choose Slack
  2. If it asks for connection mode

    • choose Socket Mode
  3. When it asks for the bot token

    • paste the xoxb-... token
    • this is the Bot User OAuth Token
  4. When it asks for the app token

    • paste the xapp-... token
    • this is the App-Level Token
#
  • it must have connections:write
  1. If it asks about channel/group policy

    • choose allowlist if you only want it in specific channels
  2. When it asks for the Slack channel allowlist

    • paste the channel ID like C1234567890
    • do not use the channel name like #general
  3. If it asks whether replies should require a mention

    • choose yes (safer, and good for testing)
  4. 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.

hexed radish
#

Finally worked! How can I tell if it's using Anthropic API or Google gemini?

manic gardenBOT
#

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