Claude Code Permissions Explained: Let It Move Fast Without Losing Control

David IyaDavid Iya August 9, 2026 8 min read
A brass combination padlock resting open on a warm wooden desk beside a closed laptop in soft daylight
Original image, Claude Code Club

What Claude Code Permissions Actually Control

A permission in Claude Code is a checkpoint. Before the agent does something that could change your machine or reach outside it - editing a file, running a shell command, hitting the network - it stops and asks. The permission you grant decides whether that specific kind of action needs a yes from you every time, is pre-approved, or is blocked outright.

This is worth understanding rather than clicking past, because the prompt is the only thing standing between 'the agent proposed a command' and 'the command ran.' Reading code and drafting edits is low-risk. Running a command in your terminal is the moment an agent can actually do damage, and that is exactly the action the permission system is built to gate.

The Permission Modes, Plainly

Claude Code gives you a few levels of trust. You move up the levels as the risk of the task goes down and the value of not being interrupted goes up.

  • Ask each time (the safe default): the agent pauses for your approval before any sensitive action. Slowest, but nothing happens without you seeing it first. This is where you should live for anything touching a client's real project.
  • Auto-accept edits: file edits apply without a prompt, but commands and network access still ask. This is the sweet spot for focused building - you stop clicking through every file write, but the shell is still gated.
  • Full autonomy (skip all prompts): the agent runs commands without asking. Genuinely useful for a scripted, unattended job - and genuinely dangerous anywhere else. Only run this inside a sandbox or throwaway environment you would not mind losing.

The Allowlist Is the Real Tool

The reason people reach for the skip-everything switch is fatigue - approving the same safe command for the hundredth time. The better fix is an allowlist. You can pre-approve specific commands you trust and run constantly, so those stop prompting while everything else still stops to ask.

In practice that means the reads and the routine, obviously-safe commands run without interruption, and anything unusual - a delete, a force push, an install from somewhere new, a command that reaches the network - still surfaces for a human yes. You get most of the speed of full autonomy with almost none of the exposure.

  • Allowlist the narrow, safe things you run every session, not broad wildcards. 'This exact test command' is safe to pre-approve; 'any command starting with a shell' is not.
  • Keep destructive and hard-to-reverse actions on the ask list on purpose - deletes, force pushes, resets, anything that spends money.
  • Review your allowlist occasionally. An entry that made sense on one project can be too broad on the next.

The Setup I Use for Client Work

On a client project the machine is not mine to gamble with, so I default to prompts on for anything that touches the shell or the network, turn on auto-accept for edits once I trust the direction the agent is heading, and allowlist the handful of commands I run all day - the test runner, the type checker, the local build. Everything else asks.

When I genuinely want unattended autonomy - an overnight batch, a repetitive migration - I move that work into a sandbox or a throwaway checkout, let it skip prompts there, and keep it away from the real project and any live keys. The rule is simple: full autonomy is fine when the blast radius is a folder I can delete, and never fine when it is a client's production repo.

Set Your Permissions Once, on Purpose

Do not let the permission model be an accident of whatever you clicked last. Decide it deliberately: prompts on for shell and network, auto-accept for edits when you are in flow, a short allowlist of commands you actually trust, and full autonomy only inside a sandbox. That single decision is the difference between an agent that saves you hours and one that can quietly wreck an afternoon.

Free Claude Code drops, straight to your inbox

Short, practical drops on skills, MCP, agents, prompts, and more. No spam, unsubscribe anytime.

Frequently asked questions

What are Claude Code permissions?

They are checkpoints that decide how much Claude Code can do - read files, edit them, run commands, reach the network - before it stops to ask for your approval. The permission prompt you click through is that boundary working as intended.

Is it safe to turn off Claude Code's permission prompts?

Only inside a sandbox or throwaway environment. Skipping all prompts lets the agent run commands without asking, which is useful for unattended jobs but dangerous on any machine holding real client code or live credentials. Keep prompts on for the shell and network on real projects.

How do I stop approving the same command over and over?

Use an allowlist. Pre-approve the specific, safe commands you run every session - your test runner, type checker, local build - so they stop prompting, while deletes, force pushes, installs, and network calls still ask for a human yes.

What permission setup should I use for client work?

Prompts on for anything touching the shell or network, auto-accept for edits once you trust the direction, and a short allowlist of commands you run constantly. Save full autonomy for a sandbox you can throw away, never a client's production repo.

Last reviewed by David Iya on August 9, 2026

David Iya

Written by

David Iya

Forbes 30 Under 30 · Y Combinator

Keep reading

MCPBuilding

How to Build Your Own MCP Server for Claude Code

An MCP server for Claude Code is a small program that hands the agent new tools and live data it did not ship with - your CRM, your internal API, your file format. Here is the minimal build, wired end to end, that I use when the ready-made servers do not cover what a client actually needs.

David Iya 9 min
Read article
ToolsBuilding

Claude Code Plugins: How to Install and Build Your Own

A Claude Code plugin bundles slash commands, MCP servers, hooks, and agent instructions into one shareable package, so a whole team or a whole client roster starts every project with the same setup instead of everyone reinventing it. Here is how I install one, and how I package my own agency's workflow as one.

Duncan Rogoff 8 min
Read article

Ready to build it yourself?

Join Claude Code Club, the #1 community for learning claude code, for $9/month.

← Back to the blog