NVIDIA / NVIDIA/NemoClaw

[Linux][Agent&Skills] health-monitor sandbox recovery silently wipes messaging channel configuration

Open
#9,876 0 comments 0 reactions 1 assignee Claimed by @sandl99 View on GitHub
area: messaging area: sandbox integration: discord integration: slack NV QA platform: linux platform: ubuntu
Dominant language
TypeScript
Stars
22.5k
Forks
3.1k
Avg merge
1d 1h
Merged PRs (30d)
715

Description

## Description

When a messaging bridge (Discord or Slack) exhausts its auto-restart attempts and the sandbox health-monitor triggers recovery (container recreation), the messaging channel configuration stored in `openclaw.json` is silently reset to default. The user's channel enrollment — completed through the full interactive wizard including sandbox rebuild — is lost without any warning. The user must re-run the entire wizard to restore the channel.

Platform scope: Reproduced on Linux x86_64 (Ubuntu 22.04). Other platforms not tested for this specific failure path.
Regression: Unknown — earlier versions not tested.
OpenShell issue: No

## Environment

```text
Device: Ubuntu 22.04 x86_64 server
OS: Ubuntu 22.04.5 LTS
Architecture: x86_64
Node.js: v22.23.2
npm: 10.9.8
Docker: Docker CE 29.x
OpenShell CLI: 0.0.101
NemoClaw: v0.0.113
OpenClaw: 2026.7.x
```

## Steps to Reproduce

1. Onboard a sandbox and add Discord via the wizard: `nemoclaw {sandbox} channels add discord`
2. Confirm sandbox rebuilds and channel is listed: `nemoclaw {sandbox} channels list`
3. Allow the Discord bridge to exhaust its auto-restart attempts (~26 minutes with v0.0.113 credential regression — bridge fails immediately, retries 10 times, then stops).
4. Wait for health-monitor to trigger sandbox recovery after bridge exhaustion.
5. Check: `nemoclaw {sandbox} channels list`

## Expected Result

After sandbox recovery, channel configuration persists. `nemoclaw channels list` still shows the enrolled Discord channel. User receives a notification if the bridge could not be automatically restarted.

## Actual Result

`openclaw.json` is reset to default after health-monitor recovery — channels array becomes empty. `nemoclaw {sandbox} channels list` shows no enrolled channels. No warning is shown to the user.

```text
Before recovery: nemoclaw {sandbox} channels list → "discord — Discord bot messaging"
After recovery: nemoclaw {sandbox} channels list → "(no channels configured)"
openclaw.json channels: [] (was populated with Discord config before recovery)
```

## Logs

```text
[discord] channel exited: Failed to resolve Discord application id — restart 10/10
[health-monitor] sandbox flagged for recovery: bridge exhausted retries
[health-monitor] recreating sandbox container
[sandbox] openclaw.json reset to defaults during container recreation
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.