-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Bug]: SecretRef file provider broken on Windows 11 26200 — icacls /sid unsupported, preflight validator ignores allowInsecurePath #89223
Copy link
Copy link
Open
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Summary
secrets.providers.<name>.source: "file"is broken on Windows 11 (build 26200) in OpenClaw 2026.5.28. Two compounding bugs:icacls /sidis not a valid flag on modern Windows builds —icacls.exereturns exit 87 ("Invalid parameter").inspectWindowsAcltreats this as failure (ok: false), so every file-source secret resolves tosource: "unknown"andassertSecurePermissionsthrowsACL verification unavailable on Windows for <path>.allowInsecurePath: trueis silently ignored by the runtime config-write preflight validator (preflightRuntimeSnapshotWrite→refreshHandler.preflight→mutate-DajLmhPa.js:166). It works for the staticsecrets auditresolver but not forconfig.patch, so any subsequent config write fails withactive SecretRef resolution failed.Together, this makes SecretRef file-source unusable on modern Windows for any non-trivial setup that ever needs to mutate config (e.g., toggling
dreaming.enabled).Related: #70640 (closed) introduced
allowInsecurePathas the fix for the original ACL-verification failure. That fix is incomplete because (a) it doesn't address the underlyingicaclsregression and (b) it's not honored consistently across resolver entry points.Environment
2026.5.2826200Reproduction
Source-level diagnosis
Tracing the failure path through the bundled dist:
permissions-ya3cPkFH.js:340—inspectWindowsAclcallsicacls.exe <path> /sid. The/sidswitch does not exist inicaclson Windows 11 26200; the executable returns exit 87 and the inspector reportsok: false.fs-safe-DYWmA8_q.js:837—assertSecurePermissionsthrows "ACL verification unavailable on Windows for ..." whenever the inspector returnsok: falseandallowInsecurePathis not honored at that call site.resolve-BB3PkFpN.js:121-127— the static resolver honorsallowInsecurePathcorrectly (this is whysecrets auditclears once the flag is set).mutate-DajLmhPa.js:166— the runtime config-write path raisesactive SecretRef resolution failedwithout consultingallowInsecurePath. This is the regression that makes the escape hatch incomplete.Suggested fix
icacls /sidcall. The plainicacls <path>output already includes the SIDs and ACE list in a parseable form. Either drop the unsupported flag, or detect exit 87 and fall back to plainicacls.allowInsecurePathconsistently across all resolver entry points, includingpreflightRuntimeSnapshotWrite/refreshHandler.preflight. Today it's only respected by the static audit path.source: "unknown"to a warning (not a hard fail) when the file is owned by the current user and has restrictive permissions per Windows owner-rights conventions. That removes the need for an opt-in flag in the common single-user case.Impact
Effectively forces users on modern Windows to keep gateway tokens and provider API keys plaintext in
openclaw.json— which is exactly what the SecretRef machinery exists to prevent — or accept that they can't ever issue a runtime config write. I had to revert two SecretRef migrations to plaintext in order to enablememory-core.dreaming.enabled.🤖 Filed by Archimedes (Claude Code) on behalf of @CameronWeller