Description
When I enable a messaging channel on an already-onboarded sandbox via nemoclaw <sandbox> channels add <channel> followed by nemoclaw <sandbox> rebuild, the rebuild completes successfully, status and policy-list show the channel's preset is active, and the channel reports socket mode connected (or its equivalent) in the logs — but the bot never replies when I @-mention it.
If I instead export the channel's tokens before running bash install.sh (so the channel is configured during the initial onboard), the same channel app/bot/tokens work fine and the bot replies as expected.
I verified this on Slack, but I suspect it applies to any messaging channel that has a matching built-in network policy preset (discord, telegram, whatsapp, wechat). The channels add code path that wires up the policy is shared across all of them — I just haven't reproduced on the other channels myself.
Expected: adding a channel via channels add <channel> + rebuild after onboard should leave the bot in the same working state as configuring that channel during the initial onboard.
Actual: the channel connects (real-time transport is up, periodic auth checks succeed) but every incoming event is dropped. On Slack specifically I see bolt-app Authorization of incoming event did not succeed. No listeners will be called. followed by a 403 / policy_denied underneath.
Reproduction Steps
Verified path (Slack). The same shape of steps should reproduce on telegram / discord / whatsapp / wechat by swapping the channel name and the corresponding token env vars.
- On a clean host with no
SLACK_* env vars set, run bash install.sh and let onboarding complete with the default presets (no slack).
- Export Slack credentials in the same shell:
export SLACK_APP_TOKEN=xapp-...
export SLACK_BOT_TOKEN=xoxb-...
export SLACK_ALLOWED_USERS=U0...,U0...
- Add the slack channel:
nemoclaw my-assistant channels add slack
- Apply:
nemoclaw my-assistant rebuild and accept the prompt. Wait for ✓ Sandbox 'my-assistant' rebuilt successfully.
- Verify everything looks healthy:
nemoclaw my-assistant status → shows Policies: …, slack
nemoclaw my-assistant policy-list → slack is ● (active)
- In the Slack workspace where the app is installed, @-mention the bot in any channel it has been invited to.
- Observe: bot does not reply.
For comparison, doing the same on a fresh host but with SLACK_APP_TOKEN / SLACK_BOT_TOKEN / SLACK_ALLOWED_USERS exported before step 1 produces a working bot that replies to mentions.
Environment
- OS: Ubuntu (Linux x86_64)
- Node.js: v22.22.3 (installed by NemoClaw installer via nvm)
- Docker: Docker Engine 27.x
- NemoClaw: v0.0.48-13-ga3210c9d6 (installed from source)
- OpenShell: 0.0.39 (docker driver)
- Channel verified: slack
- Channels suspected (not directly tested): discord, telegram, whatsapp, wechat
Debug Output
Selected excerpts from `nemoclaw my-assistant logs --follow` after rebuild (Slack run; timestamps from the same run):
Initial slack channel start, during rebuild's post-boot window:
2026-05-21T18:02:16.983+00:00 [slack] [default] starting provider
2026-05-21T18:02:17.171+00:00 [WARN] bolt-app http request failed An HTTP protocol error occurred: statusCode = 403
2026-05-21T18:02:17.174+00:00 [WARN] web-api:WebClient:0 http request failed An HTTP protocol error occurred: statusCode = 403
2026-05-21T18:02:21.242+00:00 [ERROR] socket-mode:SocketModeClient:0 Failed to retrieve a new WSS URL (error: Error: An HTTP protocol error occurred: statusCode = 403)
2026-05-21T18:02:21.246+00:00 [slack] socket mode failed to start. retry 1/12 in 2s (An HTTP protocol error occurred: statusCode = 403)
[channels] [slack] provider failed to start: An HTTP protocol error occurred: statusCode = 403 — unhandledRejection caught by safety net, gateway continues
2026-05-21T18:02:30.668+00:00 [slack] socket mode connected
Later, when I @-mention the bot in Slack — socket-mode delivers the event, periodic `auth.test` is ALLOWED, but bolt-app's per-event handling fails:
[1779386638.943] [sandbox] [OCSF ] [ocsf] NET:OPEN [INFO] ALLOWED /usr/local/bin/node(668) -> slack.com:443 [policy:slack engine:opa]
[1779386638.968] [sandbox] [OCSF ] [ocsf] HTTP:POST [INFO] ALLOWED POST http://slack.com:443/api/auth.test [policy:slack engine:l7]
2026-05-21T18:04:00.675+00:00 [WARN] bolt-app Authorization of incoming event did not succeed. No listeners will be called.
2026-05-21T18:04:00.680+00:00 [ERROR] bolt-app Error: An HTTP protocol error occurred: statusCode = 403
code: 'slack_bolt_authorization_error',
statusCode: 403,
body: {
detail: 'CONNECT slack.com:443 not permitted by policy',
error: 'policy_denied'
},
2026-05-21T18:04:00.682+00:00 [ERROR] An unhandled error occurred while Bolt processed (type: event_callback, error: Error: An HTTP protocol error occurred: statusCode = 403)
Every subsequent mention produces the same `Authorization of incoming event did not succeed` / `CONNECT slack.com:443 not permitted by policy` pair.
Logs
Checklist
Description
When I enable a messaging channel on an already-onboarded sandbox via
nemoclaw <sandbox> channels add <channel>followed bynemoclaw <sandbox> rebuild, the rebuild completes successfully,statusandpolicy-listshow the channel's preset is active, and the channel reportssocket mode connected(or its equivalent) in the logs — but the bot never replies when I @-mention it.If I instead export the channel's tokens before running
bash install.sh(so the channel is configured during the initial onboard), the same channel app/bot/tokens work fine and the bot replies as expected.I verified this on Slack, but I suspect it applies to any messaging channel that has a matching built-in network policy preset (discord, telegram, whatsapp, wechat). The
channels addcode path that wires up the policy is shared across all of them — I just haven't reproduced on the other channels myself.Expected: adding a channel via
channels add <channel>+rebuildafter onboard should leave the bot in the same working state as configuring that channel during the initial onboard.Actual: the channel connects (real-time transport is up, periodic auth checks succeed) but every incoming event is dropped. On Slack specifically I see
bolt-app Authorization of incoming event did not succeed. No listeners will be called.followed by a403 / policy_deniedunderneath.Reproduction Steps
Verified path (Slack). The same shape of steps should reproduce on telegram / discord / whatsapp / wechat by swapping the channel name and the corresponding token env vars.
SLACK_*env vars set, runbash install.shand let onboarding complete with the default presets (no slack).nemoclaw my-assistant channels add slacknemoclaw my-assistant rebuildand accept the prompt. Wait for ✓ Sandbox 'my-assistant' rebuilt successfully.nemoclaw my-assistant status→ shows Policies: …, slacknemoclaw my-assistant policy-list→ slack is ● (active)For comparison, doing the same on a fresh host but with SLACK_APP_TOKEN / SLACK_BOT_TOKEN / SLACK_ALLOWED_USERS exported before step 1 produces a working bot that replies to mentions.
Environment
Debug Output
Logs
Checklist