Tools
Update Toolkit
Diagnostic-driven toolkit for stabilizing OpenClaw v2026.4.x installations. Recovery recipes for fratricide loops, cost explosions, plugin conflicts, session leaks, and more.
README
# OpenClaw Update Toolkit
> **Diagnostic-driven recovery toolkit** para estabilizar instalaçÔes OpenClaw rodando entre **v2026.4.24 e v2026.4.29**.
> Cole este repo no Claude Code, ele faz tudo pra vocĂȘ.
[](LICENSE)


---
## đ Como usar â em 1 mensagem
Cole isso no Claude Code do seu computador (Mac/PC). Substitua `<seu-vps-ip>` pelo IP da sua VPS:
```
LĂȘ https://github.com/totobusnello/openclaw-update-toolkit/blob/main/CLAUDE-INSTRUCTIONS.md
e arruma minha instalação OpenClaw seguindo o protocolo.
SSH: root@<seu-vps-ip>
```
Pronto. O Claude vai:
1. Conectar via SSH na sua VPS
2. Rodar diagnĂłstico read-only (~3min)
3. Apresentar plano de ação organizado por severidade
4. Pedir autorização do que aplicar
5. Aplicar com backup automĂĄtico + validar
---
## đŻ Quantas autorizaçÔes vocĂȘ vai dar
Modo **hĂbrido por severidade** â sem floreio, sem 12 perguntas chatas:
| Bateria | VocĂȘ responde | Quando | Tempo mĂ©dio |
|---------|---------------|--------|--------------|
| **đŽ ALTA â 1 autorização batch** | "vai" / "sim" | Sempre que o diagnĂłstico achar problema crĂtico (custo ativo, fratricide, plugin duplicate poller, credentials sem chattr) | ~3min total pra todas |
| **đĄ MĂDIA â 1 pergunta por recipe** | "ok" / "pula" | Pra cada recipe MĂDIA aplicĂĄvel (RelayPlane, fallback chain, dmScope, sessions, delivery-queue) | ~15s cada |
| **đą BAIXA â sĂł se pedir** | VocĂȘ fala "tambĂ©m as cosmĂ©ticas" se quiser | Patches cosmĂ©ticos (label OAuth, cleanup disk) | opcional |
**Pior caso (instalação muito danificada):** ~5 autorizaçÔes totais.
**Caso comum:** 2-3 autorizaçÔes totais.
**Caso ideal (instalação quase ok):** 1 autorização ou nenhuma.
---
## đ O que esse toolkit resolve
Quando vocĂȘ atualiza o OpenClaw entre versĂ”es `2026.4.24 â 2026.4.29`, **vĂĄrios problemas silenciosos** podem aparecer â desde gateway crash loops atĂ© cobranças inesperadas na Anthropic API. Esses problemas raramente estĂŁo na documentação oficial e custam horas pra debugar do zero.
### Sintomas que vocĂȘ pode estar tendo
| Sintoma observĂĄvel | O que estĂĄ acontecendo | Recipe |
|--------------------|------------------------|--------|
| Gateway crash loop (15+ restarts/5min, "Gateway already running") | Monkey-patch fratricide #62028 perdido pĂłs-upgrade | **D** đŽ |
| Custos inesperados na Anthropic API | Agentes usando profile pago em vez de OAuth Max | **B** đŽ |
| `[telegram] getUpdates conflict 409` recorrente | Plugin MCP do Claude CLI fazendo polling paralelo | **G** đŽ |
| Workers `openclaw-channels` em 96% CPU | Mesmo problema acima â retry-loop em cascata | **G** đŽ |
| Agents falham com "Not logged in" / 401 apĂłs algumas horas | `.credentials.json` truncando ciclicamente sem TTY | **E** đŽ |
| RelayPlane reativo apĂłs upgrade | npm reescreveu `baseUrl` para `127.0.0.1:4100` | **F** đĄ |
| Fallback grudado em modelo pago | Chain com `anthropic-max` ou similar | **C** đĄ |
| DMs misturando contexto entre peers | `session.dmScope=main` (default leak) | **H** đĄ |
| Sessions grudaram em fallback model | `sessions.json` persistiu turn antigo | **L** đĄ |
| `delivery-queue` com 15+ "Unknown Channel" | Canais removidos deixaram mensagens ĂłrfĂŁs | **I** đĄ |
| Display mostra "đ token" confundindo com cobrança | Label cosmĂ©tico do plugin session-status | **J** đą |
| Disco enchendo com `plugin-runtime-deps/openclaw-2026.*` | npm nĂŁo limpa versĂ”es antigas | **K** đą |
Cada Recipe estå documentada em `recipes/<LETRA>-*.md` com causa raiz + fix + validação + revert.
---
## đĄïž Como funciona â vocĂȘ estĂĄ protegido
### 1. Diagnostic-first
Antes de qualquer mudança, o Claude roda script read-only que coleta 14 seçÔes de estado. VocĂȘ vĂȘ tudo antes de decidir.
### 2. Backup automĂĄtico
Antes da primeira mudança, ele cria backup completo em `/root/.openclaw/backups/recovery-<timestamp>/`:
- `openclaw.json`
- `.env`
- `claude/settings.json`
- `claude/.credentials.json`
- arquivos do monkey-patch fratricide
### 3. Sanitização total
Tokens, credenciais, nĂșmeros de telefone, channel IDs **nunca** aparecem no chat. Se precisa mencionar, redact (`<REDACTED>`).
### 4. Severidade explĂcita
Modo hĂbrido evita perguntar 12 vezes. ALTA = 1 autorização batch. MĂDIA = 1 pergunta por recipe. BAIXA = sĂł se vocĂȘ pedir.
### 5. Auto-rollback
Se Recipe ALTA fizer validate retornar â, Claude reverte sozinho usando o backup. VocĂȘ Ă© avisado.
### 6. Validação 10-invariants no fim
Roda script `validate.sh` que checa 10 condiçÔes. Esperado: 10 â
. Se algum â, Claude reporta + sugere ação.
### 7. Aprovação humana sempre que importa
Os scripts sĂŁo read-only. Os fixes destrutivos (chattr, patches, deletes) **sĂł rodam com aprovação explĂcita sua**.
---
## đșïž Estrutura do toolkit
```
openclaw-update-toolkit/
âââ README.md # vocĂȘ estĂĄ aqui
âââ CLAUDE-INSTRUCTIONS.md # mega-prompt operacional pro Claude (nĂŁo precisa ler)
âââ LICENSE # MIT
âââ docs/
â âââ recovery-guide.md # Guide completo (12 fix recipes + decision tree + lessons)
â âââ concepts.md # Por que esses problemas existem (em breve)
â âââ faq.md # Perguntas frequentes (em breve)
âââ scripts/
â âââ diagnostic.sh # Phase 0 standalone (~3min, read-only)
â âââ validate.sh # 10-invariant check (exit code = nÂș de fails)
â âââ recipes/ # Helpers automatizados por Recipe
â âââ reapply-monkey-patch.sh # Recipe D
â âââ disable-telegram-mcp.sh # Recipe G
â âââ kill-switch-cost.sh # Recipe B
â âââ chattr-credentials.sh # Recipe E
â âââ relayplane-disable.sh # Recipe F
â âââ clean-fallback-chain.sh # Recipe C
â âââ dmscope-fix.sh # Recipe H
â âââ reset-sessions.sh # Recipe L
â âââ delivery-queue-cleanup.sh # Recipe I
â âââ reapply-emoji-patch.py # Recipe J
â âââ cleanup-plugin-runtime-deps.sh # Recipe K
âââ recipes/ # 1 .md por Recipe (referĂȘncia detalhada)
â âââ A-upgrade-controlado.md
â âââ B-kill-switch-anthropic.md
â âââ C-fallback-chain-limpa.md
â âââ D-monkey-patch-fratricide.md
â âââ E-credentials-immutable.md
â âââ F-relayplane-disable.md
â âââ G-telegram-mcp-disable.md
â âââ H-dmscope-per-channel-peer.md
â âââ I-delivery-queue-cleanup.md
â âââ J-label-oauth-max-patch.md
â âââ K-plugin-runtime-deps-cleanup.md
â âââ L-sessions-stickiness-reset.md
âââ runbooks/ # Caminhos completos por cenĂĄrio (em breve)
â âââ upgrade-from-v24-to-v29.md
â âââ recovery-from-fratricide-loop.md
â âââ recovery-from-cost-explosion.md
âââ lessons/ # Insights por incident (em breve)
âââ 2026-05-01-mcp-duplicate-poller.md
```
---
## âïž MĂ©todos alternativos de uso
### MĂ©todo 1 â Claude Code (recomendado)
JĂĄ descrito acima. Mais fĂĄcil. UsuĂĄrio quase nĂŁo faz nada.
### MĂ©todo 2 â Manual (se preferir controle total)
Direto via SSH na sua VPS:
```bash
# 1. DiagnĂłstico
curl -fsSL https://raw.githubusercontent.com/totobusnello/openclaw-update-toolkit/main/scripts/diagnostic.sh | sudo bash
# 2. Ler output, decidir quais Recipes aplicar
# 3. Aplicar Recipes individuais (exemplo Recipe D â monkey-patch)
curl -fsSL https://raw.githubusercontent.com/totobusnello/openclaw-update-toolkit/main/scripts/recipes/reapply-monkey-patch.sh | sudo bash
# 4. Validar
curl -fsSL https://raw.githubusercontent.com/totobusnello/openclaw-update-toolkit/main/scripts/validate.sh | sudo bash
```
### MĂ©todo 3 â Clone local (pra modificar)
```bash
git clone https://github.com/totobusnello/openclaw-update-toolkit.git
cd openclaw-update-toolkit
# editar conforme necessĂĄrio
sudo bash scripts/diagnostic.sh
```
---
## đ§ Aprendizados nĂŁo-Ăłbvios incluĂdos
Coisas que custaram horas/dias pra descobrir e estĂŁo documentadas no `docs/recovery-guide.md`:
1. **Plugin MCP do Claude CLI â plugin nativo do OpenClaw gateway** â sĂŁo stacks separados
2. **`getWebhookInfo` mostra estado limpo entre conflicts** â duplicate poller Ă© efĂȘmero (subprocess CLI)
3. **`gateway.reload.mode = "watch"` Ă© INVĂLIDO** â gateway aceita silenciosamente, volta pra `off`. Valores vĂĄlidos: `[off, restart, hot, hybrid]`
4. **Editar `openclaw.json` com `jq` + `mv` NĂO aplica em runtime** â gateway tem in-memory canonical state
5. **2 tokens distintos no Claude CLI Max** podem divergir silenciosamente; `claude auth status` mente
6. **`.credentials.json` trunca ciclicamente sem TTY** â `chattr +i` Ă© mandatĂłrio
7. **`agents.list[]` Ă© array, nĂŁo objeto** â per-agent override usa Ăndice, nĂŁo id
8. **`gpt-5.5` no runtime catalog â config registry** â assimetria silenciosa
9. **Sessions stickiness** â fallback grudado em `sessions.json` requer reset manual
10. **`commands.restart=false` da regra antiga Ă© desnecessĂĄrio** â monkey-patch protege independente
---
## đ Manutenção e atualizaçÔes
Esse toolkit é **mantido ativamente** sincronizado com uma instalação OpenClaw real em produção. Cada vez que o time encontra um novo problema/fix, atualizamos aqui.
- **Versionamento:** `CHANGELOG.md` lista atualizaçÔes por data
- **Trigger de update:** após qualquer incident documentado em produção
- **Compatibilidade:** v2026.4.29 Ă© o foco principal. VersĂ”es anteriores cobertas em runbooks especĂficos
- **Quando OpenClaw shipar v2026.4.30+:** algumas Recipes podem ficar obsoletas. Vamos atualizar.
---
## đ€ Contribuir
### Reportar problema novo
Abra issue em [github.com/totobusnello/openclaw-update-toolkit/issues](https://github.com/totobusnello/openclaw-update-toolkit/issues) com:
- VersĂŁo OpenClaw (`openclaw --version`)
- Output do `scripts/diagnostic.sh`
- Sintoma observĂĄvel (mensagem de erro, comportamento)
- Comando que disparou (se aplicĂĄvel)
#
... (truncated)
tools
Comments
Sign in to leave a comment