# پیکربندی اجازه‌ها

Claude Code از یک سیستم اجازه استفاده می‌کند تا کنترل کند کدام عملیات به تأیید کاربر نیاز دارند. پیکربندی درست اجازه‌ها هم امنیت و هم بهره‌وری توسعه را تضمین می‌کند.

## حالت‌های اجازه

| حالت | توضیح | کاربرد |
|------|-------------|----------|
| `default` | بار اولی که یک ابزار استفاده می‌شود، اجازه می‌خواهد (حالت دستی) | توسعه روزمره، با تعادل میان امنیت و بهره‌وری |
| `acceptEdits` | ویرایش فایل‌ها را به‌طور خودکار تأیید می‌کند؛ سایر عملیات همچنان نیازمند تأیید هستند | کارهایی که شامل تغییرات مکرر فایل هستند |
| `plan` | فقط تحلیل، بدون اجرا (حالت Plan)؛ زمانی که حالت auto در دسترس باشد، دستورهای shell در حین برنامه‌ریزی توسط طبقه‌بند بررسی می‌شوند | کاوش و بررسی کد بدون اینکه بخواهید Claude تغییری ایجاد کند |
| `auto` | یک طبقه‌بند اقداماتی را که نیاز به تأیید دارند بررسی می‌کند؛ اقداماتی که به‌وضوح خارج از محدوده باشند مسدود می‌شوند و بقیه بدون درخواست تأیید اجرا می‌شوند | توسعه روزمره با وقفه‌های کمتر (پیش‌فرض نشست‌های تعاملی از Claude Code 2.1.283 به بعد) |
| `dontAsk` | فقط اقداماتی را اجرا می‌کند که نیازی به تأیید ندارند (مانند خواندن فایل در پوشه کاری و دستورهای فقط‌خواندنی) و اقداماتی که از پیش با قواعد مجاز تأیید شده‌اند؛ بقیه بدون پرسش رد می‌شوند | CI/CD و سایر اجراهای بدون نظارت |
| `bypassPermissions` | نادیده گرفتن همه درخواست‌های اجازه | محیط‌های کاملاً ایزوله و مورد اعتماد |

> **حالت auto و QCode**: حالت auto از طریق QCode کار می‌کند. درخواست‌های طبقه‌بند توسط خود Claude Code ارسال می‌شوند (مدل پیش‌فرض
> `claude-sonnet-5`) و **در مصرف شما محاسبه می‌شوند**. اگر اعلانی انگلیسی با این مضمون می‌بینید که «your requests go through … which isn't
> compatible»، یک نشست تعاملی اولین اقدامی را که نیاز به بررسی دارد تا فشردن Enter نگه می‌دارد؛ برای رفع آن
> `CLAUDE_CODE_AUTO_MODE_SERVER=0` را تنظیم کنید. به [دسترسی به قابلیت‌ها](/docs/reference/feature-availability) مراجعه کنید.

### تغییر حالت‌های اجازه

- برای چرخش میان حالت‌های اجازه **`Shift+Tab`** را فشار دهید؛ از حالت auto چرخه به این ترتیب است: auto → default → acceptEdits → plan
- برای ورود به حالت Plan، از حالت دستی (default) دو بار و از حالت auto سه بار **`Shift+Tab`** را فشار دهید
- انتخاب یک حالت هنگام راه‌اندازی: `claude --permission-mode acceptEdits`
- انتخاب مستقیم یک حالت از دیالوگ
## پیکربندی حالت مجوز پیش‌فرض

در `.claude/settings.json` (پروژه) یا `~/.claude/settings.json` (کاربر) پیکربندی کنید:

```json
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}
```

> توجه: `"defaultMode": "auto"` **فقط از فایل `~/.claude/settings.json` در سطح کاربر یا تنظیمات مدیریت‌شده سازمان شما
> اعمال می‌شود**. در `.claude/settings.json` یا `.claude/settings.local.json` پروژه نادیده گرفته می‌شود و نشست
> از پیش‌فرض داخلی استفاده می‌کند (نه تنظیم سطح کاربر شما). `bypassPermissions` نیز از تنظیمات پروژه اعمال نمی‌شود.
> همچنین گزینه `--permission-mode` بر فایل‌های تنظیمات اولویت دارد.

## قواعد اجازه: تأیید پیشاپیش دستورها

