#ConfigMutationConflictError: config changed since last load
1 messages · Page 1 of 1 (latest)
The docs path in this workspace is a little different, Iâm checking the repo copy and the code path for that exact error.
I found the exact guard in the code. This one is usually a stale editor snapshot, not a bad model value. Iâm checking if thereâs a doc/runbook mention I can point you to too.
That error usually means the config was changed after the editor loaded, so your save is using a stale snapshot. Itâs usually not the new model value itself.
Try this:
-
First send your version
openclaw --version -
Refresh/reopen the Config page (or rerun
config.getif you're using RPC/CLI tooling), then make the change again. -
Make sure only one thing is editing config
- one Dashboard/Control UI tab only
- no
openclaw doctor, onboarding, or CLIconfig setrunning at the same time
-
If youâre changing the chat/session model, use:
/model
or:
openclaw models set <provider/model>
instead of hand-editing raw config.
- If youâre changing the default model in config, set:
agents.defaults.model.primary- and if you use an allowlist, also make sure the model is in
agents.defaults.models
Docs:
If you want, paste:
openclaw --version- whether you changed it in Dashboard or CLI
- the exact model you tried to set
and I can tell you the exact next step.
- OpenClaw 2026.4.14 (323493f)
- CLI
- Github copilot
Iâve got enough now to narrow it down. Iâm checking the exact GitHub Copilot docs/command path so I donât send you the wrong provider/model syntax.
I found the CLI behavior too: config set already uses the config hash automatically on your version, so if it throws this, something else is definitely writing the same config file in parallel.
Yep, that narrows it down.
For CLI + GitHub Copilot, the important bit is: donât set just Github copilot.
OpenClaw wants a provider/model ref, for example:
openclaw models set github-copilot/gpt-4o
If that model ID is rejected, try another one your Copilot plan exposes, for example:
openclaw models set github-copilot/gpt-4.1
If you havenât logged Copilot in yet, do this first:
openclaw models auth login-github-copilot
Then check what OpenClaw sees:
openclaw models status
openclaw models list
About the ConfigMutationConflictError part: on 2026.4.14, the CLI already handles the config hash for you, so if you still get that error, it usually means something else is writing ~/.openclaw/openclaw.json at the same time. Common culprits:
- another terminal running
openclaw config set - Dashboard / Control UI open on the config page
- onboarding / doctor / update command running
So Iâd try this exact sequence:
openclaw models auth login-github-copilot
openclaw models set github-copilot/gpt-4o
openclaw models status
If it still blows up, paste:
- the exact command
- the full error output
- output of:
openclaw config file openclaw models status
Docs:
- https://docs.openclaw.ai/providers/github-copilot
- https://docs.openclaw.ai/cli/models
- https://docs.openclaw.ai/concepts/models
If you paste the exact command next, I can usually spot the issue fast.
hummm
Default : github-copilot/gpt-4o
If openclaw models status is already showing Default: github-copilot/gpt-4o, thatâs a good sign, it means the model change itself likely did land. Iâm checking whether you need a restart or whether this was just a duplicate write/race.
Yep, that means the default model is already set to github-copilot/gpt-4o đ
So the likely story is:
- the first write succeeded
- then a second/stale write hit the conflict guard
If your goal was just to switch the default model, youâre probably done.
If the current thread/session still seems to use an old model, do one of these:
/model github-copilot/gpt-4o
or start a new thread/session.
If you want to be extra safe, restart once:
openclaw gateway restart
So, short version: the model change landed. The conflict was likely just the follow-up write racing the saved config.
If you want, I can help you verify whether the session model is also on Copilot, not just the default.
Tu peux parler francais c plus simple
Oui, bien sĂ»r đ
En français, le plus probable est :
- ton modÚle par défaut est déjà bien réglé sur
github-copilot/gpt-4o - lâerreur
ConfigMutationConflictErrorvenait juste dâun conflit dâĂ©criture aprĂšs ça
Donc normalement, le changement a marché.
Si tu veux aussi lâappliquer Ă la conversation en cours, fais :
/model github-copilot/gpt-4o
Ou redémarre OpenClaw :
openclaw gateway restart
Si tu veux, envoie-moi juste :
- la commande exacte que tu tapes
- et le message dâerreur complet
et je te réponds en français à partir de maintenant.
comment lister tout les modeles dispo de copilot
Je vĂ©rifie juste la syntaxe exacte pour filtrer/lister cĂŽtĂ© Copilot, pour ne pas tâinventer une commande qui nâexiste pas.
Oui đ
Pour lister les modĂšles Copilot :
ModÚles Copilot connus/configurés
openclaw models list --provider github-copilot
Catalogue complet cÎté OpenClaw
openclaw models list --provider github-copilot --all
Un modĂšle par ligne
openclaw models list --provider github-copilot --all --plain
En JSON
openclaw models list --provider github-copilot --all --json
Et pour vérifier que ton auth Copilot est bien active :
openclaw models status --probe --probe-provider github-copilot
Petit piÚge important : --all montre le catalogue connu par OpenClaw, mais ton abonnement Copilot ne donne pas forcément accÚs à tous.
Si tu veux, je peux te donner la commande exacte pour :
- lister,
- choisir un modĂšle,
- le définir par défaut.
listes tout ce qui n'est pas register cote openclaw
Pas directement.
OpenClaw peut lister :
- ce quâil connaĂźt / rĂ©fĂ©rence
- ce quâil a configurĂ©
- ce quâil peut sonder
Mais il ne peut pas lister en une commande âtout ce qui nâest pas enregistrĂ©â, parce que par dĂ©finition il ne le connaĂźt pas.
Ce que tu peux faire
1. Voir tout ce quâOpenClaw connaĂźt pour Copilot
openclaw models list --provider github-copilot --all --plain
2. Voir ce qui est réellement configuré chez toi
openclaw models status
En pratique
Tout ce qui nâapparaĂźt pas dans :
openclaw models list --provider github-copilot --all
est âpas enregistrĂ© / pas rĂ©fĂ©rencĂ© cĂŽtĂ© OpenClawâ.
Si tu veux, le plus simple est :
- tu me colles la sortie de
openclaw models list --provider github-copilot --all --plain
- et je te dis lesquels sont utilisables, lesquels sont juste connus, et comment en tester un.
peut tu enregistrer en tant que modele en 1 commande :
github-copilot/claude-haiku-4.5
github-copilot/claude-opus-4.6
github-copilot/claude-sonnet-4.6
github-copilot/gemini-3.1-pro-preview
github-copilot/gpt-5.3-codex
github-copilot/gpt-5.4
github-copilot/gpt-5.4-mini
Je vérifie la structure exacte de agents.defaults.models avant de te donner la commande, comme ça tu peux juste copier-coller sans te battre avec le JSON.
Oui. Le plus simple en 1 commande est de dĂ©finir agents.defaults.models dâun coup :
openclaw config set agents.defaults.models '{
"github-copilot/claude-haiku-4.5": { "alias": "Haiku 4.5" },
"github-copilot/claude-opus-4.6": { "alias": "Opus 4.6" },
"github-copilot/claude-sonnet-4.6": { "alias": "Sonnet 4.6" },
"github-copilot/gemini-3.1-pro-preview": { "alias": "Gemini 3.1 Pro Preview" },
"github-copilot/gpt-5.3-codex": { "alias": "GPT-5.3 Codex" },
"github-copilot/gpt-5.4": { "alias": "GPT-5.4" },
"github-copilot/gpt-5.4-mini": { "alias": "GPT-5.4 Mini" }
}'
Puis vérifie :
openclaw models list --provider github-copilot
â ïž Important : cette commande remplace tout agents.defaults.models actuel.
Si tu veux, je peux aussi te donner la version safe en 1 commande qui ajoute ces modÚles sans écraser ceux déjà présents.
1 commande qui ajoute ces modÚles sans écraser ceux déjà présents.
Oui, fais ça :
openclaw config set agents.defaults.models "$((openclaw config get agents.defaults.models --json 2>/dev/null || echo '{}') | node -e 'const fs=require(\"fs\"); const raw=fs.readFileSync(0,\"utf8\").trim(); const current=raw ? JSON.parse(raw) : {}; const add={\"github-copilot/claude-haiku-4.5\": {\"alias\": \"Haiku 4.5\"}, \"github-copilot/claude-opus-4.6\": {\"alias\": \"Opus 4.6\"}, \"github-copilot/claude-sonnet-4.6\": {\"alias\": \"Sonnet 4.6\"}, \"github-copilot/gemini-3.1-pro-preview\": {\"alias\": \"Gemini 3.1 Pro Preview\"}, \"github-copilot/gpt-5.3-codex\": {\"alias\": \"GPT-5.3 Codex\"}, \"github-copilot/gpt-5.4\": {\"alias\": \"GPT-5.4\"}, \"github-copilot/gpt-5.4-mini\": {\"alias\": \"GPT-5.4 Mini\"}}; process.stdout.write(JSON.stringify({...current, ...add}))')"
Ăa :
- lit
agents.defaults.models - ajoute tes modĂšles
- garde ceux déjà présents
Puis vérifie avec :
openclaw models list --provider github-copilot
Si tu retombes sur ConfigMutationConflictError, ferme les autres endroits qui modifient la config et relance juste cette commande.
openclaw config set agents.defaults.models "$((openclaw config get agents.defaults.models --json 2>/dev/null || echo '{}') | node -e 'const fs=require("fs"); const raw=fs.readFileSync(0,"utf8").trim(); const current=raw ? JSON.parse(raw) : {}; const add={"github-copilot/claude-haiku-4.5": {"alias": "Haiku 4.5"}, "github-copilot/claude-opus-4.6": {"alias": "Opus 4.6"}, "github-copilot/claude-sonnet-4.6": {"alias": "Sonnet 4.6"}, "github-copilot/gemini-3.1-pro-preview": {"alias": "Gemini 3.1 Pro Preview"}, "github-copilot/gpt-5.3-codex": {"alias": "GPT-5.3 Codex"}, "github-copilot/gpt-5.4": {"alias": "GPT-5.4"}, "github-copilot/gpt-5.4-mini": {"alias": "GPT-5.4 Mini"}}; process.stdout.write(JSON.stringify({...current, ...add}))')"
[eval]:1
const fs=require("fs"); const raw=fs.readFileSync(0,"utf8").trim(); const current=raw ? JSON.parse(raw) : {}; const add={"github-copilot/claude-haiku-4.5": {"alias": "Haiku 4.5"}, "github-copilot/claude-opus-4.6": {"alias": "Opus 4.6"}, "github-copilot/claude-sonnet-4.6": {"alias": "Sonnet 4.6"}, "github-copilot/gemini-3.1-pro-preview": {"alias": "Gemini 3.1 Pro Preview"}, "github-copilot/gpt-5.3-codex": {"alias": "GPT-5.3 Codex"}, "github-copilot/gpt-5.4": {"alias": "GPT-5.4"}, "github-copilot/gpt-5.4-mini": {"alias": "GPT-5.4 Mini"}}; process.stdout.write(JSON.stringify({...current, ...add}))
^
Expected unicode escape
SyntaxError: Invalid or unexpected token
at makeContextifyScript (node:internal/vm:185:14)
at compileScript (node:internal/process/execution:383:10)
at evalTypeScript (node:internal/process/execution:256:22)
at node:internal/main/eval_string:74:3
Node.js v22.22.2
Oui, bien vu, ma commande Ă©tait cassĂ©e, dĂ©solĂ© đ
Il y avait 2 bugs :
"$(( ... ))"au lieu de"$( ... )"- jâai trop Ă©chappĂ© les
"dans lenode -e
Essaie celle-ci :
openclaw config set agents.defaults.models "$((openclaw config get agents.defaults.models --json 2>/dev/null || echo '{}') | node -e 'const fs = require("fs"); const raw = fs.readFileSync(0, "utf8").trim(); const current = raw ? JSON.parse(raw) : {}; const add = { "github-copilot/claude-haiku-4.5": { alias: "Haiku 4.5" }, "github-copilot/claude-opus-4.6": { alias: "Opus 4.6" }, "github-copilot/claude-sonnet-4.6": { alias: "Sonnet 4.6" }, "github-copilot/gemini-3.1-pro-preview": { alias: "Gemini 3.1 Pro Preview" }, "github-copilot/gpt-5.3-codex": { alias: "GPT-5.3 Codex" }, "github-copilot/gpt-5.4": { alias: "GPT-5.4" }, "github-copilot/gpt-5.4-mini": { alias: "GPT-5.4 Mini" } }; process.stdout.write(JSON.stringify({ ...current, ...add }));')"
Si tu veux la version vraiment correcte, il faut juste remplacer le début par :
openclaw config set agents.defaults.models "$(
Donc la commande complĂšte correcte est :
openclaw config set agents.defaults.models "$((openclaw config get agents.defaults.models --json 2>/dev/null || echo '{}') | node -e 'const fs = require("fs"); const raw = fs.readFileSync(0, "utf8").trim(); const current = raw ? JSON.parse(raw) : {}; const add = { "github-copilot/claude-haiku-4.5": { alias: "Haiku 4.5" }, "github-copilot/claude-opus-4.6": { alias: "Opus 4.6" }, "github-copilot/claude-sonnet-4.6": { alias: "Sonnet 4.6" }, "github-copilot/gemini-3.1-pro-preview": { alias: "Gemini 3.1 Pro Preview" }, "github-copilot/gpt-5.3-codex": { alias: "GPT-5.3 Codex" }, "github-copilot/gpt-5.4": { alias: "GPT-5.4" }, "github-copilot/gpt-5.4-mini": { alias: "GPT-5.4 Mini" } }; process.stdout.write(JSON.stringify({ ...current, ...add }));')"
Si tu veux, je te la renvoie propre sur plusieurs lignes pour éviter toute erreur de copier-coller.
Config overwrite: /root/.openclaw/openclaw.json (sha256 4e34c1762be64bc4d0046360628f85c7d9382ef50e19b1d465fd989281b9f291 -> 3c7aed58da8b1e50cf66f4fd8d82281961d3d74446c0d5d3810720bb623601c4, backup=/root/.openclaw/openclaw.json.bak)
Updated agents.defaults.models. Restart the gateway to apply.
root@ubuntu-32gb-hel1-2-ai:~#
Parfait, câest bon đ
Les modĂšles ont bien Ă©tĂ© ajoutĂ©s, et OpenClaw tâindique la suite :
openclaw gateway restart
Puis vérifie :
openclaw models list --provider github-copilot
Et dans le chat, tu pourras ensuite faire par exemple :
/model github-copilot/gpt-5.4
Si ça a réglé le souci, tu peux marquer la solution :
clic droit sur le message de solution â Apps â â
Mark Solution.
Cherche quelle modeles est dans les modele non premium de copilot
Je regarde la doc GitHub pour te donner la liste la plus fiable possible, parce que ça bouge souvent cÎté Copilot.
Oui, jâai regardĂ© la doc GitHub.
ModĂšles non premium / inclus (plan payant ou Copilot Student)
GitHub indique explicitement que les modĂšles inclus, donc sans consommation de premium requests, sont :
- GPT-5 mini
- GPT-4.1
- GPT-4o
Source :
https://docs.github.com/en/copilot/concepts/billing/copilot-requests
Important
- Sur Copilot Free, ce nâest pas pareil, les modĂšles accessibles consomment des premium requests.
- GitHub précise aussi que la liste peut changer.
Petit détail bizarre
Dans leur tableau, Raptor mini apparaĂźt aussi Ă 0x sur les plans payants, mais dans le texte GitHub cite clairement surtout :
- GPT-5 mini
- GPT-4.1
- GPT-4o
Donc si tu veux jouer safe dans OpenClaw, pars sur ces 3 modĂšles.
Si tu veux, je peux maintenant te donner la liste en format OpenClaw :
github-copilot/...
pour les 3 modĂšles non premium.
Compare tout ces modeles free et quelle est le meilleur ?
HonnĂȘtement, pour un avis Ă jour, le mieux est de demander dans #models. Ăa change vite, et les retours terrain seront plus fiables que ma tier list figĂ©e.
Cela dit, en pratique parmi les modĂšles inclus/non premium que GitHub cite :
- GPT-4.1 â le meilleur par dĂ©faut pour la plupart des usages
- GPT-4o â si tu veux surtout de la vitesse et une rĂ©ponse plus âfluideâ
- GPT-5 mini â pour les tĂąches plus simples / lĂ©ger / rapide
Mon conseil simple
Si tu veux juste le meilleur choix global, prends :
github-copilot/gpt-4.1
Si tu veux la vitesse, prends :
github-copilot/gpt-4o
Si tu veux, je peux te donner ensuite :
- le meilleur modĂšle pour coder
- le meilleur pour Discord/chat
- le meilleur fallback gratuit
Cherche dans openrouteur les dernier modeles les meilleurs en codage et agentic en free
Je prĂ©fĂšre ne pas te balancer une liste âmeilleurs modĂšles OpenRouter freeâ ici, parce que ça devient vite faux et ça change tout le temps.
Pour du vrai temps rĂ©el, le bon endroit câest #models.
Et cÎté docs OpenClaw :
- modĂšles + config : https://docs.openclaw.ai/concepts/models
- notes de communauté : https://docs.openclaw.ai/concepts/models#model-discussions-community-notes
Pour chercher toi-mĂȘme cĂŽtĂ© OpenRouter :
- ouvre leur liste de modĂšles
- filtre sur
:free
Point important pour OpenClaw agentic :
- un modĂšle âbon en codingâ nâest pas forcĂ©ment bon en tool calling / agentic
- les modĂšles free OpenRouter peuvent ĂȘtre trĂšs variables en stabilitĂ©/rate limits
- je te conseille plutĂŽt de les utiliser en fallback, pas en modĂšle principal
Si tu veux, je peux tâaider sur le setup OpenClaw une fois que tu as 2-3 candidats de #models :
- un modĂšle principal
- un fallback free
- un fallback mini/cheap
t la?
Oui, je suis lĂ đ
Photo du moment, avec la grosse astĂ©risque âça change viteâ :
Ce qui ressort le plus
- Meilleur candidat free pour coding + agentic : Qwen3 Coder 480B A35B (free)
- OpenRouter le présente comme optimisé pour agentic coding, function calling, tool use, et long-context repo reasoning
- Autre candidat souvent cité pour raisonnement / tool-use : DeepSeek V3.2
- mais lĂ je te conseille de vĂ©rifier si le suffixe free est dispo au moment oĂč tu regardes, parce que ça bouge
Ce que je te conseillerais dans OpenClaw
- si tu veux un seul essai sérieux : pars sur Qwen3 Coder free
- si tu veux tester sans choisir :
openrouter/free- mais je le dĂ©conseille comme backend principal pour un setup agentic stable, câest mieux pour tester
Sources que jâai regardĂ©es
- https://openrouter.ai/collections/programming
- https://openrouter.ai/qwen/qwen3-coder:free
- https://openrouter.ai/docs/guides/routing/routers/free-models-router
Si tu veux, je peux maintenant te donner :
- le meilleur modĂšle Ă mettre en primary
- un fallback free
- la commande OpenClaw exacte pour les enregistrer
Utiliser hermes agent a cote de openclaw peut casser certaines fonctionnalités ?
Je checke vite si OpenClaw a une mention spĂ©cifique de Hermes, sinon je te rĂ©ponds en mode pratique, sans te raconter nâimporte quoi.
Oui, ça peut casser certaines choses, mais pas parce quâOpenClaw âdĂ©testeâ Hermes.
Le vrai risque, câest surtout si les deux partagent les mĂȘmes ressources.
En gĂ©nĂ©ral, câest OK si tu sĂ©pares :
- le port / gateway
- le dossier de config / state
- le profil navigateur / CDP
- les tokens / sessions de channels
- les webhooks / automations
LĂ oĂč ça peut casser
- mĂȘme port â conflit de service
- mĂȘme dossier de donnĂ©es â config/state/session qui se marchent dessus
- mĂȘme profil navigateur â automation/CDP instable
- mĂȘme compte WhatsApp / Telegram / Discord / etc. â doublons, dĂ©connexions, comportements bizarres
- mĂȘmes fichiers de config â exactement le genre de conflit que tu viens de voir (
config changed since last load)
Réponse courte
- Hermes Ă cĂŽtĂ© dâOpenClaw : oui, possible
- Hermes qui partage les mĂȘmes ressources quâOpenClaw : lĂ , oui, ça peut casser
Mon conseil
Fais-les tourner comme 2 applis séparées :
- dossiers séparés
- ports séparés
- profils navigateur séparés
- sessions/tokens séparés
Si tu veux, je peux te faire une checklist exacte âHermes + OpenClaw sans conflitâ en 5 points.
Initializing agent...
ââââââââââââââââââââââââââââââââââââââââ
(ïœĄâąÌïžżâąÌïœĄ) reflecting...
â qwen3-coder:free â 0/262K â [ââââââââââ] 0% â 3m
pourquoi sa prend du temps
Câest assez normal avec qwen3-coder:free.
Les causes les plus probables :
- modĂšle free â souvent queue / rate limit / surcharge
- gros modĂšle â premier token plus lent
- mode agentic â il charge prompt, outils, contexte, parfois workspace avant de rĂ©pondre
- âreflecting...â = il est encore dans la phase de rĂ©flexion / prĂ©paration
Le point important
0/262K ne veut pas dire âça ne fait rienâ
ça indique surtout la fenĂȘtre de contexte max, pas que la rĂ©ponse a commencĂ©.
En pratique
- 1 Ă 3 min sur un modĂšle free agentic, ce nâest pas choquant
- si ça reste bloqué 5 à 10 min, là je soupçonnerais :
- modÚle saturé
- backend free instable
- ou prompt/context trop lourd
Mon conseil
Pour du vrai usage agentic :
- évite
:freeen modĂšle principal - garde-le en fallback
- prends un modĂšle plus stable pour le primary
Si tu veux, je peux te dire quel modÚle mettre en primary et lequel garder en fallback pour éviter ce genre de lenteur.
dit moi comment lancer openclaw en cli
Je vérifie juste la commande exacte du mode CLI/TUI pour te donner la bonne, pas une vieille habitude.
Oui, le plus simple :
En local
openclaw gateway start
openclaw tui
Si tu nâas pas lâinstall globale :
pnpm openclaw gateway start
pnpm openclaw tui
Si tu veux lancer le gateway au premier plan
Dans terminal 1 :
openclaw gateway
Dans terminal 2 :
openclaw tui
Si ton gateway est sur une autre machine
openclaw tui --url ws://<host>:18789 --token <gateway-token>
Si câest auth par mot de passe :