Aller au contenu

Ne pas laisser Claude lire .env — permissions deny et limites

Resume

Tweet viral (849K vues, 5K bookmarks) montrant comment empecher Claude Code de lire les fichiers .env en ajoutant une regle deny dans .claude/settings.json :

{
  "permissions": {
    "deny": ["Read .env", "Read .env.*"]
  }
}

Contexte : quote tweet de @Tech_girlll (3.8M vues) qui repete 5 fois "DON'T LET CLAUDE READ YOUR ENV FILE".

Analyse critique

Le conseil est correct mais insuffisant.

Le deny sur Read .env bloque l'outil Read de Claude Code. Mais comme le souligne un commentaire pertinent : "It will create a python script, load .env and bypass permissions". C'est vrai — un deny sur Read n'empeche pas : - cat .env via le tool Bash - Un script Python/Node qui lit le fichier - Un grep dans le repertoire courant qui capture des lignes du .env

Protections reelles (par ordre de robustesse) :

Protection Niveau Limite
.claude/settings.json deny Faible Contournable via Bash
.claudeignore Moyen Empeche la lecture mais pas les commandes shell
.gitignore + pas de .env sur disque Fort Pas de fichier = pas de risque
Vault (HashiCorp, AWS Secrets Manager) Maximum Secrets jamais sur disque

Le vrai probleme : les secrets ne devraient pas etre dans des fichiers en clair sur le disque. La bonne pratique est d'utiliser un gestionnaire de secrets (Vault, 1Password CLI, AWS SSM) et d'injecter les variables d'environnement au runtime.

Pertinence ProbatioVault

ProbatioVault utilise HashiCorp Vault pour tous les secrets (GitLab token, AWS credentials). Pas de .env dans les repos. Le risque est donc mitige par design.

Points de vigilance : - CLAUDE.local.md contient des credentials (Jira API token, Vault token) — ce fichier est dans .gitignore mais lisible par Claude Code. C'est necessaire pour le workflow mais constitue une surface d'attaque - Les tokens dans CLAUDE.local.md sont des tokens d'API, pas des mots de passe root — le blast radius est limite - Le Vault token a un TTL et peut etre revoque

Rappel : ne jamais commiter CLAUDE.local.md. Verifier regulierement que .gitignore le couvre.