openclaw / openclaw/openclaw-windows-node
Settings: Sandbox timeout is not persisted — resets to 30000 on app restart and overwrites settings.json
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.1k
- Forks
- 295
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 99
Description
Summary
The Sandbox → timeout value in OpenClaw Companion is not persisted across app restarts.
The value is applied for the running session, but quitting and relaunching the app resets it to the
built-in default (30000 ms) and immediately overwrites settings.json, discarding the user's value.
Environment
- OpenClaw Companion 2026.9.4 (
2026.9.4+3c43751b2bace876de3febe478ebabeca172e3ac), WinUI 3 - App exe:
%LOCALAPPDATA%\OpenClawTray\OpenClaw.Tray.WinUI.exe - App data:
%APPDATA%\OpenClawTray\(settings.json) - Gateway: OpenClaw
2026.9.2(Raspberry Pi 5, arm64), node mode over LAN - Windows node:
DESKTOP-1EQRL25
Steps to reproduce
- Open Companion → Sandbox settings, raise the timeout to a larger value (e.g.
280000). - Confirm it is applied: run a command that takes ~45 s. It completes successfully
(system.run result exitCode=0; durationMs=46038; timedOut=False), and the sandbox log shows
policy={...,timeoutMs=280000}. - Quit Companion completely, then relaunch it.
- Re-read
%APPDATA%\OpenClawTray\settings.jsonand%LOCALAPPDATA%\OpenClawTray\openclaw-tray.log.
Actual behaviour
- While the app runs, the value is applied correctly
(sandboxSettings ... timeoutMs=100000/280000; long commands succeed). - After a restart, the app writes
SandboxTimeoutMs: 30000back intosettings.json.
Log sequence:
and every subsequent sandbox request logsApplication exiting Application started (WinUI 3) Settings saved x2 -> [SETTINGS] Change impact: UiOnlytimeoutMs=30000again. default-config.jsondoes not containSandboxTimeoutMsat all.- Editing
settings.jsonby hand while the app is running is silently overwritten:
a manual save was reverted to30000immediately afterwards. - In the UI the slider visibly snaps back to the default after the value is released.
Expected behaviour
The value chosen in Sandbox settings should be saved and reloaded on startup and remain stable across
restarts — or the UI should clearly state that the value is session-only.
Impact
Commands that legitimately run longer than 30 s are killed by the sandbox:
{"error":{"code":"backend_error","message":"script timed out after 30000ms"}}
The only workaround (raising the limit) has to be reapplied after every app restart. The failure is
silent: saving raises no visible error, and there is no settings log to inspect.
Notes
- The log line
[SETTINGS] Change impact: UiOnlysuggests the timeout field is treated as UI-only
state — neither loaded on startup nor persisted (Save()also swallows exceptions silently). - App log:
%LOCALAPPDATA%\OpenClawTray\openclaw-tray.log - Earlier observations showed the same reset with
100000→30000, so it is not value-specific.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the Sandbox settings UI, startup loading, and Save() paths that write settings.json; compare their handling with default-config.json. Reproduce the reset using the documented 280000 ms value and inspect openclaw-tray.log. Done means the selected timeout reloads unchanged after restart and is not overwritten with 30000.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 72/100