-
Notifications
You must be signed in to change notification settings - Fork 2.7k
[All platforms] Slack channel silently skipped — SDK rejects placeholder token before any HTTP request #1569
Copy link
Copy link
Open
Labels
Integration: SlackUse this label to identify Slack integration issues with NemoClaw.Use this label to identify Slack integration issues with NemoClaw.NV QABugs found by the NVIDIA QA TeamBugs found by the NVIDIA QA TeamPlatform: AllApplies to all platforms supported by NemoClawApplies to all platforms supported by NemoClawUATIssues flagged for User Acceptance Testing.Issues flagged for User Acceptance Testing.bugSomething isn't workingSomething isn't workingenhancement: integrationPRs or issues proposing integration of a third-party product or service into NemoClaw.PRs or issues proposing integration of a third-party product or service into NemoClaw.status: blockedCannot proceed — waiting on an external team, dependency, or decision outside this repo.Cannot proceed — waiting on an external team, dependency, or decision outside this repo.
Metadata
Metadata
Assignees
Labels
Integration: SlackUse this label to identify Slack integration issues with NemoClaw.Use this label to identify Slack integration issues with NemoClaw.NV QABugs found by the NVIDIA QA TeamBugs found by the NVIDIA QA TeamPlatform: AllApplies to all platforms supported by NemoClawApplies to all platforms supported by NemoClawUATIssues flagged for User Acceptance Testing.Issues flagged for User Acceptance Testing.bugSomething isn't workingSomething isn't workingenhancement: integrationPRs or issues proposing integration of a third-party product or service into NemoClaw.PRs or issues proposing integration of a third-party product or service into NemoClaw.status: blockedCannot proceed — waiting on an external team, dependency, or decision outside this repo.Cannot proceed — waiting on an external team, dependency, or decision outside this repo.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Description
Summary
Slack Socket Mode channel never initializes in the sandbox. The
openclaw.jsoncontains a complete Slack configuration with"botToken": "openshell:resolve:env:SLACK_BOT_TOKEN", and the OpenShell provider is registered with a valid credential. However, the Slack SDK validates the token format in-process (expectsxoxb-prefix) before making any HTTP request. Since the sandbox environment variable contains the placeholder string (by design), the SDK rejects it and OpenClaw silently skips Slack initialization — no[slack]log line is ever emitted.Root cause
OpenShell's security model intentionally keeps real secrets out of sandbox process memory:
This works for Telegram (HTTP polling — token appears in URL path
/bot{TOKEN}/getUpdates, rewritten at proxy layer). It does not work for Slack because:SLACK_BOT_TOKEN=openshell:resolve:env:SLACK_BOT_TOKENopenclaw.jsonbotTokenfieldxoxb-prefix)Evidence
From inside sandbox:$ env | grep SLACK
SLACK_BOT_TOKEN=openshell:resolve:env:SLACK_BOT_TOKEN
$ grep -i slack /tmp/gateway.log
(only config migration line — zero [slack] initialization or connection attempts)
$ node -e "const c=require('/sandbox/.openclaw/openclaw.json'); console.log(c.channels.slack.accounts.main.botToken)"
openshell:resolve:env:SLACK_BOT_TOKEN
Meanwhile, Telegram works because its token flows through an HTTP URL path that the L7 proxy can rewrite:L7_REQUEST l7_target=/botopenshell:resolve:env:TELEGRAM_BOT_TOKEN/getMe
→ proxy rewrites to /bot/getMe
→ Telegram API returns 200
Suggested fix
Provide an opt-in mechanism for specific environment variables to be injected with real secret values instead of placeholders, for SDKs that require in-process token validation before making network calls. For example:
--inject-envthat tells OpenShell to pass the real value to the sandbox processEnvironment
Bug Details
[NVB# 6056223]
[NVB#6056223]