Claude Code Permissions for Client Work: Grant Access by Blast Radius, Not Convenience

- Claude Code asks permission before it acts - editing files, running commands, hitting the network - and lets you pre-approve specific actions per project. On your own experiments, waving everything through is fine. On a client build, the permission prompt is a safety rail you configure deliberately, not an obstacle you click past.
- Use the Profit Room's Blast Radius Rule: sort every capability by how bad the worst case is. Reversible actions inside the project folder get pre-approved so the session moves fast. Anything that deletes, deploys, spends, or leaves the project - git pushes, package publishes, destructive commands, calls to live client systems - stays behind a manual prompt, every time.
- Write the permission setup down per client and mention it in your process. 'Approvals are locked down on your project' is one sentence that answers the safety question most clients are quietly asking, and it costs you nothing but a few minutes of setup.
What Permissions Actually Control in Claude Code
Claude Code runs as a desktop app on your machine, working directly in a project folder. That is its power - it can read the codebase, edit files, and run commands like a developer sitting at your desk. Permissions are the layer that decides which of those actions happen automatically and which stop and ask you first. Out of the box the app is conservative: file edits, shell commands, and network access each surface an approval prompt before anything runs.
You can then shape that behavior per project. Specific commands and tools can be pre-approved so routine work flows without interruption, and everything else keeps prompting. There are also broader modes that reduce prompting across the board - useful on a throwaway prototype, dangerous as a default on client work. The point is that the permission surface is configurable, and on a paid build, configuring it is part of the job. It sits alongside [how you handle client data inside sessions](/blog/is-it-safe-to-use-claude-code-with-client-data) as the unglamorous discipline that keeps you out of apology emails.
The Blast Radius Rule: Sort Every Action by Its Worst Case
The mistake builders make is sorting permissions by annoyance: whatever prompts most often gets approved forever. Sort by blast radius instead - by what the worst plausible outcome of a wrong action would be, and whether you could undo it. That single question splits everything cleanly into three tiers.
- Green - pre-approve: actions that stay inside the project folder and are reversible through version control. Reading files, editing source, running the test suite, local builds, formatting and lint commands. A bad edit here costs you a git checkout, nothing more. Approving these up front is what makes a session feel fast.
- Yellow - prompt every time: actions that leave the project or change shared state but are recoverable with effort. Installing dependencies, running database migrations against a development database, git commits and pushes to a work branch. You want a beat to read what is about to happen before it does.
- Red - never automatic, sometimes never at all: anything that deletes data, touches a live client system, deploys, publishes, or spends money. Destructive shell commands, pushes to a production branch, calls that hit a client's real customer data or a paid API. These stay behind a manual prompt in every session, no matter how many times they come up - and some of them you simply do yourself, outside the agent entirely.
The red tier deserves the most respect on client work because the blast radius is not just technical - it is the relationship. Your own project surviving a bad command is an annoyance; a client's production system taking one is a reference you lose. If a build genuinely requires the agent to touch something red-tier, that is your cue to slow down, not to approve faster.
Setting It Up Per Client Project
Permissions are project-level, which fits client work perfectly: each engagement gets its own folder and its own approval posture. Set it once at kickoff, in the same sitting where you write the project's context files, and the whole engagement inherits it.
- Start the first session with defaults untouched and do a normal hour of work. Every prompt you see is a data point about what this specific project actually needs.
- Pre-approve the green tier as it comes up: the test command, the build command, the formatter. Approve the exact commands you trust, not broad categories.
- Decide your red lines out loud, in writing: which branches the agent never pushes to, which environments it never touches, which credentials never enter the session at all. Keep production secrets out of the project folder entirely - a permission prompt cannot protect a key the agent should never have seen.
- If you run longer autonomous stretches, tighten first. Reduced-prompting modes and [auto mode sessions](/blog/claude-code-auto-mode-for-client-work) are only as safe as the boundaries you set before walking away - the more autonomy you grant, the shorter the pre-approved list should be.
- Re-check the setup when the project changes shape. The permission posture that fit the prototype phase is usually too loose once real client data or a live deployment enters the picture.
For rules a prompt cannot express - blocking a specific command pattern outright, or forcing a check before certain actions - [hooks](/blog/claude-code-hooks-for-client-work) pick up where permissions leave off. Permissions decide what asks; hooks decide what is simply not allowed to happen.
Turning a Safety Habit into a Selling Point
Most clients will never ask about your permission setup by name, but nearly all of them are quietly asking the question underneath it: what happens if the AI does something wrong on my project? A one-line answer in your kickoff or proposal - approvals are locked down per project, nothing deploys or touches your live systems without me explicitly confirming it - lands squarely on that fear. You are not teaching them the tooling; you are showing them there is an adult supervising it.
The same discipline compounds through the rest of your delivery. A locked-down permission posture during the build is the daily habit; the [security review before handoff](/blog/claude-code-security-review-for-client-work) is the end-of-build gate; together they become the process language that justifies your rate when a cheaper builder is pitching the same project with none of it. Clients cannot evaluate your code, but they can absolutely evaluate whether you sound like someone who has thought about what could go wrong.
Short, practical drops on offers, outreach, pricing, and closing clients with Claude Code. No spam, unsubscribe anytime.
Frequently asked
What do Claude Code permissions actually control?
They control which actions the agent can take without stopping to ask you first. By default the desktop app prompts before editing files, running shell commands, and accessing the network. Per project, you can pre-approve specific commands and tools so routine work flows uninterrupted, while everything outside that list keeps prompting. Broader low-prompt modes exist for autonomous work, but on client projects they should be paired with tighter boundaries, not used as a way to stop reading prompts.
Which permissions should I pre-approve on a client project?
Only actions that are reversible and stay inside the project folder: reading and editing source files, running the test suite, local builds, formatters and linters. A mistake in any of those is undone with version control. Keep everything that leaves the project or changes shared state - installs, migrations, pushes - behind a prompt, and treat anything that deletes, deploys, spends money, or touches a live client system as never-automatic regardless of how often it comes up.
Is it safe to run Claude Code in a low-permission or auto mode on client work?
It can be, if you invert the usual instinct: the more autonomy you grant, the tighter the boundaries need to be first. Before any long unattended stretch, shorten the pre-approved list, keep production credentials out of the project entirely, and make sure destructive and deploy actions are excluded from the mode's reach. Autonomy on top of a locked-down project is a productivity tool; autonomy on top of a wide-open one is a gamble with someone else's system.
How do permissions differ from hooks in Claude Code?
Permissions decide which actions pause for your approval; hooks let you attach your own automated rules around actions, including blocking specific patterns outright or running checks before and after them. Think of permissions as the ask-first layer and hooks as the hard-rule layer. On client work they pair naturally: permissions keep you in the loop for judgment calls, and hooks enforce the red lines that should never depend on you being attentive in the moment.
Should I tell clients how I manage permissions?
Yes, in one plain sentence rather than a tooling lecture. Something like: approvals on your project are locked down, and nothing deploys or touches your live systems without my explicit confirmation. It answers the what-if-the-AI-goes-rogue worry most clients carry but rarely voice, and it differentiates you from builders who cannot describe their safety process at all. Put it in the proposal or kickoff notes alongside your security review step and let the process do the selling.
Last reviewed September 22, 2026.

Co-founder of the Claude Code Profit Room. Went from shipping software to closing paying clients, and now teaches builders the selling half of the equation.
More from David Iya →
