Corrections
Corrections Log
Section titled “Corrections Log”Read this before starting work. These are real mistakes that cost time/money.
File Paths
Section titled “File Paths”- Never use
~in tool calls — it doesn’t resolve. Always use full paths:/home/winnie/.openclaw/workspace/... - GitHub issue:
openclaw/openclaw#30669
Agent Comms
Section titled “Agent Comms”- Always
timeoutSeconds=0onsessions_send— nested lane hasconcurrency=1. Without fire-and-forget, calls queue and timeout at 30s even though the message was delivered. sessions_listalwaysmessageLimit: 0— message payloads include thinking blocks + tool calls = 20K+ tokens per call. Burned 111K context in 2hrs from this.
Provider Auth
Section titled “Provider Auth”- Auth:yes ≠ quota available — always test-complete before assigning. The
anthropic-directprovider leaked ~$15 API credits in 2 days before we caught it. - Never add unknown keys to openclaw.json — causes gateway crash. Validate with
openclaw gateway statusbefore restart. - Verify env vars exist before adding auth profiles — referencing a missing env var crashes the gateway on restart.
Config Safety
Section titled “Config Safety”- Never restart gateway mid-conversation — drops all active sessions including Chris’s chat.
- Backup config before edits — one bad config = crash loop.
Model Selection
Section titled “Model Selection”- MiniMax M2.5 has 88% hallucination rate (AA verified) — never use for research or factual work. OK for heartbeats.
- Gemini research reports need verification — first-pass research had fabricated claims and MiniMax bias. Always cross-validate.
Sub-agents
Section titled “Sub-agents”- Never go silent after sub-agent completes — always QA results and proactively message Chris. NO_REPLY after a completion = broken workflow. Chris should never have to ask “is it done?”
- Don’t busy-poll sub-agents — they auto-announce on completion. Check only on-demand.
- Debug loops → spawn out — if past the first fix attempt, spawn a dev sub-agent. Don’t burn orchestrator context on read→test→fix→test cycles.
WSL2 Constraints
Section titled “WSL2 Constraints”- 7.4GB RAM — avoid running multiple Claude Code / Codex sessions simultaneously. Server crashed twice under heavy load.
- Gemini CLI v0.29.5 hangs in headless mode — use OpenClaw
google-gemini-cli/provider instead. (v0.30.0 fixed this)
Skill creation done inline instead of delegated (2026-03-01)
Section titled “Skill creation done inline instead of delegated (2026-03-01)”What happened: Created systematic-debugging skill file + appended to 2 dev AGENTS.md files inline on Opus, burning ~13k tokens. Why it was wrong: Single-file creation with clear spec = textbook sub-agent task. Zero ambiguity, no orchestration needed. Rule: Any file creation/editing task with a clear spec → spawn a sub-agent. Winnie writes the brief, sub-agent writes the files. Especially for skills, docs, and config that don’t need Opus judgement.
Claude Code run via exec instead of sub-agent (2026-03-01)
Section titled “Claude Code run via exec instead of sub-agent (2026-03-01)”What happened: Ran claude -p --model opus via raw exec to build the horse profile scraper. Process completed but: (a) no auto-announce — had to manually poll for completion, (b) same session’s exec wrapper reaped the backfill process that was running alongside it, (c) burned orchestrator context monitoring it.
Why it was wrong: AGENTS.md says “Any code changes → sessions_spawn”. The claude-code-orchestration skill showed exec patterns and I followed the tool docs over my own operating rules.
Rule: ALL Claude Code / dev work → sessions_spawn(agentId="dev-backend", task="...", model="anthropic/claude-opus-4-6"). Never raw exec for coding tasks. Sub-agents auto-announce, survive session lifecycle, and don’t burn PM context. Exec is for git log, ls, cat only.
Coding sub-agents spawned without CLI tools (2026-03-01)
Section titled “Coding sub-agents spawned without CLI tools (2026-03-01)”What happened: Frankel spawned a dev-backend sub-agent for coding work. The sub-agent worked as a raw OpenClaw agent doing read→exec→write cycles instead of invoking Claude Code CLI. Why it was wrong: Raw sub-agents use generic read/write/exec for file operations. Claude Code CLI has optimised coding tools — diffs, search, inline edits — that burn far fewer tokens for the same work. Rule: ALL coding sub-agents MUST invoke a CLI tool — priority order: Codex (free) → Gemini CLI (free) → Claude Code (paid, last resort). Two ways to achieve this:
sessions_spawnwithruntime: "acp"targeting Codex as harness- Sub-agent’s task brief instructs it to invoke
codex/gemini/claude -pvia exec
Raw sub-agents are only acceptable for non-coding tasks (research, comms, monitoring). Free CLIs first.