Skip to content

feat(kiloclaw): bump openclaw to 2026.3.23#1678

Draft
evanjacobson wants to merge 4 commits intomainfrom
feat/kiloclaw-bump-openclaw-2026-3-23
Draft

feat(kiloclaw): bump openclaw to 2026.3.23#1678
evanjacobson wants to merge 4 commits intomainfrom
feat/kiloclaw-bump-openclaw-2026-3-23

Conversation

@evanjacobson
Copy link
Copy Markdown
Contributor

@evanjacobson evanjacobson commented Mar 27, 2026

Important Note

2026.03.22 was the initial target for this update, but it does not ship with the Control UI (it is broken).

Summary

  • Bump OpenClaw from 2026.3.13 to 2026.3.23 (covers v2026.3.13-1, v2026.3.22, and v2026.3.23)
  • Remove dead CLAWDBOT_STATE_DIR env fallback (removed upstream in v2026.3.22)
  • Add streamchat to detectChannels() for telemetry completeness
  • Correct MCP migration TODO to reflect actual blocker (HTTP transport, not schema version)
  • Update version references in .dev.vars.example and e2e/docker-image-testing.md
  • Expand default Fly region list

Upstream release notes reviewed

Full setup/onboarding impact analysis performed across all three releases (~200 changes flagged, ~136 setup-related). Key findings:

Breaking changes (upstream)

  • Env vars: CLAWDBOT_* / MOLTBOT_* removed — must use OPENCLAW_* (cleaned up in this PR)
  • Plugin SDK: openclaw/extension-api removed, new surface is openclaw/plugin-sdk/*
  • Plugin install: now prefers ClawHub before npm
  • Exec sandbox: blocks JVM/glibc/.NET env vars from host exec
  • jq removed from safe-bin: agents now get prompted before running jq (we're accepting this behavior — jq is still installed in the container, exec security is allowlist + on-miss so it's a prompt, not a block)

Verified safe

  • streamchat plugin: verified compatible — already uses openclaw/plugin-sdk, unique channel ID, peerDependencies: openclaw >=2026.2.13
  • mcporter: not bundled with OpenClaw — still an external package we pin at 0.7.3 in our Dockerfile, unaffected by the bump

Benefits from upgrade (no code changes needed)

  • Gateway cold start ~10x faster (compiled dist/extensions)
  • Model prewarm before channel startup (no more Unknown model on first message)
  • openclaw configure no longer stalls
  • Config validation crash fix (memory-core implicit slot)
  • WS handshake timeout raised to 10s
  • ~2x memory regression fix from v2026.3.13-1
  • Bundled plugin sidecars restored in npm package (v2026.3.23)
  • Stale plugins.allow IDs now warnings instead of fatal errors (v2026.3.23)

Deferred

  • MCP migration to config.mcp.servers: schema exists but OpenClaw's Pi MCP bridge only supports StdioClientTransport — no HTTP/SSE transport for remote servers (AgentCard, Linear). mcporter stays until upstream adds HTTP transport. TODO comment updated.

Test plan

  • Build Docker image and verify openclaw --version reports 2026.3.23
  • Identify breaking changes
  • Identify changes to default onboarding
  • Start instance with telegram + streamchat channels, confirm gateway boots cleanly
  • Verify MCP servers (AgentCard, Linear) still work via mcporter
  • Confirm agent can use jq after approval prompt

kilo-code-bot bot and others added 3 commits March 27, 2026 12:22
- Bump Dockerfile pin from 2026.3.22 to 2026.3.23
- Update .dev.vars.example and e2e doc version refs to 2026.3.23
- Remove dead CLAWDBOT_STATE_DIR env fallback (removed upstream in 2026.3.22)
- Add streamchat to detectChannels() for telemetry completeness
- Expand default Fly region list from eu,us to specific regions
The TODO was gated on config schema support (>= 2026.3.14), but the
actual blocker is that OpenClaw's Pi MCP bridge only supports
StdioClientTransport — no HTTP/SSE transport for remote servers like
AgentCard and Linear.
const sc = isRecord(ch.streamchat) ? ch.streamchat : {};
const channels: string[] = [];
if (tg.enabled && tg.botToken) channels.push('telegram');
if (dc.enabled && dc.token) channels.push('discord');
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Telemetry-only addition: streamchat was already configured as a channel in config-writer.ts but was missing from detectChannels(), so it wasn't being counted in the enabledChannels telemetry payload. This adds it alongside the existing telegram/discord/slack detection using the same pattern (enabled && apiKey). No runtime behavior change.

*
* TODO: When OpenClaw's Pi MCP bridge gains HTTP/SSE transport, migrate these
* definitions into generateBaseConfig() using `config.mcp.servers` and remove
* mcporter. See PR #48611 in openclaw/openclaw.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mcporter is not bundled with OpenClaw — it's a separate npm package we pin at 0.7.3 in our Dockerfile (npm install -g mcporter@0.7.3). The config.mcp.servers schema exists in openclaw.json since v2026.3.14, but OpenClaw's embedded Pi MCP runtime only supports StdioClientTransport (no HTTP/SSE). Since AgentCard and Linear are remote HTTP endpoints, mcporter stays until OpenClaw adds HTTP transport. Config file lives at /root/.openclaw/workspace/config/mcporter.json.

# Install OpenClaw
# Pin to specific version for reproducible builds
RUN npm install -g openclaw@2026.3.13 \
RUN npm install -g openclaw@2026.3.23 \
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upstream v2026.3.22 removed jq from the safe-bin allowlist. With our exec config (security: 'allowlist', ask: 'on-miss'), agents will now be prompted before running jq instead of it executing automatically. jq is still installed in the container — this is a UX change, not a breakage. We're accepting the new behavior rather than overriding the allowlist.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

THis needs to be removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs to be removed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant