diff --git a/README.md b/README.md index 3670609..9edd64a 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,51 @@ ls .automation_runs/smoke/screens/ # 01_loaded.png, 02_placed.png, ... Le harness Python détecte automatiquement Linux et enveloppe Godot dans `xvfb-run`. Aucune variable d'environnement à positionner. +### Mode YOLO (`--dangerously-skip-permissions`) + +Dans le container, tu peux lancer Claude Code sans prompt de confirmation à +chaque action : + +```bash +claude --dangerously-skip-permissions +``` + +Avec ce flag Claude **n'affiche plus de "Allow this tool use? (y/n)"** avant +chaque appel d'outil (Bash, Edit, Write, etc.). Il agit en continu. + +Pourquoi c'est raisonnable **dans ce container précis** : + +| Frontière | Protection | +|-----------|-----------| +| Ton OS Windows, `C:\Users\…`, `~/.ssh`, autres projets | Inaccessibles — seul `/workspace` est bind-mounté | +| Réseau sortant | `iptables` en DROP par défaut ; allow-list : GitHub, npm, Anthropic, NuGet, Sentry, Statsig. Le reste est REJECTé | +| Privilèges | Claude tourne en user `node` (UID 1000), pas root. `sudo` whitelisté **uniquement** pour `init-firewall.sh` | +| Secrets | Aucun `~/.ssh`, `~/.aws`, cookies navigateur ou `.env` système montés | + +Risques résiduels à garder en tête : + +- **Perte de travail non committé dans `/workspace`.** Le mount est + read-write, donc un `rm -rf` ou un `git reset --hard` écrase tes fichiers + locaux. **Commit fréquemment** — c'est la seule garantie contre la perte. +- **Exfiltration via les domaines autorisés.** GitHub reste joignable : un + Claude compromis pourrait créer un gist public ou pousser sur un fork. Si + tu veux réduire ce vecteur, ne fais pas `gh auth login` dans le container, + ou utilise un PAT fine-grained limité à ce seul repo. +- **Capabilities `NET_ADMIN`/`NET_RAW`.** Actives pour le container (requis + par iptables). Exploitables uniquement via root, qui n'est pas accessible + à Claude en utilisation normale. +- **Pas de limites CPU/RAM.** Un process qui part en vrille peut saturer ta + machine jusqu'au prochain `docker stop`. Pas dramatique, juste gênant. + +Ce que tu **ne risques pas** même en YOLO : +- Perte de données en dehors du projet +- Accès à tes autres dépôts, credentials personnelles, réseau domestique +- Modification de ton OS Windows + +En pratique, le scénario à éviter : tu as des modifs locales importantes +non-pushées et Claude fait un `git reset --hard HEAD`. Donc : `git commit` +avant de lancer un long run autonome. + ### Personnaliser la version de Godot L'image par défaut pose Godot 4.6.2-stable. Pour changer, modifier @@ -167,7 +212,7 @@ Puis `devcontainer up --workspace-folder . --build-no-cache`. | Screenshot tout noir | Aucun DISPLAY + pas d'xvfb | Vérifier `which xvfb-run` ; utiliser `godot-xvfb` au lieu de `godot` directement | | `dotnet restore` bloque | Firewall bloque `api.nuget.org` | Vérifier que `init-firewall.sh` s'est bien exécuté avec les changements récents | | Build Docker échoue au download de Godot | Réseau restreint côté hôte | Retry, ou installer Godot manuellement et commenter les lignes correspondantes | -| Claude Code demande `--dangerously-skip-permissions` | Comportement normal en container sandbox | Accepter si tu es conscient du modèle de confiance | +| Claude Code demande confirmation à chaque action | Comportement normal hors YOLO | Voir la section *Mode YOLO* ci-dessus | ## Licence