Skip to content

[Ubuntu 24.04][Agent&Skills] nemohermes <sandbox> channels add slack + rebuild leaves platforms.slack disabled in sandbox config.yaml; bot silently receives no Slack events #4712

@hulynn

Description

@hulynn

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

  1. 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.

  2. 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').
  3. 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
  4. Verify channels status:

    nemohermes momo channels status --channel slack
    # [ok] Channel registration: slack registered
    # [ok] Policy coverage: slack preset applied
  5. 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
  6. 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
  7. @-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-240NEMOCLAW_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:

  slack:
    enabled: true

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

Metadata

Metadata

Assignees

Labels

NV QABugs found by the NVIDIA QA Teamintegration: hermesHermes integration behaviorintegration: slackSlack integration or channel behaviorplatform: ubuntuAffects Ubuntu Linux environments

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions