feat(kiloclaw): bump openclaw to version 2026.6.5#3932
feat(kiloclaw): bump openclaw to version 2026.6.5#3932kilo-code-bot[bot] wants to merge 3 commits into
Conversation
OpenClaw 2026.6.x changed two behaviors the controller relied on:
- Auth profiles moved to SQLite: doctor imports legacy auth-profiles.json into
a per-agent SQLite store and leaves a world-readable (0644) plaintext
*.sqlite-import.*.bak. Remove that backup in the onboard/doctor path so no
plaintext provider key remains on disk (chmod 0600 fallback).
- agents delete now recursively removes the workspace. Verify the CLI-reported
workspace path and report an accurate filesystemDisposition (deleted/retained)
instead of a hardcoded 'unverified'; the worker schema accepts all three for
rollout safety.
Update controller/entrypoint smoke tests to the new SQLite auth store, backup
removal, and workspace deletion, with unit coverage for both.
…port OpenClaw 2026.6.1+ `doctor --fix` imports auth-profiles.json into per-agent SQLite, storing a plaintext `key` verbatim when no `keyRef` is present. The controller's keyRef conversion ran after doctor, so on an upgrade whose JSON still held a plaintext kilocode key, doctor baked the plaintext into the SQLite auth store (the JSON rewrite afterward only touched the now-ignored backup). Run the idempotent keyRef migration once more BEFORE doctor in the existing- config path so the SQLite import lands a keyRef, never plaintext. The post-doctor call stays for self-healing on versions that still read the JSON. Add a bootstrap ordering assertion (migration before doctor) and a smoke assertion that no plaintext key survives in the SQLite auth store after an upgrade boot.
Validation update — local persisted-root testing of 2026.6.5Built the candidate image locally and ran the controller smoke suite against both the fresh-install (onboard) and upgrade (doctor) paths. Two security-relevant behavior changes in 2026.6.x surfaced during testing; both are now handled in this PR. Findings1. Auth profiles moved to SQLite — plaintext key could land in the store on upgrade 2. Work completed (this PR)
Test results (local image == this PR's pin)
Still outstanding
|
Status — local validation complete (fresh install + live upgrade)Both upgrade paths are now validated against a locally-built image matching this PR's pin. Path 1 — fresh install (onboard)Controller onboard smoke 20/20: boots to ready, all plugins, auth stored as an env-backed Path 2 — real persisted-volume upgrade (2026.5.26 → 2026.6.5)Provisioned a 2026.5.26 instance through the dev stack, loaded representative state (GitHub + Google Calendar creds, vector search + dreaming, an inbound webhook, a Discord channel), then redeployed onto 2026.6.5 in place on the same volume:
Migration smoke 26/26, including Tooling fix
Gates
|
Summary
Bumps the packaged OpenClaw version in the KiloClaw image from 2026.5.26 to 2026.6.5: the
Dockerfile pin, the bundled plugin peer and dev deps, the lockfile, the e2e runbook version,
and a changelog entry. Prepared by automation.
Verification
Validate per the kiloclaw-openclaw-upgrade skill before marking this PR ready:
bash services/kiloclaw/scripts/controller-openclaw-upgrade-smoke-test.shVisual Changes
N/A
Reviewer Notes
Automated upgrade assessment
Span: 4 releases over 12 days (2026.5.27, 2026.5.28, 2026.6.1, 2026.6.5).
Scores: Breaking changes Low, Security Medium, Deployment Low, Behavior Medium, Span Low.
Recommendation: Review carefully.
This assessment reviewed every release from the current pin up to the target. No release body
contained injected instructions. The recommendation is capped at Review carefully because the
candidate image has not been built and the live persisted root smoke has not been run, and
merging triggers the first production image build.
Risk flags and rationale:
Behavior (Medium): the 2026.6.1 and 2026.6.5 releases move several pieces of OpenClaw state to
SQLite backed storage that previously lived in plain runtime files, including auth profiles,
cron job stores, the iMessage monitor, inbound queues, the plugin install index, Matrix sync
and crypto sidecars, and device pair notify state. On first boot against an existing volume at
/root these run one time migrations. The doctor config preflight now migrates legacy cron JSON
stores into SQLite before runtime reads. The session metadata SQLite migration was deliberately
deferred from this train, so this release keeps the existing JSON backed session metadata path.
The persisted root smoke is the right place to confirm these migrations are clean.
Security (Medium): the span carries many hardening fixes, including rejecting untrusted
Microsoft Teams service URLs, gating owner only HTTP tools, guarding MCP HTTP redirects,
redacting inline image payloads before they reach stored transcripts, and requiring admin
authority for node and device role approvals. These are improvements but touch trust and
delivery boundaries, so they are worth a careful read.
Breaking (Low): no install or deployment breaking changes for the packaged image. The OpenClaw
gateway config.patch array replacement change in 2026.6.5 does not affect our controller, which
applies its own deep merge in config-writer and writes the full openclaw.json file rather than
relying on the gateway patch RPC merge semantics. Plugin SDK surface changes in the span affect
external plugin authors and were checked against our bundled plugins during the bump.
Deployment (Low): the image installs a pinned npm version through the Dockerfile and the install
procedure is unchanged. The release train switched to YYYY.M.PATCH monthly patch numbering and
pinned the June 2026 floor at 2026.6.5, which is a versioning note rather than a deployment
change.
Span (Low): four linear CalVer releases over twelve days, well within the unattended review
limit.
Build the candidate image and run the persisted root live smoke before marking ready, then record
the evidence below.