Après mise à niveau ou changement de config OpenClaw : Telegram/Slack répond, mais exec/read/write/browser « not found » ou l'agent n'imprime que des appels d'outils en texte ? Cet article précise : ① quelle couche vérifier en premier ; ② matrice tools.profile et ordre pour tools.deny et overrides agent ; ③ runbook en six étapes et échelle de vérification. Complète le runbook Gateway sans réponse — canaux et modèles là-bas, contrat allowlist outils ici.
tools.profile sur messaging / minimal : mise à niveau ou assistant a resserré la surface d'outils — chat fluide, exec → not found.tools.deny dommages collatéraux : deny temporaire de exec / browser pour conformité ; ticket clos, règle reste (documenter échéance et responsable).agents.list[].tools.profile écrase le global : global en coding, l'agent prod hérite encore messaging.La surface d'outils OpenClaw n'est pas « installé = tout ouvert », mais l'intersection profil global → liste deny → override agent. La doc 2026 définit tools.profile comme allowlist de base. Beaucoup d'équipes échouent au premier upgrade sur le contrat de l'implicite ouvert à l'autorisation explicite, sans « restart + sonde minimale » dans le ticket de changement.
Sur un portable qui dort : « config modifiée, launchd/conteneur non reload ». Gateway autoritaire sur Mac distant dédié, toujours sous tension avec forward SSH local : valider côté Gateway, pas seulement le succès CLI.
| Symptôme | Couche suspecte | Première action |
|---|---|---|
| Réponse OK, exec/read tool not found | tools.profile trop étroit ou override agent | Exporter profil effectif ; openclaw config set tools.profile coding ; gateway restart |
| Un outil toujours mort, le reste OK | tools.deny | Rechercher deny ; doc tools officielle |
| Un seul agent | agents.list[].tools.profile | Aligner agent et global |
| Texte d'appel d'outil JSON | Tool-calling modèle | Modèle function calling ; moins d'outils parallèles |
| Canal muet | Canal / token / routage | Article sans réponse ; reporter ici |
tools.profile : coding ou full ?La plupart des agents d'automatisation → coding : fichiers, shell, web, sessions, memory — plus simple à auditer que full. Lire aussi Agents / Skills / memory_search : surface d'outils et limite de contexte dans le même changement.
Au démarrage de session le Gateway construit le registre d'outils effectif ; sans exec, refus ou texte brut. Exclure d'abord « sans réponse » avant cet article.
| profile | Capacités | Usage |
|---|---|---|
| minimal | session_status | Monitoring sans FS |
| messaging | Canaux, sessions | Routage support |
| coding | filesystem, runtime, web, memory… | Dev (défaut recommandé) |
| full | Pas de coupe au profil | Prod avec audit |
Note : après tools.profile, redémarrer le Gateway. openclaw doctor seul ne recharge pas l'allowlist. Docker : runbook production.
tools.deny et overrides agent : ordre des trois couches① profil effectif du Gateway → ② tools.deny → ③ agents.list[].tools.profile → ④ config globale. Après upgrade de canal, migration de profil par défaut ? Rollback via runbook mauvaise release.
Ticket : nom d'agent testé et canal ; sonde CLI et Telegram/Slack. Deny temporaires : échéance et owner.
tools.profile, liste agents, id de requête.coding pour dev ; raison et rollback dans le ticket.read / exec echo → channels status --probe.openclaw --version openclaw config get tools.profile 2>/dev/null || true openclaw config set tools.profile coding openclaw gateway restart openclaw doctor openclaw gateway status
Métriques pour séparer chat et exécution d'outils. POC : jour 1, profil cible et deny vide dans l'acceptation — matrice KPI POC.
Changer de prompt sans restart n'est pas auditable. Gateway sur Mac distant dédié + profil documenté : MTTR en minutes. MACCOME Mac mini M4 / M4 Pro, six régions — guide multi-régions.
FAQ
Chevauchement avec Gateway sans réponse ?
Là canaux/modèles ; ici allowlist. Muet → autre article ; tool not found → celui-ci.
Toujours du texte d'appel d'outil ?
Modèle function calling en A/B ; rollback si besoin.