2026 OpenClaw sessions_spawn et sessions bac à sable : diagnostic sur Mac cloud

La passerelle répond mais les processus enfants ou étapes sandbox échouent—souvent répertoire courant, utilisateur, droits ou politique. Lire aussi premier déploiement, erreurs fréquentes et durcissement.

Diagnostic OpenClaw session sur Mac cloud

Sommaire

1. Trois motifs : passerelle UP ne garantit pas spawn OK

Après premier déploiement et erreurs fréquentes, la confusion typique est : processus vivant, mais sessions ou commandes sandbox qui échouent. Les logs sessions_spawn pointent une autre couche que le port 18789. Lire aussi durcissement pour aligner politique et chemins.

  1. Dérive du cwd : SSH interactif dans ~/projet, launchd peut démarrer depuis / ou un autre home. Les enfants héritent dun cwd vide ou non inscriptible. APFS est souvent insensible à la casse : chemins copiés depuis Linux créent des collisions silencieuses.
  2. UID et propriété : caches ou dépôts appartenant à un autre utilisateur provoquent des refus en sandbox. Démarrage manuel vs launchd change le compte utilisateur réel.
  3. Politique sandbox : règles egress ou sous-processus trop strictes bloquent une automatisation légitime alors que le dashboard répond encore.

Indicateur : après démarrage à froid uniquement via launchd, mesurer le délai jusquau premier spawn réussi. Si SSH répare tout de suite, environnement hérité ou WorkingDirectory manquant.

2. Matrice : session / passerelle / port

La colonne « Souvent non » évite les fausses pistes : chmod rare pour Unauthorized ; sandbox inutile si le processus meurt avant la couche session.

ObservationPisteVérifierSouvent non
doctor OK, erreurs spawn sur tâchesSession/sandbox/cheminrepro minimal, vérifier cwdseul le port 18789
Unauthorized côté clientAuth passerelleopenclaw config get vers gateway.authchmod (sauf fichier token illisible)
passerelle quitte tout de suiteport/dépendanceslsof -i :18789, RAM, Nodelogique sandbox avant écoute
certains types de tâches seulementpolitique/liste blancheassouplir temporairementplugin canal d'abord
après mise à niveaumigration de clésdiff structuré openclaw.jsoninstabilité aléatoire

3. Cinq étapes plus régression

Même utilisateur Unix quen production. Sinon aucun test spawn nest valide.

  1. Entrée documentée : noter launchd ou manuel ; avant bascule openclaw gateway stop et lsof -i :18789.
  2. Repro minimal : plus petit exemple de session dans le cwd prod. Écart SSH/launchd = variables denvironnement.
  3. Propriété : ls -le sur chaque chemin signalé ; ACL macOS ; réinitialiser les répertoires détat avec un seul propriétaire.
  4. Journaux : séparer logs passerelle et journal unifié (exemple ci-dessous).
  5. Diff : après upgrade, comparer blocs sandbox/env.
  6. Régression : doctor, session minimale, charge réelle, observation 24h.
whoami id launchctl print gui/$(id -u) | head -n 20 log show --style syslog --last 30m --predicate 'process == "node" OR eventMessage CONTAINS "sandbox"' | tail -n 80
Note : vérifier WorkingDirectory dans la plist launchd ; sans lui le cwd enfant est vide.

Sur Mac cloud, figer entrée+cwd+propriétaire dans le même runbook que la CI.

4. Signaux mesurables

① PATH/HOME plus étroits sous launchd. ② APFS et chemins mélangés Linux/macOS. ③ mémoire : pics RSS >2 Go peuvent OOM (code 137) masqués en spawn. ④ deux passerelles sur un même état créent des courses. ⑤ audit : journaliser chaque durcissement sandbox.

5. Vers une base de sessions macOS native

Les conteneurs ajoutent volumes et signaux à déboguer en double. Les portables dorment et déplacent les chemins. Les VPS Linux génériques documentent rarement launchd et propriété fichiers.

Pour UID stable, répertoires détat inscriptibles et disponibilité 7×24, un Mac cloud dédié réduit les couches.

Louer un nœud M4 VPSMAC, fixer utilisateur et WorkingDirectory dans des plists versionnées et traiter la fiabilité spawn comme SLO (p95 après reboot), pas seulement HTTP sur 18789.

6. FAQ

Spawn échoue, passerelle vivante

Commencer par cwd, utilisateur, propriété ; comparer pwd au WorkingDirectory plist ; diff env SSH vs launchd.

Uniquement après upgrade

Clés renommées, sandbox par défaut plus stricte : diff openclaw.json et notes de version OPENCLAW_*.

Plusieurs instances

Pas de répertoire détat partagé ; séparer racines de config, ports ou hôtes.