# إعدادات الأذونات

يستخدم Claude Code نظام أذونات للتحكم في العمليات التي تتطلب تأكيدًا من المستخدم. ويضمن ضبط الأذونات على نحو مناسب كلاً من الأمان وكفاءة التطوير.

## أوضاع الأذونات

| الوضع | الوصف | حالة الاستخدام |
|------|-------------|----------|
| `default` | يطلب الإذن عند أول استخدام لأداة (الوضع اليدوي) | التطوير اليومي، مع الموازنة بين الأمان والكفاءة |
| `acceptEdits` | يوافق تلقائيًا على تعديلات الملفات؛ وتظل العمليات الأخرى تتطلب تأكيدًا | المهام التي تتضمن تعديلات متكررة على الملفات |
| `plan` | تحليل فقط، دون تنفيذ (وضع الخطة)؛ وعندما يكون الوضع التلقائي متاحًا، تُراجع أوامر shell أثناء التخطيط بواسطة المصنّف | استكشاف الكود ومراجعته دون الرغبة في أن يجري Claude أي تغييرات |
| `auto` | يراجع مصنّف الإجراءات التي تحتاج إلى موافقة؛ فتُحظر الإجراءات الخارجة عن الحدود بوضوح، وتعمل البقية دون مطالبة | التطوير اليومي مع مقاطعات أقل (الوضع الافتراضي للجلسات التفاعلية منذ Claude Code 2.1.283) |
| `dontAsk` | يشغّل فقط الإجراءات التي لا تحتاج إلى موافقة (مثل قراءة الملفات في دليل العمل والأوامر المخصصة للقراءة فقط) والإجراءات الموافق عليها مسبقًا وفق قواعد السماح؛ ويُرفض كل ما عدا ذلك دون سؤال | CI/CD وغيرها من التشغيلات غير المراقَبة |
| `bypassPermissions` | تخطَّ جميع مطالبات الأذونات | بيئات معزولة بالكامل وموثوقة |

> **الوضع التلقائي وQCode**: يعمل الوضع التلقائي عبر 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
- للدخول إلى وضع الخطة، اضغط **`Shift+Tab`** مرتين من الوضع اليدوي (default)، أو ثلاث مرات من auto
- اختر وضعًا عند التشغيل: `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` جميع فحوصات الأمان. استخدمه فقط في بيئات معزولة وموثوقة تمامًا (مثل حاوية مؤقتة).