permissions.deny actually protect your secrets?.env or keys in permissions.deny is a note on the front door, not a wall. It does not stop the back doors — cat, less, or a python -c subprocess. Paste your deny rules below and see what is actually covered and what slips through. Everything runs in your browser; nothing is sent anywhere.
"I added Read(.env) to deny but it still got read" is a real report. It is less a bug than a consequence of deny being best-effort, not a hard sandbox. Paste your rules and find the gaps.
Either the permissions.deny block from settings.json, or a plain list of Read(...) rules.
Read(.env) alone, while cat .env is not blocked).python or node subprocess still slips through. Not a sandbox.deny. Keep them outside the working directory and out of scope. Use deny as one layer of defense in depth — never assume it alone protects a secret.
.claude/settings.json is dangerous before you trust it.