# Update Plan: Claude Code & OpenClaw *Created: 2026-02-04* ## Principles 1. **Never update blind** — check what changed before applying 2. **Always be able to rollback** — save current version before updating 3. **Verify after update** — gateway must start and respond before declaring success 4. **Don't update during active work** — schedule for low-activity windows 5. **James owns this** — no manual intervention from Johan unless something breaks badly ## Schedule **When:** Daily at 5:30 AM ET (during Johan's second sleep block) - Low-activity window, no active conversations - If update fails, James has time to rollback before Johan wakes (~9-10 AM) **Frequency:** Check daily, apply only when new versions exist. ## Update Process (automated script) ### Step 1: Check for updates (no changes yet) ``` - Read current versions (openclaw --version, claude --version) - Check npm registry for latest versions - If both current → exit (nothing to do) - Log what's available ``` ### Step 2: Snapshot current state ``` - Record current versions to rollback file - Backup gateway config (~/.openclaw/openclaw.json) - Verify gateway is healthy BEFORE updating (curl health endpoint) ``` ### Step 3: Update OpenClaw (if new version) ``` - npm i -g openclaw@latest - Run: openclaw doctor (migrations, config fixes) - Restart gateway: systemctl --user restart openclaw-gateway - Wait 10 seconds - Health check: openclaw health / curl gateway - If FAIL → rollback immediately (npm i -g openclaw@) ``` ### Step 4: Update Claude Code (if new version) ``` - npm i -g @anthropic-ai/claude-code@latest - Verify: claude --version - (No restart needed — Claude Code is invoked per-session) ``` ### Step 5: Report ``` - Log results to memory/update-log.md - Update dashboard status API - If anything failed: create task for Johan ``` ### Rollback ``` - npm i -g openclaw@ - openclaw doctor - systemctl --user restart openclaw-gateway - Verify health ``` ## What the script does NOT do - Update during active conversations - Update if the gateway is unhealthy to begin with - Continue if OpenClaw update fails (stops, rollback, alert) - Update both at once if OpenClaw fails (Claude Code update skipped) ## Files - **Script:** `~/clawd/scripts/safe-update.sh` - **Rollback file:** `~/clawd/data/update-rollback.json` - **Update log:** `~/clawd/memory/update-log.md` - **Cron:** 5:30 AM ET daily ## Open Questions for Johan 1. **Auto-apply or approve?** Script can either apply automatically at 5:30 AM, or just notify and wait for approval. Recommendation: auto-apply with rollback. 2. **Channel:** Stay on `stable` or use `beta`? Currently on stable (default). 3. **Hold on major version bumps?** e.g., if OpenClaw goes from 2026.2.x to 2026.3.x, pause and ask first?