Repository navigation
build(runtime): bump openclaw to b0961419e46 - #3914
Conversation
Pins OpenClaw b0961419e46 (upstream #186395: personal_instructions declares its action as a string enum, so a Gateway tool policy can narrow it; finding 2683). Package version 2026.10.8, agent database schema 38. The Control UI reconnect patch needed a context-only rebase. Also swaps the two source links in the revision flow doc (finding 2740).
|
🦞👀 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 changesUpdates the bundled OpenClaw source to fix action-restricted personal instructions, advances the Agent schema gate to 38, and refreshes patch provenance and documentation links. Example: An Agent allows personal_instructions with actions ["get"].
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 4 items remain Keep this PR open: it carries a useful upstream fix that current main lacks, and its maintainer-authored direction is approved; no discrete introduced code defect was established. Priority: P2 Before merge
FindingsNone. Tests
Agent review detailsHow this fits togetherOCC validates saved Agent configuration and composes Gateway policy; runtime images supply the upstream tools, while startup wrappers migrate retained Agent databases before starting OpenClaw. flowchart LR
A[Saved Agent configuration] --> B[OCC policy validation]
B --> C[Runtime startup wrapper]
D[Retained Agent database] --> C
C --> E[OpenClaw Doctor]
E --> F[Gateway and Harness]
F --> G[Personal instructions tool]
Technical reviewBest possible solution: Adopt the upstream schema repair through the existing runtime pin and migration owners after policy-boundary, upgrade and required native-image verification is complete. Do we have a high-confidence way to reproduce the issue? The old tool declaration and inspected Gateway narrowing code establish the reported exception for a get-only policy; the linked upstream PR also records the same before-and-after probe, but this review ran no target code. Is this the best way to solve the issue? Updating the pinned dependency uses the existing owner and repairs the incompatible schema without duplicating policy logic; the schema gate and patch hashes move consistently with it. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 7f9d3e849803. Merge-risk optionsMaintainer options:
Provenance checked
TestingProof path: none. SecurityNeeds attention: No concrete authorization or supply-chain regression was established, but the repaired personal-instructions path still needs final-effect authorization evidence. EvidenceWhat I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
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 Reviewed October 27, 2026, 9:00 PM ET / October 28, 2026, 01:00 UTC. |
The agent schema move changes the workspace-node program, so the shim's matcher can no longer rebuild either pinned pre-#3872 payload and nothing can match them (IRS2 sandbox-driver-startup failed on the pinned hash). Remove the shim, its pins, matchesWorkspaceNodeStateUpgrade and its test case, as the shim's TODO asks; adoption is exact-spec only again.
…ma move A dedicated Codex Agent's OpenShell Sandbox created before this pin bump no longer matches the workspace-node program, so the Driver refuses it when OCC provisions that version again. Add a breaking-changes entry with the message and the redeploy step.
|
Free's clanker here (an AI agent working on Free's behalf). Independent review of this bump: no blocking issues.
I pushed c45fd34 (docs only). It adds a 2026-10-28 breaking-changes entry: a dedicated Codex Agent's OpenShell Sandbox created before this upgrade is refused when OCC provisions that version again, until a new version is deployed. CI Required and First Agent Smoke pass on that head. |
Problem
An Agent tool policy that allows
personal_instructionswith a list of actions (for exampleactions: ["get"]) saves, but the pinned OpenClaw fails every model turn with "Gateway tool policy requires personal_instructions to declare a top-level string action field". The tool declared itsactionas a union of literals, which has no top-leveltype: "string", so the policy cannot narrow it. openclaw/openclaw#186395 declares it as a string enum, like the other action tools. It is merged asb0961419e46.Change
deploy/runtime/openclaw-source.jsonselectsb0961419e46b72a7b5e0b5f3fd509b58d1bbfbfc, upstream main at the #186395 merge (49 commits after8e328edad39). Upstream CI passed on that commit. I did not take the later upstream commits: they include a change to how same-requester steering keeps its prepared permissions (fix: same-requester guidance queues after reconnecting openclaw#186378) that needs its own review, and nothing OCE needs. The source archive SHA-256 and build timestamp are updated; two downloads gave the same hash.2026.10.7->2026.10.8(upstream release close-out):WORKSPACE_DEFAULTS_VERSIONand the runtime README. The workspace templates did not change, soWORKSPACE_DEFAULTS_IDstays.OPENCLAW_AGENT_DATABASE_SCHEMA_VERSIONmoves with it, so the startup wrappers run Doctor on agent databases at 37 before the Gateway starts, as for earlier schema moves. The shared state schema stays 35.openclaw-control-ui-browser-reconnect.patchneeded a context-only rebase inapp-shell-view.tsx(upstream added session rows above the patched line, fix(ui): identify source sessions in approval titles openclaw#186030) and a moved hunk offset inlayout.css; the patch content is the same. New hash in the Dockerfile,build-runtime-assets.mjsand the runtime image test. Upstream does none of the patches' work yet, so none is dropped.GATEWAY_TOOL_POLICY_SOURCE_COMMIT, the workspace defaults source comment and the upstream Dockerfile link move to the new commit.matchesWorkspaceNodeStateUpgradeand its test case.openshell.ts,runtime-entrypoints.tsandsandbox-driver-startup.test.mjsare byte-identical to their state before Adopt existing Codex workspace-node Sandboxes after the state permission fix #3888, and the flow doc drops the adoption sentence.docs/flows/configuration-driver/persistence-and-revisions.mdpointed at each other's files: "the settings rules" now linksconfiguration-settings.tsandadmitGatewaySecurityDefaultslinksgateway-security-defaults.ts.docs/guides/deploy/breaking-changes.mdgets a 2026-10-28 entry: a dedicated Codex Agent's OpenShell Sandbox created before this upgrade is refused when OCC provisions that version again, until a new version is deployed (it names the refusal message and the step).OCE had no save-time refusal or doc caveat for
personal_instructionsactions, so there is nothing to remove.Verification
be672b02b8, with no cached results: CI Required PASS (static, the baseline, browser, Postgres and Keycloak lanes, images-runtime-startup 1/2/3, images-packaging, runtime-image-fixture, the k3d lanes, logging-collector) and First Agent Smoke pass. The image build runs the patched Control UI bridge tests. GitHub CI Required is green on the same head.b0961419e46; the Control UI patch was rebased with a three-way apply, and its content is unchanged.main(the real Gateway tool policy code and the realpersonal_instructionstool from the image's bundled OpenClaw, policyallow: ["personal_instructions"], actions: { personal_instructions: ["get"] }):main(8e328edad39)b0961419e46)actionschemaanyOfof twoconststrings{type: "string", enum: ["get", "set"]}action.enumis["get"]getallowed,setdeniedgetallowed,setdeniedactions: []OCE's save-time validation accepts the policy. An embedded Gateway with this policy, started by the runtime wrapper beside a stand-in model provider, answered a chat turn on both images, with and without code mode. In that check the model called
tool_describeanddispatch_actionforpersonal_instructionsand got "Unknown tool id": OpenClaw adds the tool only when the Gateway has two or more user profiles, so a single-user Gateway never builds it and never reaches the failing narrowing. The failure applies to shared Agents with several users.sandbox-driver-startup.test.mjspasses (123 tests) on the remote test VM with the shim removed.Risks
security.preset:src/config/security-presets.tsandmerge-missing.tsdid not change between the pins, so the preset fills the same keys and OCE's two filled values still apply. No new code reads the preset or the two settings.gateway-tool-policy.ts, the Codex dynamic tool catalog and the automation caller-scope code did not change, and no core tool was added. Changes that reach OCE's allowed tools:personal_instructionsnow declares{type: "string", enum: ["get", "set"]}(this fix).automations(fix: keep conversation prompts stable across continuation turns openclaw#186338): a conversation that continues a scheduled run now keeps the full action list instead of the self-only list; the execution guard still scopes each call. The full list now also namesscratch_get,scratch_set,record_resultandnext_check. OCE's baseline already listsnext_checkand does not list the other three, so the policy keeps them out. No action OCE allows changed meaning.tools.gatewayPolicy.models.providers.*.remotesetting is new (watchdog timing only). It is an addition, so no saved Configuration changes meaning.