Document --dangerously-skip-permissions (YOLO) mode in README

Explains why YOLO is reasonable inside this specific container (bind-mount
scope, firewall allow-list, non-root user, no host secrets mounted) and
flags the residual risks worth knowing: uncommitted work in /workspace,
exfiltration via GitHub / Anthropic, no CPU/RAM limits. Key advice: commit
before long autonomous runs.
This commit is contained in:
Samuel Bouchet 2026-04-17 20:50:38 +02:00
parent c451a50349
commit 5146798f5c

View file

@ -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