← Back to all posts

Claude Code Permissions Settings

· Jacob E. Dawson

Boris Cherny had a super viral post explaining how he setup his Claude Code to help him work within the Anthropic team. One tip he shared was to set certain permissions in the Claude settings so that it wouldn't interrupt him to ask, while avoiding having to set ' --dangerously-skip-permissions flag '.

Here's how I did that in my own Claude:

  1. Navigate to .claude/settings.json (I use nvim to edit my files in the console but you could open this in an IDE)
  2. Add the following "permissions" property:
 "permissions": {
    "allow": [
      "Bash(find:*)",
      "Bash(npm run lint:*)",
      "Bash(npm run test:*)",
      "Bash(npm run build:*)",
      "Bash(pnpm run lint:*)",
      "Bash(pnpm run test:*)",
      "Bash(pnpm run build:*)",
      "Bash(git branch:*)",
      "Bash(git status:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(cat:*)",
      "Bash(ls:*)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(git commit:*)",
      "Bash(npm install:*)",
      "Bash(npm ci:*)",
      "Bash(pnpm install:*)",
      "Bash(pnpm ci:*)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Bash(rm -rf:*)",
      "Bash(chmod:*)"
    ]
  },

You will of course want to think about your own set of permissions and what it is you'll be happy to let Claude run without asking, but this should give you a good reference point.