> ## Documentation Index
> Fetch the complete documentation index at: https://cisco-ea52c096.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Permissions

> Learn how Claude Code asks for approval before running commands or modifying files, and how to configure permission modes.

Claude Code checks with you before taking actions that could have side effects — running shell commands, writing files, or making network requests. This gives you visibility and control over what Claude does on your machine.

## What requires approval

Not every tool call requires a prompt. Read-only operations (file reads, searches, glob patterns) generally run without asking. Actions that change state require approval by default:

<AccordionGroup>
  <Accordion title="Bash commands">
    Any shell command run via **BashTool** requires approval. Claude shows you the exact command before executing it. You can edit the command before approving.
  </Accordion>

  <Accordion title="File writes and edits">
    Creating a new file (**FileWriteTool**) or modifying an existing one (**FileEditTool**, **FileWriteTool**) requires approval. Claude shows you a diff of the proposed change.
  </Accordion>

  <Accordion title="Network requests">
    Fetching URLs via **WebFetchTool** requires approval. **WebSearchTool** queries also go through the permission system.
  </Accordion>

  <Accordion title="MCP tool calls">
    Tools provided by connected MCP servers follow the same permission flow as built-in tools.
  </Accordion>
</AccordionGroup>

## Permission modes

Claude Code supports several permission modes that control how approvals are handled.

<CardGroup cols={2}>
  <Card title="default" icon="hand">
    Claude asks for approval before every tool call that requires it. This is the default behavior.
  </Card>

  <Card title="plan" icon="list-check">
    Claude proposes a full plan before executing anything. You review the plan and approve it as a whole before any tools run.
  </Card>

  <Card title="acceptEdits" icon="file-pen">
    File edits are auto-approved, but shell commands and network requests still require manual approval.
  </Card>

  <Card title="bypassPermissions" icon="shield-off">
    All tool calls are auto-approved without prompting. Use this only in trusted, sandboxed environments.
  </Card>
</CardGroup>

You can set the default mode in your settings file under `defaultMode`, or pass `--permission-mode` when starting a session.

<Warning>
  `bypassPermissions` mode skips all approval prompts. Only use it in environments where you have full control over what Claude can access and modify.
</Warning>

## Responding to a permission prompt

When Claude requests approval, you have three options:

| Response | What it does |
| - | - |
| **Yes** | Approves this specific tool call. Claude will ask again next time. |
| **Yes, and don't ask again** | Approves this tool call and saves a rule so Claude never asks for the same type of action again in future sessions. |
| **No** | Denies the tool call. Claude receives a rejection message and may adjust its approach. |

When you deny a request, you can provide a reason. Claude uses that feedback to decide how to proceed.

## Always-allow and always-deny rules

When you approve with "don't ask again", Claude Code saves a **permission rule** scoped to a specific tool and input pattern. Rules can be stored at different levels:

* **User settings** — applies across all your projects
* **Project settings** — applies to the current project for all users
* **Local settings** — applies to the current project on your machine only
* **Session** — applies only for the current session

To review and manage your saved rules, run `/config`.

## Trust and session scope

Approvals you give without saving a permanent rule apply only to the current session. When you start a new session, Claude will ask again for the same actions.

Permanent rules (saved via "don't ask again") persist across sessions in your settings files. Project-level rules committed to your repository apply to everyone who uses Claude Code in that project.

<Tip>
  Use project-level permission rules to pre-approve safe, repetitive operations (like running your test suite) so your whole team doesn't need to approve them individually.
</Tip>

## Why permissions exist

Claude Code can read and write files, run commands, and make network requests — actions that are powerful but carry real risk if misused. The permission system ensures you always know what Claude is doing and can stop it at any point. Even in auto-approve modes, every tool call is logged in your terminal so you have a full record of what ran.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.