Description
After running nemohermes <sandbox> channels add slack + nemohermes <sandbox> rebuild --yes on a NemoClaw v0.0.57 install, the sandbox's Hermes config.yaml is NOT updated with a platforms.slack block. As a result the hermes gateway starts with Gateway running with 1 platform(s) (only api_server), slack_bolt never starts, and the bot silently does not receive any Slack message — even though nemohermes <sandbox> channels status --channel slack reports [ok] Channel registration: slack registered and [ok] Policy coverage: slack preset applied.
The OpenShell-level bridge IS registered (sandboxes.json has messagingChannels=["slack"] and credential hashes), and the build-time ARG NEMOCLAW_SLACK_CONFIG_B64 is baked into the sandbox image. The runtime plumbing from that ARG into a platforms.slack block in /sandbox/.hermes/config.yaml is missing or skipped.
Environment
Device: Internal NVIDIA test host (lynnhu@10.6.76.35 via testmind-dev.nvidia.com)
OS: Ubuntu 24.04.4 LTS (Noble Numbat)
Architecture: x86_64
Node.js: v22.22.3
npm: 10.9.8
Docker: 29.5.2 (build 79eb04c)
OpenShell CLI: 0.0.44
NemoClaw: v0.0.57 (nemohermes shim)
OpenClaw: N/A — running Hermes Agent v0.14.0 (build 2026.5.16, Python 3.13.5)
Steps to Reproduce
-
Onboard a sandbox with NEMOCLAW_AGENT=hermes and any working provider (workaround for the model-router bug first if using NEMOCLAW_PROVIDER=custom). Sandbox name: momo.
-
Add the Slack channel:
export SLACK_BOT_TOKEN=xoxb-...
export SLACK_APP_TOKEN=xapp-...
export SLACK_ALLOWED_CHANNELS=C0B741YC2T0
nemohermes momo channels add slack
# ✓ Registered slack bridge with the OpenShell gateway.
# Change queued. Run 'nemohermes momo rebuild' to apply (add 'slack').
-
Rebuild the sandbox:
export COMPATIBLE_API_KEY=<sk-...> # required by rebuild preflight
nemohermes momo rebuild --yes
# ✓ Policy presets restored: npm, pypi, huggingface, brew, brave, slack
# ✓ Sandbox 'momo' rebuilt successfully
-
Verify channels status:
nemohermes momo channels status --channel slack
# [ok] Channel registration: slack registered
# [ok] Policy coverage: slack preset applied
-
Inside the sandbox container, inspect Hermes config:
docker exec <CID> cat /sandbox/.hermes/config.yaml | grep -A8 "^platforms:"
# only platforms.api_server is present; no platforms.slack block
-
Check gateway boot log:
docker exec <CID> tail /sandbox/.hermes/logs/gateway.log
# "Gateway running with 1 platform(s)"
# no "[Slack] Authenticated as ..." line
# no "slack_bolt.AsyncApp ... Bolt app is running!" line
-
@-mention the bot in the configured channel from Slack:
- Bot does not respond. Slack delivers the event to a Socket Mode endpoint of an app that has no listener.
Expected Result
After channels add slack + rebuild, /sandbox/.hermes/config.yaml should contain:
platforms:
api_server:
enabled: true
extra:
port: 18642
host: 127.0.0.1
slack:
enabled: true
And gateway startup should connect to Slack via Socket Mode and respond to @-mentions in the allowed channel.
Actual Result
config.yaml has only platforms.api_server. hermes gateway logs Gateway running with 1 platform(s). slack_bolt is never started. Bot never responds to any Slack message.
Code references in v0.0.57 source (HEAD 325ed77bb):
agents/hermes/generate-config.ts:45 — references settings.messaging.slackConfig (intent is there) but in the observed flow the generated config.yaml has no platforms.slack block
src/lib/onboard/dockerfile-patch.ts:239-240 — NEMOCLAW_SLACK_CONFIG_B64 is baked as a build ARG into the sandbox image; runtime side does not populate platforms.slack from it
- Related but distinct: NVB 6180485 (Open,
[Ubuntu 24.04][Agent&Skills] Slack socket-mode idle reconnect drops messages) is about post-reconnect drops; this bug is about the platform never being enabled in the first place.
Workaround verified working: manually append the following to /sandbox/.hermes/config.yaml under the platforms: block:
Then pkill -f 'hermes gateway' and nohup hermes gateway run >> /sandbox/.hermes/logs/gateway-stdout.log 2>&1 &. After that:
- Gateway log shows
Gateway running with 2 platform(s) and [Slack] Socket Mode connected (1 workspace(s))
slack_bolt session: Bolt app is running!
- Bot responds to channel @-mentions in ~8s (real LLM reply, 65-68 chars)
Logs
[sandbox config.yaml after channels add + rebuild — note no platforms.slack]
_config_version: 12
model:
default: aws/anthropic/bedrock-claude-opus-4-6
provider: custom
base_url: "https://inference.local/v1"
...
platforms:
api_server:
enabled: true
extra:
port: 18642
host: 127.0.0.1
[gateway boot log before workaround]
2026-06-03 11:48:15,538 INFO gateway.run: Connecting to api_server...
2026-06-03 11:48:15,575 INFO gateway.platforms.api_server: API server listening on http://127.0.0.1:18642
2026-06-03 11:48:15,579 INFO gateway.run: ✓ api_server connected
2026-06-03 11:48:15,587 INFO gateway.run: Gateway running with 1 platform(s)
[sandboxes.json shows bridge IS registered host-side — only sandbox-side platform wiring is missing]
"momo": {
"policies": ["npm","pypi","huggingface","brew","brave","slack"],
"messagingChannels": ["slack"],
"messagingChannelConfig": null,
"providerCredentialHashes": {
"SLACK_BOT_TOKEN": "<sha256-hash>",
"SLACK_APP_TOKEN": "<sha256-hash>"
}
}
[gateway boot log AFTER manual workaround — for contrast]
2026-06-03 11:50:03,081 INFO gateway.run: Connecting to slack...
2026-06-03 11:50:03,331 INFO gateway.platforms.slack: [Slack] Authenticated as @nemoclawtest in workspace mercuriusSpace (team: T0AR2D4AGP5)
2026-06-03 11:50:03,382 INFO gateway.platforms.slack: [Slack] Socket Mode connected (1 workspace(s))
2026-06-03 11:50:03,385 INFO gateway.run: ✓ slack connected
2026-06-03 11:50:03,387 INFO gateway.run: Gateway running with 2 platform(s)
2026-06-03 11:50:03,745 INFO slack_bolt.AsyncApp: A new session (s_...) has been established
2026-06-03 11:50:03,745 INFO slack_bolt.AsyncApp: ⚡️ Bolt app is running!
NVB#6263820
Description
After running
nemohermes <sandbox> channels add slack+nemohermes <sandbox> rebuild --yeson a NemoClaw v0.0.57 install, the sandbox's Hermesconfig.yamlis NOT updated with aplatforms.slackblock. As a result the hermes gateway starts withGateway running with 1 platform(s)(onlyapi_server),slack_boltnever starts, and the bot silently does not receive any Slack message — even thoughnemohermes <sandbox> channels status --channel slackreports[ok] Channel registration: slack registeredand[ok] Policy coverage: slack preset applied.The OpenShell-level bridge IS registered (
sandboxes.jsonhasmessagingChannels=["slack"]and credential hashes), and the build-time ARGNEMOCLAW_SLACK_CONFIG_B64is baked into the sandbox image. The runtime plumbing from that ARG into aplatforms.slackblock in/sandbox/.hermes/config.yamlis missing or skipped.Environment
Steps to Reproduce
Onboard a sandbox with
NEMOCLAW_AGENT=hermesand any working provider (workaround for the model-router bug first if usingNEMOCLAW_PROVIDER=custom). Sandbox name:momo.Add the Slack channel:
Rebuild the sandbox:
Verify channels status:
Inside the sandbox container, inspect Hermes config:
Check gateway boot log:
@-mention the bot in the configured channel from Slack:
Expected Result
After
channels add slack+rebuild,/sandbox/.hermes/config.yamlshould contain:And gateway startup should connect to Slack via Socket Mode and respond to @-mentions in the allowed channel.
Actual Result
config.yamlhas onlyplatforms.api_server. hermes gateway logsGateway running with 1 platform(s).slack_boltis never started. Bot never responds to any Slack message.Code references in v0.0.57 source (HEAD
325ed77bb):agents/hermes/generate-config.ts:45— referencessettings.messaging.slackConfig(intent is there) but in the observed flow the generatedconfig.yamlhas noplatforms.slackblocksrc/lib/onboard/dockerfile-patch.ts:239-240—NEMOCLAW_SLACK_CONFIG_B64is baked as a build ARG into the sandbox image; runtime side does not populateplatforms.slackfrom it[Ubuntu 24.04][Agent&Skills]Slack socket-mode idle reconnect drops messages) is about post-reconnect drops; this bug is about the platform never being enabled in the first place.Workaround verified working: manually append the following to
/sandbox/.hermes/config.yamlunder theplatforms:block:Then
pkill -f 'hermes gateway'andnohup hermes gateway run >> /sandbox/.hermes/logs/gateway-stdout.log 2>&1 &. After that:Gateway running with 2 platform(s)and[Slack] Socket Mode connected (1 workspace(s))slack_boltsession:Bolt app is running!Logs
NVB#6263820