Migrating OpenClaw agents to Claude Code after third-party harness deprecation

Anthropic ended support for third-party harnesses, requiring users to migrate their OpenClaw agents to Claude Code. One developer successfully moved 17 agents (10 platform promo agents and 7 content pipeline crons) running on a Max subscription in about four hours.
Migration steps
The developer created a CLAUDE.md file in each OpenClaw workspace directory as the entry point, telling Claude "you are this agent, read HEARTBEAT.md, follow it step by step." Each file was about 20 lines.
A bash wrapper script was created to run:
claude -p --model sonnet --dangerously-skip-permissionswith output piped to Slack via curl. OpenClaw heartbeats were replaced with macOS crontab entries using the same intervals and schedule.
Technical details
The claude binary is located at ~/.local/bin/claude, which isn't in cron's default PATH. Since cron can't access macOS Keychain, the OAuth token must be set as an environment variable with CLAUDE_CODE_OAUTH_TOKEN in crontab.
The --bare flag breaks authentication for subscription users by skipping OAuth.
The one-liner per agent was:
claude -p --model sonnet --dangerously-skip-permissions --append-system-prompt "You are the Reddit agent. Read CLAUDE.md first, follow HEARTBEAT.md." "Execute your heartbeat."Browser automation
Agents using OpenClaw's CDP browser can continue using the same exec openclaw browser commands if the gateway remains running, or switch to Claude in Chrome or Playwright MCP.
The migration preserved all existing agent logic files: HEARTBEAT.md, PLAYBOOK.md, SOUL.md, and BROWSER-*.md files required zero rewriting.
📖 Read the full source: r/openclaw
👀 See Also

SOUL.md rules drift in long AI agent sessions and how to fix it
SOUL.md rules work perfectly for the first 10-15 messages but start drifting around message 20-30 as conversation context overrides the initial system prompt. The solution is to use /new more aggressively to reset sessions before each distinct task.

Fix OpenClaw Slowdown in Long Sessions: contextInjection continuation-skip for llama.cpp Cache
A real-world fix for OpenClaw sessions that get slower over time: set contextInjection to continuation-skip to preserve llama.cpp prompt cache, cutting prompt eval from 130s to 1.3s.

OpenClaw Update Fix: Resolving Telegram Exec 'allowlist miss' Errors
A recent OpenClaw update caused Telegram exec commands to fail with 'exec denied: allowlist miss' errors even after disabling approvals. The fix requires enabling elevated access, configuring exec security explicitly, and updating both openclaw.json and exec-approvals.json files.

Debugging OpenClaw + Ollama Local Model Timeouts: Five Fixes for Silent Failures
A developer identified five root causes for OpenClaw agents silently timing out with local Ollama models like Gemma 4 26B, including a blocking slug generator, a 38K character system prompt, and hidden timeouts. The fixes involve disabling hooks, modifying configs, and adjusting Ollama settings.