دستورهای مشخصی را از پیش تأیید کنید تا هر بار از شما پرسیده نشود:

```json
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test:*)",
      "Bash(git status)",
      "Bash(git add:*)",
      "Bash(git diff:*)"
    ]
  }
}
```

**نحو قواعد اجازه**:
- `Bash(command)` — تطابق دقیق دستور
- `Bash(prefix:*)` — دستورهایی را مطابقت می‌دهد که با پیشوند داده‌شده شروع می‌شوند
- `Read(file path)` — اجازه خواندن یک فایل مشخص
- `Write(file path)` — اجازه نوشتن در یک فایل مشخص

## قواعد رد: محافظت از فایل‌های حساس

از دسترسی یا تغییر فایل‌های حساس توسط Claude جلوگیری کنید:

```json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Write(./.git/**)",
      "Bash(rm -rf:*)"
    ]
  }
}
```

**نحو قواعد رد**:
- الگوهای مسیر از نویسه‌های عام `*` (یک سطح) و `**` (چند سطح) پشتیبانی می‌کنند
- قواعد رد **اولویت بالاتری** از قواعد اجازه دارند

## استفاده هم‌زمان از اجازه و رد

```json
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff)"
    ],
    "deny": [
      "Bash(git push:*)",
      "Bash(rm -rf:*)",
      "Read(./.env*)"
    ]
  }
}
```

## سلسله‌مراتب فایل‌های پیکربندی

Claude Code پیکربندی‌های مجوز را به ترتیب اولویت زیر ادغام می‌کند:

| اولویت | مکان | دامنه |
|----------|----------|-------|
| بالاترین | `.claude/settings.local.json` (در Git کامیت نشده) | بازنویسی‌های محلی شخصی |
| میانی | `.claude/settings.json` (کامیت‌شده در Git) | پیکربندی مشترک تیم |
| پایین‌ترین | `~/.claude/settings.json` | پیکربندی سراسری کاربر |

**نکات همکاری تیمی**:
- قواعد اجازه/رد در سطح تیم را در `.claude/settings.json` قرار دهید و آن را در Git کامیت کنید
- تنظیمات مخصوص شخصی را در `.claude/settings.local.json` قرار دهید و آن را به `.gitignore` اضافه کنید

## بهترین شیوه‌ها

**1. محافظت از اعتبارنامه‌های حساس**
```json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./credentials/**)",
      "Read(./.ssh/**)"
    ]
  }
}
```

**2. پیکربندی پروژه فرانت‌اند**
```json
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allow": [
      "Bash(npm run dev)",
      "Bash(npm run build)",
      "Bash(npm run test:*)",
      "Bash(npm run lint:*)"
    ]
  }
}
```

**3. خودکارسازی CI/CD**

از Claude Code 2.1.285 به بعد، `claude -p` و Agent SDK **وقتی هیچ حالت مجوزی تنظیم نشده باشد در حالت `auto` شروع می‌شوند**، در نشست‌هایی که نمی‌توانند پرچم‌های ویژگی را دریافت کنند. اتصال به QCode با `ANTHROPIC_AUTH_TOKEN` هیچ اعتبارنامه‌ای برای دریافت آن‌ها به Claude Code نمی‌دهد (همین موضوع برای کانتینرهای CI که در هر اجرا از نو شروع می‌شوند نیز صادق است)، بنابراین این پیش‌فرض CI شماست. در CI، حالت را صریحاً تنظیم کنید. توصیه می‌کنیم `dontAsk` را همراه با فهرست مجاز به کار ببرید: فقط اقدام‌هایی که به تأیید نیاز ندارند و ابزارهای فهرست‌شده اجرا می‌شوند و هر چیز دیگری رد می‌شود.

```bash
claude -p "Run the tests and fix failures" \
  --permission-mode dontAsk \
  --allowedTools "Read,Edit,Bash(npm test)"
```

یا در تنظیمات پروژه:

```json
{
  "permissions": {
    "defaultMode": "dontAsk",
    "allow": ["Read", "Edit", "Bash(npm test)"]
  }
}
```

> ⚠️ **هشدار**: حالت `bypassPermissions` همه بررسی‌های امنیتی را نادیده می‌گیرد. فقط در محیط‌های کاملاً ایزوله و قابل‌اعتماد (مانند یک کانتینر یک‌بارمصرف) از آن استفاده کنید.