Skip to content

Corrections

Read this before starting work. These are real mistakes that cost time/money.

  • Never use ~ in tool calls — it doesn’t resolve. Always use full paths: /home/winnie/.openclaw/workspace/...
  • GitHub issue: openclaw/openclaw#30669
  • Always timeoutSeconds=0 on sessions_send — nested lane has concurrency=1. Without fire-and-forget, calls queue and timeout at 30s even though the message was delivered.
  • sessions_list always messageLimit: 0 — message payloads include thinking blocks + tool calls = 20K+ tokens per call. Burned 111K context in 2hrs from this.
  • Auth:yes ≠ quota available — always test-complete before assigning. The anthropic-direct provider 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 status before restart.
  • Verify env vars exist before adding auth profiles — referencing a missing env var crashes the gateway on restart.
  • Never restart gateway mid-conversation — drops all active sessions including Chris’s chat.
  • Backup config before edits — one bad config = crash loop.
  • 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.
  • 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.
  • 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:

  1. sessions_spawn with runtime: "acp" targeting Codex as harness
  2. Sub-agent’s task brief instructs it to invoke codex / gemini / claude -p via exec

Raw sub-agents are only acceptable for non-coding tasks (research, comms, monitoring). Free CLIs first.