Configuration VS Code — Grimoire Custom Kit¶
Guide de configuration optimale de VS Code pour travailler avec les agents Grimoire sans interruptions ni confirmations intempestives.
Table des matières¶
- Configuration rapide (copier-coller)
- Auto-approbation des outils agents
- Commandes terminal — approve tout vs contrôle fin
- Fichiers et éditions — supprimer les confirmations
- Modèles et rate limits
- Diff editor — timeout algorithme
- Réseau et VPN
- Référence des commandes à risque
1. Configuration rapide¶
Ajouter ces settings dans User Settings (Ctrl+Shift+P → Preferences: Open User Settings (JSON)) :
{
// ── Copilot Agent — ne jamais bloquer les agents ──────────────────
"chat.agent.maxRequests": 500,
// ── Auto-approbation complète des commandes terminal ──────────────
// Option A : tout approuver (recommandé pour usage solo)
"chat.tools.terminal.autoApprove": {
"/.*/": { "approve": true, "matchCommandLine": true }
},
// ── Auto-approbation des URLs (fetch par les agents) ──────────────
"chat.tools.urls.autoApprove": {
"https://github.com": true,
"https://*.githubusercontent.com": true,
"https://hub.docker.com": true
},
// ── Diff editor — pas de timeout ──────────────────────────────────
"diffEditor.maxComputationTime": 0,
"diffEditor.maxFileSize": 0,
// ── Modèle fallback (quand rate limit atteint) ────────────────────
"chat.models.fallback.enabled": true,
"chat.models.fallback.model": "copilot:gpt-4.1"
}
Workspace vs User : Les settings ci-dessus vont dans les User Settings (globaux). Les settings spécifiques au projet Grimoire sont déjà dans
.vscode/settings.jsondu kit.
2. Auto-approbation des outils agents¶
Par défaut, VS Code demande confirmation à chaque appel d'outil par un agent (lecture de fichier, recherche, édition, terminal). Pour les agents Grimoire qui enchaînent 20-50 appels par workflow, c'est inutilisable.
Approuver tous les outils automatiquement¶
Dans la conversation Copilot Chat, quand un agent demande la permission d'utiliser un outil :
- Cliquer sur "Continuer" avec la flèche déroulante
- Sélectionner "Toujours autoriser" (ou "Allow for this workspace")
VS Code retient ces choix par outil et par workspace.
Approuver les outils via settings¶
{
// Auto-approve les appels MCP (serveurs d'outils externes)
"chat.mcp.discovery.enabled": {
"claude-desktop": true,
"cursor-global": true,
"cursor-workspace": true,
"windsurf": true
}
}
3. Commandes terminal¶
C'est ici que se concentrent la plupart des confirmations bloquantes. Les agents
Grimoire exécutent régulièrement des commandes : ls, cat, grep, find,
python3, git, bash, etc.
Option A : Tout approuver (recommandé en solo)¶
La regex /.*/ match toute commande. C'est le mode le plus fluide — les
agents ne sont jamais bloqués.
Sécurité : Ce mode convient pour un usage solo sur sa propre machine. Les agents Copilot n'exécutent que ce que leur prompt leur demande — pas de risque d'exécution arbitraire de code malveillant.
Option B : Approuver sélectivement (mode contrôlé)¶
Pour garder un contrôle sur les commandes destructives tout en laissant passer les commandes de lecture :
{
"chat.tools.terminal.autoApprove": {
// ── Lecture / navigation (safe) ──
"cat": true,
"ls": true,
"pwd": true,
"cd": true,
"find": true,
"grep": true,
"head": true,
"tail": true,
"wc": true,
"tree": true,
"which": true,
"echo": true,
"date": true,
"file": true,
"stat": true,
"readlink": true,
"realpath": true,
"basename": true,
"dirname": true,
"sort": true,
"cut": true,
"tr": true,
"column": true,
"cmp": true,
"du": true,
"df": true,
"sleep": true,
// ── Git (lecture seule) ──
"git branch": true,
"git diff": true,
"git grep": true,
"git log": true,
"git show": true,
"git status": true,
// ── Exécution Python/Node (agents Grimoire) ──
"python3": true,
"python": true,
"node": true,
"bash": true,
"sh": true,
// ── Build / test ──
"make": true,
"npm test": true,
"npm run": true,
"pip install": true,
"go build": true,
"go test": true,
"cargo build": true,
"cargo test": true,
"pytest": true,
"ruff": true,
// ── Commandes à risque — confirmation manuelle ──
"rm": false,
"rmdir": false,
"chmod": false,
"chown": false,
"kill": false,
"dd": false,
"curl": false,
"wget": false,
"eval": false,
"xargs": false,
"sudo": false
}
}
Option C : Regex granulaire (avancé)¶
La syntaxe matchCommandLine permet de matcher sur la ligne de commande
complète, pas juste le premier mot :
{
"chat.tools.terminal.autoApprove": {
// Approuver git add/commit/push mais pas git reset --hard
"/^git (add|commit|push|pull|fetch|checkout|switch)/": {
"approve": true,
"matchCommandLine": true
},
// Approuver rm mais seulement sans -rf
"/^rm [^-]/": {
"approve": true,
"matchCommandLine": true
},
// Approuver pip install mais pas pip uninstall
"/^pip3? install/": {
"approve": true,
"matchCommandLine": true
},
// Bloquer tout le reste
"/.*/": { "approve": false, "matchCommandLine": true }
}
}
4. Fichiers et éditions¶
Désactiver les confirmations de création/édition de fichiers¶
VS Code Copilot peut demander confirmation avant de créer ou modifier un fichier. Pour laisser les agents travailler librement :
- Dans Copilot Chat, quand l'agent propose une édition → cliquer "Apply all" plutôt que fichier par fichier
- Pour les créations de fichiers, cliquer sur "Always allow" quand proposé
Limiter le file watcher (performance)¶
Les agents Grimoire génèrent beaucoup de fichiers temporaires. Exclure les dossiers lourds du file watcher réduit la charge :
{
"files.watcherExclude": {
"_grimoire/_memory/qdrant_data/**": true,
"_grimoire-output/.runs/**": true,
"**/node_modules/**": true,
"**/.terraform/**": true,
"**/.venv/**": true,
"**/__pycache__/**": true
}
}
5. Modèles et rate limits¶
Le problème¶
Les modèles premium (Claude Sonnet 4, o4-mini, etc.) ont des quotas de requêtes par minute/heure imposés par GitHub. Chaque appel d'outil d'un agent = 1 requête. Un workflow Grimoire complet peut consommer 30-80 requêtes.
Message typique :
Sorry, you have exhausted this model's rate limit. Please wait a moment before trying again, or switch to GPT-4.1.
Configurer le fallback automatique¶
Quand le modèle principal atteint sa limite, VS Code bascule automatiquement sur GPT-4.1 (qui a des quotas beaucoup plus généreux).
Bonnes pratiques pour éviter les rate limits¶
| Pratique | Impact |
|---|---|
| Commencer un nouveau chat régulièrement | Réduit le contexte envoyé à chaque requête |
Ne pas attacher @workspace entier |
Moins de tokens consommés par requête |
| Utiliser GPT-4.1 pour les tâches courantes | Quasi illimité, réserver les modèles premium pour le complexe |
Garder les copilot-instructions.md concis |
Envoyé à chaque requête — chaque Ko compte |
| Réduire le budget contexte des agents | bash grimoire-init.sh guard --suggest pour voir les agents trop lourds |
Switcher de modèle manuellement¶
Les quotas sont par modèle. Quand Claude est limité, GPT-4.1 est toujours disponible et vice versa. Utiliser le sélecteur de modèle en bas du chat Copilot pour basculer.
6. Diff editor¶
Algorithme arrêté trop tôt¶
Message : "L'algorithme diff a été arrêté tôt (au bout de 5000 ms.)"
Cause : VS Code coupe le calcul de diff après 5 secondes par défaut.
{
// 0 = pas de timeout, l'algorithme tourne jusqu'au bout
"diffEditor.maxComputationTime": 0,
// 0 = pas de limite de taille de fichier pour le diff
"diffEditor.maxFileSize": 0
}
Ce setting est déjà inclus dans le
.vscode/settings.jsondu kit.
7. Réseau et VPN¶
ERR_CONNECTION_CLOSED¶
Message typique :
Désolé, erreur au niveau du réseau. Veuillez réessayer plus tard. Error Code: net::ERR_CONNECTION_CLOSED
Cause principale : VPN routant le trafic via un serveur distant (latence élevée → timeout des connexions longues Copilot).
Diagnostic¶
# Vérifier la latence vers GitHub
ping -c 3 api.github.com
# Latence normale : < 50ms (Europe)
# Latence problématique : > 200ms (VPN vers un autre continent)
Solutions¶
-
Déconnecter le VPN (si non nécessaire) :
-
Connecter sur un serveur proche :
-
Split tunneling — exclure VS Code du VPN :
-
Auto-connect sur serveur proche :
Configuration proxy VS Code¶
Si vous êtes derrière un proxy d'entreprise :
{
"http.proxy": "http://proxy.entreprise.com:8080",
"http.proxyStrictSSL": false,
"http.proxyAuthorization": null
}
8. Référence des commandes à risque¶
Liste des commandes classées par niveau de risque. Cette référence aide à
configurer le chat.tools.terminal.autoApprove en Option B/C.
Niveau 1 — Safe (toujours approuver)¶
Commandes en lecture seule, aucune modification du système.
| Commande | Usage agent |
|---|---|
cat, head, tail, less |
Lire des fichiers |
ls, tree, find, file |
Explorer l'arborescence |
grep, wc, sort, cut, tr |
Analyser du contenu |
pwd, cd, which, echo |
Navigation / info |
git status, git log, git diff |
État du repo |
stat, du, df, date |
Métadonnées système |
Niveau 2 — Modéré (approuver pour les agents Grimoire)¶
Commandes qui modifient des fichiers dans le workspace, mais de manière attendue et réversible.
| Commande | Usage agent | Risque |
|---|---|---|
python3, node, bash |
Exécuter scripts Grimoire | Dépend du script |
git add, git commit |
Sauvegarder le travail | Réversible (git reset) |
git push |
Publier | Réversible (git revert) |
pip install |
Installer dépendances | Non destructif |
npm install, npm run |
Build/test | Non destructif |
make, go build, cargo build |
Compilation | Non destructif |
mkdir, touch, cp |
Créer fichiers/dossiers | Non destructif |
sed, awk |
Édition inline | Modifie des fichiers |
Niveau 3 — Dangereux (confirmation recommandée)¶
Commandes destructives ou à effet irréversible.
| Commande | Risque | Recommandation |
|---|---|---|
rm, rm -rf |
Suppression définitive | false ou regex limitant |
chmod, chown |
Changement de permissions | false |
kill, pkill |
Arrêt de processus | false |
dd |
Écriture disque bas niveau | Toujours false |
curl, wget |
Téléchargement/upload réseau | false si risque d'exfiltration |
eval, exec |
Exécution arbitraire | Toujours false |
sudo |
Élévation de privilèges | Toujours false |
docker rm, docker system prune |
Suppression conteneurs/images | false |
terraform destroy |
Destruction d'infra | Toujours false |
git reset --hard |
Perte de commits | false |
git push --force |
Écrasement d'historique | false |
Regex utiles pour le mode avancé¶
{
// Approuver git sauf les commandes destructives
"/^git (add|commit|push|pull|fetch|checkout|switch|stash|branch|tag|log|diff|show|status|remote)/": {
"approve": true, "matchCommandLine": true
},
"/^git (reset|clean|rebase|push.*--force)/": {
"approve": false, "matchCommandLine": true
},
// Approuver rm seulement sur des fichiers (pas -rf sur des dossiers)
"/^rm [^-].*\\.(tmp|log|pyc|bak)$/": {
"approve": true, "matchCommandLine": true
},
// Approuver docker en lecture, bloquer les suppressions
"/^docker (ps|images|logs|inspect|exec)/": {
"approve": true, "matchCommandLine": true
},
"/^docker (rm|rmi|system|volume rm)/": {
"approve": false, "matchCommandLine": true
}
}
Checklist de configuration¶
- [ ]
chat.tools.terminal.autoApproveconfiguré (Option A, B ou C) - [ ]
chat.agent.maxRequests≥ 200 (500 recommandé) - [ ]
diffEditor.maxComputationTimeà 0 - [ ]
chat.models.fallback.enabledà true - [ ] VPN configuré sur un serveur proche ou split-tunnel activé
- [ ]
files.watcherExcludeconfiguré pour les dossiers lourds Grimoire - [ ]
search.excludeconfiguré pour réduire le bruit dans les recherches
Fichier complet de référence (User Settings)¶
Cliquer pour déplier — settings.json complet recommandé
{
// ══════════════════════════════════════════════════════════════════════
// User Settings — Optimisé pour Grimoire Custom Kit
// ══════════════════════════════════════════════════════════════════════
// ── Copilot ───────────────────────────────────────────────────────────
"github.copilot.enable": {
"*": true,
"plaintext": true,
"markdown": true,
"scminput": true
},
"github.copilot.nextEditSuggestions.enabled": true,
"chat.agent.maxRequests": 500,
// ── Auto-approbation terminal (Option A — tout) ───────────────────────
"chat.tools.terminal.autoApprove": {
"/.*/": { "approve": true, "matchCommandLine": true }
},
// ── Auto-approbation URLs ──────────────────────────────────────────────
"chat.tools.urls.autoApprove": {
"https://github.com": true,
"https://*.githubusercontent.com": true,
"https://hub.docker.com": true
},
// ── MCP discovery ──────────────────────────────────────────────────────
"chat.mcp.discovery.enabled": {
"claude-desktop": true,
"cursor-global": true,
"cursor-workspace": true,
"windsurf": true
},
// ── Diff editor ────────────────────────────────────────────────────────
"diffEditor.maxComputationTime": 0,
"diffEditor.maxFileSize": 0,
// ── Modèle fallback ────────────────────────────────────────────────────
"chat.models.fallback.enabled": true,
"chat.models.fallback.model": "copilot:gpt-4.1"
}