fix: report effective sandbox workspace in explain#100439
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 5, 2026, 3:29 PM ET / 19:29 UTC. Summary PR surface: Source +76, Tests +47. Total +123 across 4 files. Reproducibility: yes. source-level. Current main reports the configured sandbox root while runtime layout and Docker mount helpers use the agent workspace for Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land a diagnostic-only fix that reuses the runtime workspace layout and reports configured root plus effective mounts without changing sandbox creation semantics. Do we have a high-confidence way to reproduce the issue? Yes, source-level. Current main reports the configured sandbox root while runtime layout and Docker mount helpers use the agent workspace for Is this the best way to solve the issue? Yes. This is the better fix shape because it shares the runtime layout helper and mount model with explain instead of adding a separate rw-only calculation. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f141408e7749. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +76, Tests +47. Total +123 across 4 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
Sources: #100435, #100439 Co-authored-by: Aniruddha Adak <[email protected]> Co-authored-by: ZengWen-DT <[email protected]>
* fix(agents): harden LSP process failures Source: #100450 Co-authored-by: morluto <[email protected]> * fix(sandbox): report effective workspace layout Sources: #100435, #100439 Co-authored-by: Aniruddha Adak <[email protected]> Co-authored-by: ZengWen-DT <[email protected]> * fix(security): fail install checks on stream errors Source: #100413 Co-authored-by: 陈宪彪0668000387 <[email protected]> * fix(android): normalize all-day calendar events Source: #100032 Co-authored-by: NianJiuZst <[email protected]> * fix(ios): serialize push-to-talk lifecycle Source: #99942 Co-authored-by: NianJiuZst <[email protected]> * fix(talk): reject inherited provider names Source: #99849 Co-authored-by: zenglingbiao <[email protected]> * fix(android): stop voice capture in background Source: #99840 Co-authored-by: xialonglee <[email protected]> * fix(cron): preserve fallback result classification Source: #99913 Co-authored-by: jincheng-xydt <[email protected]> * fix(google): bound Vertex response decompression Source: #99812 Co-authored-by: 黄剑雄0668001315 <[email protected]> * fix(plugins): report malformed discovery JSON Source: #99892 Co-authored-by: 陈宪彪0668000387 <[email protected]> * test(sandbox): configure non-default workspace fixture * test: fix small-fix batch validation --------- Co-authored-by: morluto <[email protected]> Co-authored-by: ZengWen-DT <[email protected]> Co-authored-by: 陈宪彪0668000387 <[email protected]> Co-authored-by: NianJiuZst <[email protected]> Co-authored-by: zenglingbiao <[email protected]> Co-authored-by: xialonglee <[email protected]> Co-authored-by: jincheng-xydt <[email protected]> Co-authored-by: 黄剑雄0668001315 <[email protected]>
|
Superseded by #100483, landed as aaf5ab9. The landed rewrite preserves Thank you @ZengWen-DT for identifying and implementing the core mismatch. |
|
Thanks @ZengWen-DT — your effective-workspace implementation was incorporated into the canonical fix in #100483, landed as aaf5ab9. The landed version also preserves the existing |
* fix(agents): harden LSP process failures Source: openclaw#100450 Co-authored-by: morluto <[email protected]> * fix(sandbox): report effective workspace layout Sources: openclaw#100435, openclaw#100439 Co-authored-by: Aniruddha Adak <[email protected]> Co-authored-by: ZengWen-DT <[email protected]> * fix(security): fail install checks on stream errors Source: openclaw#100413 Co-authored-by: 陈宪彪0668000387 <[email protected]> * fix(android): normalize all-day calendar events Source: openclaw#100032 Co-authored-by: NianJiuZst <[email protected]> * fix(ios): serialize push-to-talk lifecycle Source: openclaw#99942 Co-authored-by: NianJiuZst <[email protected]> * fix(talk): reject inherited provider names Source: openclaw#99849 Co-authored-by: zenglingbiao <[email protected]> * fix(android): stop voice capture in background Source: openclaw#99840 Co-authored-by: xialonglee <[email protected]> * fix(cron): preserve fallback result classification Source: openclaw#99913 Co-authored-by: jincheng-xydt <[email protected]> * fix(google): bound Vertex response decompression Source: openclaw#99812 Co-authored-by: 黄剑雄0668001315 <[email protected]> * fix(plugins): report malformed discovery JSON Source: openclaw#99892 Co-authored-by: 陈宪彪0668000387 <[email protected]> * test(sandbox): configure non-default workspace fixture * test: fix small-fix batch validation --------- Co-authored-by: morluto <[email protected]> Co-authored-by: ZengWen-DT <[email protected]> Co-authored-by: 陈宪彪0668000387 <[email protected]> Co-authored-by: NianJiuZst <[email protected]> Co-authored-by: zenglingbiao <[email protected]> Co-authored-by: xialonglee <[email protected]> Co-authored-by: jincheng-xydt <[email protected]> Co-authored-by: 黄剑雄0668001315 <[email protected]>
Closes #100423
What Problem This Solves
Fixes an issue where users running
openclaw sandbox explain --agent <id>withworkspaceAccess: "rw"would seeworkspaceRootreported as the configured sandbox root even though sandbox commands write through the agent workspace mounted at/workspace.Why This Change Was Made
The sandbox workspace path selection is now shared between runtime setup and
sandbox explain, and the explain output includes the effective host workspace, configured sandbox root, container workdir, workspace source, and Docker mount table. This is a diagnostics-only change; it does not change sandbox creation or mount behavior.User Impact
Users can now rely on
sandbox explainto find where files actually land forrwworkspaces instead of looking under the configured sandbox root by mistake.Evidence
Before: on
upstream/main,src/commands/sandbox-explain.tssetsandbox.workspaceRootdirectly fromsandboxCfg.workspaceRoot, whilesrc/agents/sandbox/context.tsselected the agent workspace asworkspaceDirwhenworkspaceAccess === "rw".After, with an isolated config using
workspaceAccess: "rw",workspaceRoot: "/tmp/openclaw-sandboxes", and agent workspace"/tmp/openclaw-agent-workspace":{ "workspaceAccess": "rw", "workspaceRoot": "/tmp/openclaw-agent-workspace", "configuredWorkspaceRoot": "/tmp/openclaw-sandboxes", "sandboxWorkspaceRoot": "/tmp/openclaw-sandboxes/agent-builder-c4974941", "agentWorkspaceRoot": "/tmp/openclaw-agent-workspace", "containerWorkdir": "/workspace", "workspaceMounts": [ { "hostRoot": "/tmp/openclaw-agent-workspace", "containerRoot": "/workspace", "writable": true, "source": "workspace" } ], "workspaceSource": "agent" }Commands run:
Real agent proof also ran locally with
deepseek/deepseek-v4-prothroughopenclaw agent --local; the run returnedsandbox explain proof okwith providerdeepseek, modeldeepseek-v4-pro, andstopReason=stop.AI-assisted.