Repository navigation
Conversation
Share system.run policy and execution ownership across eight typed file commands, Gateway and MCP transports, and winnode. Package a verified native worker with bounded identity-backed code caching and retained filesystem operations. Native MXC, installed deployment, Gateway/MCP/UI and native ARM64 acceptance remain pending on a clean proof host. This commit is a validation candidate, not a shipping-readiness claim. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve bounded stdout, stderr, readiness, native exit/finalization and cleanup evidence even when a namespace child exits before READY. Keep native argv, containment policy and assertions unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compare PowerShell inline startup with the unchanged file-based namespace proofs using identical synthetic script and direct-SDK policy. Preserve original failures and assertions; do not override execution policy or fall back to host execution. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove unused forwarding methods, obsolete worker-path state, redundant overwrite state, and duplicate coverage. Separate failure-first and deterministically gated cancellation tests while preserving native ownership and rollback contracts. Validated with the full build, required suites, and fresh x64 MCP and real Gateway functional proof. ARM64 and release-specific acceptance remain separate. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… fixtures MxcFolderAdmission.ReadMetadata now passes extended-length (\\?\ or \\?\UNC\) paths to CreateFileW so metadata reads succeed past MAX_PATH when LongPathsEnabled is off. A long-path theory row covers this and fails without the fix. Test fixture corrections: - Create resolver/cache hardlinks through extended-length paths. - Set the copied private ACL owner to the current user so the unowned root test reaches its "root ownership changed" assertion. - Run the FileWorker apphost cache test from a short temp root and fall back to it when RUNNER_TEMP is absent. Document extended-length native paths, symlink privilege, and the temp-root apphost fixture in TEST_COVERAGE.md. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The CreateHardLink test helper unconditionally prepended \\?\, so an OPENCLAW_REPO_ROOT already spelled with an extended prefix produced \\?\\\?\C:\... and failed fixture creation with Windows error 123 before reaching the alias-rejection assertion. Keep existing extended paths, convert ordinary UNC paths to \\?\UNC\, and prefix other paths after full-path normalization. Add a hardlink-extended case that fails with error 123 before this change and asserts the same "file aliases" rejection afterward. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. What this changesAdds eight Sandbox-governed file commands, authenticated transfers, a verified native worker, and transfer settings. Example: Transfer C:\Data\sample.bin using winnode file.fetch with maxBytes 52428800.
Review scores
ProductKind: Feature · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 5 items remain Keep this maintainer-authored draft open: the four previous blockers have source repairs, but the transfer-budget control can still display a different limit from the one enforced. Priority: P2 Before merge
Findings
Tests
Agent review detailsHow this fits togetherGateway and local MCP requests enter the shared capability registry, pass through committed Sandbox admission, and reach a verified worker that performs retained-handle filesystem operations and returns bounded results. flowchart LR
A[Gateway callers] --> C[Shared capability registry]
B[Local MCP and winnode] --> C
C --> D[Sandbox executor]
E[Committed settings] --> D
D --> F[Verified file worker]
F --> G[Retained filesystem handles]
Technical reviewBest possible solution: Keep the shared Sandbox and filesystem owners, normalize the budget control to its committed value, and complete the scoped runtime acceptance gates. Do we have a high-confidence way to reproduce the issue? The budget mismatch is source-reproducible: entering 1.5 leaves the NumberBox unchanged after a successful save while Math.Round persists a 2 MiB limit; no target code was executed during this read-only review. Is this the best way to solve the issue? The shared executor, committed policy store, retained native handles, and separate infrastructure grants fit the existing ownership boundaries; the budget mismatch needs only control normalization, not another settings owner. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against b6f158ab257a. Merge-risk optionsMaintainer options:
Provenance checked
TestingProof path: in-process harness. SecurityNeeds attention: The prior authorization repairs are present, but the new authority chain still lacks composed forbidden-final-effect acceptance. EvidenceSecurity concerns:
What I checked:
Likely related people:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. Review metrics
LabelsLabel changes:
Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (1 earlier review cycle)
Reviewed November 7, 2026, 12:46 AM ET / 05:46 UTC (Revision 2). |
Set the owner explicitly in the creation-time security descriptor rather than relying on the token default owner. Preserve the protected User/System ACL and rejection of foreign-owned storage. Add independent owner-readback coverage and avoid redundant WRITE_OWNER requests in the cache fixture. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve the file-transfer PR and current main histories while recording the validated integration, authorization, executor teardown and worker-signing fixes. Includes regression coverage and the optional-profile worker fixture repair. Full native ARM64 build and Shared, Tray, CLI and FileWorker suites passed. Live Gateway/MXC and signed-package acceptance remain unverified. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
A save-notification race can publish uncommitted settings to observers, leaving them with rejected values after rollback and no corrective event.
3 open issues
What changed in this PR
This PR adds typed Windows file and directory transfers governed by the same saved Sandbox policy as system.run. It integrates file capabilities with Companion, Gateway/MCP transport, and winnode, while routing existing browser and Canvas file reads through the shared access boundary.
Changes:
- Add file-transfer contracts, authenticated channels, worker execution, and upload ownership tracking.
- Add transfer-budget and upload-storage settings, localized guidance, and committed-policy publication.
- Package signed, manifest-verified workers for x64 and ARM64, with regression tests and protocol documentation.
Validation here was limited to source inspection; builds, tests, and native runtime proof were not run.
| File | Description |
|---|---|
| tests/OpenClaw.WinNode.Cli.Tests/SkillMdDriftTests.cs | Includes file commands in documentation drift checks. |
| tests/OpenClaw.WinNode.Cli.Tests/OpenClaw.WinNode.Cli.Tests.csproj | Builds the worker for CLI tests. |
| tests/OpenClaw.Tray.Tests/SettingsSandboxPublicationTests.cs | Tests committed-policy publication and concurrent saves. |
| tests/OpenClaw.Tray.Tests/SandboxFileSettingsContractTests.cs | Checks transfer-control placement and limits. |
| tests/OpenClaw.Tray.Tests/ReleaseSigningWorkflowTests.cs | Checks worker signing and manifest ordering. |
| tests/OpenClaw.Tray.Tests/NodeModeUiStateTests.cs | Updates shared-executor ownership assertions. |
| tests/OpenClaw.Tray.Tests/MxcCompanionPackagePathsTests.cs | Checks executor context injection. |
| tests/OpenClaw.Tray.Tests/InstallerIssAssertionTests.cs | Updates process-launch ownership guards. |
| tests/OpenClaw.Tray.Tests/FileWorkerManifestTests.cs | Tests manifest validation and payload normalization. |
| tests/OpenClaw.Tray.Tests/CiNugetCacheWorkflowTests.cs | Includes worker projects in cache checks. |
| tests/OpenClaw.Tray.Tests/AppRefactorContractTests.cs | Checks executor teardown ordering. |
| tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj | Embeds worker manifest fixtures. |
| tests/OpenClaw.Shared.Tests/Mxc/NodeSandboxPolicyTests.cs | Tests policy revisions and launch admission. |
| tests/OpenClaw.Shared.Tests/Mxc/MxcPhysicalPathsTests.cs | Tests executor-private path exclusions. |
| tests/OpenClaw.Shared.Tests/Mxc/MxcOwnedOperationTests.cs | Tests identity-owned cleanup and retained operations. |
| tests/OpenClaw.Shared.Tests/Mxc/MxcNamespaceLaunchTests.cs | Tests file and inline PowerShell arguments. |
| tests/OpenClaw.Shared.Tests/Mxc/MxcFolderAdmissionTests.cs | Adds long-path metadata coverage. |
| tests/OpenClaw.Shared.Tests/Mxc/MxcCommandRunnerTests.cs | Adapts tests to shared executor ownership. |
| tests/OpenClaw.Shared.Tests/FileTransfer/UploadRetentionCoordinatorTests.cs | Tests upload inventory, recovery, and blocked cleanup. |
| tests/OpenClaw.Shared.Tests/FileTransfer/Fixtures/worker-manifest-x64.json | Adds the x64 manifest fixture. |
| tests/OpenClaw.Shared.Tests/FileTransfer/Fixtures/worker-manifest-arm64.json | Adds the ARM64 manifest fixture. |
| tests/OpenClaw.Shared.Tests/FileTransfer/FileFrameChannelTests.cs | Tests framing, bounds, ordering, and cancellation. |
| tests/OpenClaw.Shared.Tests/FileTransfer/ExistingFileAdapterTests.cs | Tests browser use of the Sandbox reader. |
| tests/OpenClaw.Shared.Tests/CapabilityTests.cs | Injects the Canvas file-reader adapter. |
| tests/OpenClaw.Shared.Tests/A2UICapabilitySecurityTests.cs | Tests missing-reader and Sandbox-denial behavior. |
| tests/OpenClaw.Shared.TestHost/Program.cs | Adds worker-cache process fixtures. |
| tests/OpenClaw.Shared.TestHost/OpenClaw.Shared.TestHost.csproj | Embeds cache manifest fixtures. |
| tests/OpenClaw.Shared.TestHost/Fixtures/worker-cache-x64.json | Adds the x64 cache fixture. |
| tests/OpenClaw.Shared.TestHost/Fixtures/worker-cache-arm64.json | Adds the ARM64 cache fixture. |
| tests/OpenClaw.Shared.TestHost/CacheManifestAssembly.cs | Supplies manifests to process fixtures. |
| tests/OpenClaw.SetupEngine.Tests/SetupConfigTests.cs | Checks file capability registration and ordering. |
| tests/OpenClaw.FileWorker.Tests/WorkerCacheProcessTests.cs | Tests cache eviction with a running worker. |
| tests/OpenClaw.FileWorker.Tests/OpenClaw.FileWorker.Tests.csproj | Defines the worker test project. |
| tests/OpenClaw.E2ETests/Setup/MxcSetupAndConnectTests.cs | Uses an explicit child executable path. |
| src/OpenClaw.WinNode.Cli/Program.cs | Adds transfer flags and file-specific envelope limits. |
| src/OpenClaw.Tray.WinUI/Strings/zh-tw/Resources.resw | Adds Traditional Chinese Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Strings/zh-cn/Resources.resw | Adds Simplified Chinese Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Strings/pt-br/Resources.resw | Adds Brazilian Portuguese Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Strings/nl-nl/Resources.resw | Adds Dutch Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw | Adds French Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw | Adds English Sandbox transfer copy. |
| src/OpenClaw.Tray.WinUI/Services/SettingsManager.cs | Publishes saved policies and serializes persistence. |
| src/OpenClaw.Tray.WinUI/Services/NodeService.cs | Wires file capabilities, cleanup, and executor disposal. |
| src/OpenClaw.Tray.WinUI/Presentation/SettingsStore.cs | Tracks concurrent save origins without a callback lock. |
| src/OpenClaw.Tray.WinUI/Pages/SandboxPage.xaml.cs | Handles transfer settings and cleanup status. |
| src/OpenClaw.Tray.WinUI/Pages/SandboxPage.xaml | Adds storage, budget, and cleanup controls. |
| src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj | Imports worker packaging targets. |
| src/OpenClaw.Tray.WinUI/FileWorker.Build.targets | Builds, verifies, embeds, and copies worker payloads. |
| src/OpenClaw.Shared/SettingsData.cs | Adds upload location and transfer budget settings. |
| src/OpenClaw.Shared/NodeCommandException.cs | Defines a preservable command-owned exception. |
| src/OpenClaw.Shared/NodeCapabilities.cs | Adds transport-owned channels and semantic results. |
| src/OpenClaw.Shared/Mxc/UnsupportedWindowsCommandExecutor.cs | Restricts the adapter to host start information. |
| src/OpenClaw.Shared/Mxc/SandboxPathRules.cs | Centralizes path normalization and specificity. |
| src/OpenClaw.Shared/Mxc/NodeSandboxResources.cs | Separates caller-data and infrastructure access. |
| src/OpenClaw.Shared/Mxc/NodeSandboxPolicy.cs | Orders policy persistence and launch admission. |
| src/OpenClaw.Shared/Mxc/MxcRequestContext.cs | Records executor-private runtime paths. |
| src/OpenClaw.Shared/Mxc/MxcRequestBuilder.cs | Composes shared data and infrastructure permissions. |
| src/OpenClaw.Shared/Mxc/MxcProcessLifetime.cs | Centralizes process and pipe lifetime handling. |
| src/OpenClaw.Shared/Mxc/MxcFolderPermissions.cs | Reuses shared permission specificity rules. |
| src/OpenClaw.Shared/Mxc/MxcFolderAdmission.cs | Uses extended native paths for metadata queries. |
| src/OpenClaw.Shared/Mxc/FixedFileWorkload.cs | Defines trusted worker leases and protocol callbacks. |
| src/OpenClaw.Shared/Mcp/McpFileChannels.cs | Adds authenticated file-channel leases and polling. |
| src/OpenClaw.Shared/FileTransfer/IUploadRetentionOperations.cs | Defines the upload cleanup scheduling boundary. |
| src/OpenClaw.Shared/FileTransfer/IFileInvocationChannel.cs | Defines bounded invocation messaging. |
| src/OpenClaw.Shared/FileTransfer/GatewayFileInvocation.cs | Coordinates Gateway frames and progress heartbeats. |
| src/OpenClaw.Shared/FileTransfer/FileWorkerProtocol.cs | Defines bounded binary worker packets. |
| src/OpenClaw.Shared/FileTransfer/FileOutcomeTelemetry.cs | Maps file execution mode to telemetry. |
| src/OpenClaw.Shared/FileTransfer/FileOperations.cs | Exchanges worker requests through owned pipes. |
| src/OpenClaw.Shared/FileTransfer/FileContracts.cs | Defines limits, permissions, requests, and results. |
| src/OpenClaw.Shared/FileTransfer/FileCommandParser.cs | Parses commands and validates base64 content. |
| src/OpenClaw.Shared/FileTransfer/FileCapability.cs | Exposes file commands and shapes outcomes. |
| src/OpenClaw.Shared/Capabilities/CanvasCapability.cs | Routes JSONL reads through the Sandbox adapter. |
| src/OpenClaw.Shared/Capabilities/BrowserProxyCapability.cs | Routes returned-file reads through the Sandbox adapter. |
| src/OpenClaw.SetupEngine/SetupContext.cs | Advertises file capabilities independently of system tools. |
| src/OpenClaw.FileWorker/UploadOwnership.cs | Defines native upload ownership metadata. |
| src/OpenClaw.FileWorker/Program.cs | Implements the fixed worker’s standard-I/O entry point. |
| src/OpenClaw.FileWorker/OpenClaw.FileWorker.csproj | Defines the architecture-specific worker build. |
| scripts/Write-FileWorkerManifest.ps1 | Validates payloads and generates digest manifests. |
| scripts/Test-ReleaseExecutableSignatures.ps1 | Classifies worker binaries for signature verification. |
| scripts/test-ci-workflow-contract.ps1 | Includes worker tests and restore inputs. |
| openclaw-windows-node.slnx | Adds worker and worker-test projects. |
| docs/RELEASING.md | Documents signing before manifest generation. |
| docs/MCP_MODE.md | Documents authenticated file transport and bounds. |
| .github/workflows/ci.yml | Adds worker testing, signing, and artifact distribution. |
| .agents/skills/winnode/SKILL.md | Documents file commands and binary-transfer flags. |
Review effort: Balanced
… budgets Document repeated binary fetch chunks and acknowledgments. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve runtime-bound signed payload paths outside the source checkout for cleanup host and fixed workers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
@clawsweeper re-review Please reassess current head The PR body now links completed CI run 42326156137, attempt 1, its downloaded TRX artifacts, current-head native file-owner and authorization-boundary results, settings/legacy-upload compatibility checks, and signing-workflow regressions. CI merge The old token-generation, queued-approval, worker-signing and executor-disposal findings now have repairs and passing regressions; all three later inline review threads are resolved. Please evaluate those fixes and the new evidence rather than the stale body. The body explicitly distinguishes owner/synthetic transport tests from full native authority-chain proof. Current-head composed Gateway/MXC forbidden final effects, native ARM64 acceptance, rejected-budget pixels and latest-stable installed upgrade/SAC proof remain incomplete. No platinum label or completed proof pool is being asserted. |
|
🦞👀 Re-review progress:
|
Fix bounded Gateway transfer pipelining, worker deadlines, upload retention ownership and cleanup, and retained write target validation. Add regression coverage and update the related contracts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>



What Problem This Solves
Windows nodes need typed file and directory transfers governed by the same Sandbox settings as command execution.
User Impact
Users can invoke
file.stat,file.fetch,file.create,file.write,dir.list,dir.fetch,fs.listDirandterminal.uploadthrough their applicable authenticated Gateway/MCP paths, with binary transfers supported bywinnode.Draft, not an unconditional merge-readiness claim. The previously reported token-generation, queued-approval, worker-signing and executor-disposal defects have code repairs and passing current-head regression records linked below. ClawSweeper's existing scored review targets the older
eaa67e95, not this head. Final live authority-chain, native ARM64, rendered transfer-budget rollback and installed upgrade acceptance remain incomplete.Browser/Canvas local file reads now use the shared file-access boundary and may be rejected by Sandbox policy. Positive unsupported-Windows compatibility is intentionally uncontained, matching existing
system.run; containment failures on supported Windows do not allow host fallback.Why This Change Was Made
One capability registry serves Gateway and local MCP. One Sandbox executor owns admission, committed policy, process/pipe lifetime and verified worker leases. A fixed native .NET worker performs retained-handle filesystem I/O with bounded streams/archives, no-clobber creation, in-place overwrite and identity-owned cleanup. Local-only
app.*tools remain excluded from Gateway exposure.The bounded persistent worker cache keeps executable infrastructure separate from protected app data. Signed first-party worker bytes are verified before manifest hashing; release consumers stage signed inputs outside the checkout. Current review fixes also publish immutable commit-bound settings snapshots and restore a rejected transfer budget in the native NumberBox.
Evidence
Current head:
cd64009240995a6f1af1b4d0662a98053befad21.Completed CI: Build and Test run 42326156137, attempt 1, conclusion
success. The runner checked out mergeda744ee3dcb7b314f78ea64b6fc1855ab1275740, whose parents are main96ea36feand this PR head. Its tree is exactly the PR-head tree,ec026eae844a2101c9d3312d590fd4fb499e7533, not an inferred association with an older run.Downloaded and inspected 18 TRX reports from that run: 15,912 passed, zero failed, 47 skipped/not executed. This counts result records across lanes, not unique behaviors. CI Gate, core/CLI, Tray/setup/integration and UI/functional/accessibility all passed. The run's downloadable artifacts contain the actual reports, not just this summary.
McpFileTransportTests.RequestDuringBearerRotationCannotAcquireTheReplacementEpochandLeaseAuthBindingReplayAndRotationFailClosed: Passed, Shared TRXNodeSandboxExecutorTests.QueuedCommandRechecksRevokedApprovalBeforeNativeSpawn: PassedExecPolicyDenied, and the supplied launcher is called only once. Fake launcher/approval callback: not a real ExecApprovalsStore + SDK process proof.ExecutorShutdownReleasesUncertainPayloadPinsWithoutDeletingUnknownRuntime: PassedFixedWorkerSigningPrecedesManifestEmbeddingInEveryDistribution,ReleaseWorkflow_VerifiesExecutableSigningPolicy,FileWorkerManifestTests.ReleaseManifestRejectsUnsignedWorkerBeforeWritingDigestsfor both RIDs: PassedSettingsSandboxPublicationTests.FailedStoreEditRollsBackWithoutChangingCommittedPolicyOrUnknownFields,SettingsPersistenceNotificationTests.TypedStoreRollbackAndExplicitReloadPreserveExternalFieldsAndProtectedSecrets,FileWorkerTests.CompleteLegacyRecordsMigrateBeforeReapingAndSurviveInterruptedMarkerDeletion: PassedThe subsequent three Copilot review conversations are resolved: commit-bound notification values/versions, transfer-budget restoration, and repeated binary-fetch chunks/ACKs. Their deterministic settings regressions pass in current CI. No Sandbox-specific screenshot or mounted rejected-budget proof is claimed.
Historical native runtime evidence, kept separate from current-head proof
6f14dcd41496f5b9c84c9ca439e7eba45fba1ef7: actual cached worker/MXC and isolated Companion MCP passed 34 checks across all eight commands. Real task-local Gateway 2026.10.9 passed 21 public-client checks and 12 actual owning-service duplex checks. Cancellation/recovery, overwrite uncertainty and expired-upload cleanup were exercised; recorded owned process survivors and real-profile deltas were zero. Source-specific session evidence is not attached as public reproducible traces here.6f14dcd4: all eight commands passed 30 direct Companion MCP calls, three namespace tests passed, and the post-reboot formal WSL Gateway/MXC lane passed 18/18 with zero skips.c8429c02and35eb0205contain fixes, but there is no complete post-fix native ARM64 report attached. Those failures are not waived or relabeled as resolved by x64 CI.cd640092.Change Type
Scope
winnodeRequired proof pools
windows-wsl-mxc: command/file containment and protected-folder denial. Current CI skips the selected nativesystem.runMXC cases; earlier native proof is historical.windows-wsl-gateway-e2e: registration, pairing and Gateway invocation. Current setup/connect, revocation and network lanes pass; no current live all-eight file authority-chain claim.windows-11-arm64: native worker/retained-I/O loading. Current ARM64 MSIX construction is not native execution proof.windows-winui-interactive: Sandbox settings and visible failure/cleanup state. Sandbox accessibility tests pass; rejected-budget pixels remain unverified.windows-clean-installer-upgrade: worker/cache installation, upgrade, cleanup and preserved data. Owner-level compatibility passes; installed upgrade remains blocked.windows-11-sac-on: officially signed worker execution under enforcing reputation policy. Not exercised by PR signing skips.These are required obligations, not completed pool claims.
Validation
The following local commands ran on the exact current head
cd640092, with short task-owned NTFS TEMP, all three isolated tray roots, and inherited OpenClaw opt-ins cleared. Report/logger arguments are omitted; selectors/build flags are preserved..\build.ps1dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restoredotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter 'FullyQualifiedName!~OpenClaw.Tray.Tests.SettingsManagerIsolationTests.OpenClawTrayDataDirRedirectsSettingsAwayFromRealAppData'dotnet test .\tests\OpenClaw.FileWorker.Tests\OpenClaw.FileWorker.Tests.csproj --no-restoredotnet test .\tests\OpenClaw.WinNode.Cli.Tests\OpenClaw.WinNode.Cli.Tests.csproj --no-restoredotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore --filter 'FullyQualifiedName~SettingsSandboxPublicationTests|FullyQualifiedName~SandboxFileSettingsContractTests|FullyQualifiedName~SettingsStoreTests|FullyQualifiedName~SettingsSharedStateContractTests|FullyQualifiedName~SettingsPersistenceNotificationTests|FullyQualifiedName~ReleaseSigningWorkflowTests'.\scripts\test-ci-workflow-contract.ps1.\scripts\test-alpha-promotion.ps1.\scripts\validate-docs.ps1git diff --checkThe local excluded profile-reader test was executed and passed in current hosted Tray CI (5,273 passed, zero skipped), so the local exclusion is no longer an entirely missing automated case. CI also ran Dev settings (31 passed). This does not authorize or imply reading the local user's real profile.
Current hosted Shared: 5,135 passed/11 skipped; Connection: 1,746 passed/1 skipped; FileWorker: 52 passed; CLI: 141 passed. UI reports: Tray UI 645/7, functional UI 19/0, accessibility 21/13, fixture app 38/0, fixture UI 81/0, released-profile fixture 1/0, hardware profiles 12/0 (passed/skipped). SetupEngine 2,597/4; Tray integration 64/4. Exact results are in the linked run's artifacts. Do not add local and CI counts as independent behavior coverage.
A bounded independent rubber-duck implementation/proof-plan review of the eight review-fix files found no blocking introduced defects before publication. It is not a current-head exhaustive review of the entire feature.
Real Behavior Proof
cd64009240995a6f1af1b4d0662a98053befad21; CI mergeda744ee3dcb7b314f78ea64b6fc1855ab1275740, identical treeec026eae844a2101c9d3312d590fd4fb499e7533.Yes/No/N/A) Yes for artifacts:test-results-core(artifact 13554769452),test-results-tray(13555359055),test-results-ui(13556502414), and three E2E result artifacts were downloaded from the linked current-head run. No inspected Sandbox-specific screenshot or rejected-budget pixels were found.fs.listDir/terminal.upload; native ARM64 all-eight invocation and historical owner-failure disposition; rendered rejected-budget state; latest-stable signed/MSIX/Inno installed upgrade, Smart App Control and native-Gateway lifecycle. Setup/connect CI passed 53 and skipped 7, including native MXCsystem.runcases; revocation and network recovery passed 1 and 2 respectively. Those skips are not containment proof.Security Impact
Yes/No) Yes: eight file/directory commands, preserving their respective agent/operator authority.Yes/No) Yes: immutable MCP authentication-generation publication and generation-fenced file-channel admission. Rotation regressions above pass; full native final-effect authority proof remains outstanding. Gateway credential precedence/storage is intentionally unchanged.Yes/No) Yes: authenticated file-transfer control/progress/input on existing Gateway and loopback MCP transports.Yes/No) Yes: verified fixed worker invocation and typed commands; local-onlyapp.*remains local.Yes/No) Yes: file operations use existing Sandbox grants; browser/Canvas adapters share that boundary.Yes, explain the risk and mitigation: retained native identities, no-follow/hardlink checks, bounded streams/archive inventories, integrity checks, no-clobber rules and identity-owned cleanup constrain access. Worker-code/scratch rights stay distinct from caller data. Final queued admission revalidates approval. Signed worker bytes are hashed before embedding; official missing-signed-worker inputs fail closed. Positive unsupported-Windows host compatibility is explicit, not a fallback on supported-Windows errors. Passing owner regressions are not a blanket security acceptance claim.Compatibility and Migration
Yes/No) Yes, intended for existing command/wire contracts, with browser/Canvas Sandbox-access tightening disclosed above. Current owner-level persistence and legacy-upload migration tests pass; installed-product acceptance remains unverified.Yes/No) Yes:SandboxMaxTransferBytes,SandboxUploadStagingPath, bounded executor-private cache and upload-root inventory. No separate file permission store/toggle or caller-controlled execution environment.Yes/No) No manual migration intended. Unknown/uncertain cache/upload state is not adopted or deleted by name alone. Existing valid legacy upload records migrate under ownership checks, with current-head passing cases.Review Conversations
All three inline threads were verified resolved on GitHub. The older top-level ClawSweeper acceptance checklist is being re-reviewed, not silently treated as satisfied. The platinum rating is not self-assigned.