حلّل المحادثة الحالية وأضف أوامر القراءة فقط إلى قائمة السماح في Claude وGemini.
View original English source# المهمة: تحديث صلاحيات الوكلاء فضلاً حلّل كامل محادثتنا وحدّد جميع الأوامر بعينها التي تم استخدامها. حدّث الصلاحيات لكلٍّ من Claude Code وGemini CLI. ## ملفات المرجع - Claude: ~/.claude/settings.json - سياسة Gemini: ~/.gemini/policies/tool-permissions.toml - إعدادات Gemini: ~/.gemini/settings.json - المجلدات الموثوقة في Gemini: ~/.gemini/trustedFolders.json ## التعليمات 1. التدقيق: قارن الأوامر التي تم تحديدها مع الأوامر المسموح بها حالياً في ملفّي الإعدادات. 2. التصفية: أدرج فقط الأوامر التي تتيح وصول قراءة فقط إلى الموارد. 3. التقييد: استبعد صراحةً أي أوامر يمكنها تعديل البيانات أو حذفها أو إتلافها. 4. التحديث: أضف فقط أوامر القراءة فقط الناقصة إلى ملفّي الإعدادات. 5. القيد: لا تستخدم محارف البدل (wildcards). يجب إدراج كل أمر بشكل مستقل لضمان أمان أدق. اعرض لي قائمة الأوامر تحت تصنيفين: قراءة فقط، وكتابة. اهتمامنا الأساسي هنا بأوامر القراءة فقط التي تندرج تحت فئات مثل: Read أو Get أو Describe أو View أو ما يشابهها. بعد موافقتي على القائمة، حدّث ملفّي الإعدادات. ## صيغة Claude الملف: ~/.claude/settings.json يستخدم Claude كائن صلاحيات بصيغة JSON يحتوي على مصفوفات allow وdeny وask. صيغة السماح: `Bash(command subcommand:*)` أدرج الأوامر الجديدة بترتيب أبجدي داخل مصفوفة allow. ## صيغة Gemini الملف: ~/.gemini/policies/tool-permissions.toml يستخدم Gemini محرّك سياسات بصيغة TOML مع قواعد على مستويات أولوية مختلفة. أنواع القواعد والأولويات: - `decision = "deny"` عند `priority = 200` للعمليات المدمّرة - `decision = "ask_user"` عند `priority = 150` لعمليات الكتابة التي تحتاج تأكيداً - `decision = "allow"` عند `priority = 100` لعمليات القراءة فقط في قواعد السماح، استخدم `commandPrefix` لأنه يطابق حدود الكلمات. في قواعد المنع وطلب التأكيد، استخدم `commandRegex` لأنه يلتقط تنويعات خيارات سطر الأوامر (flags). يجب إضافة أوامر القراءة فقط الجديدة إلى كتلة `[[rule]]` المناسبة الموجودة حسب التصنيف، أو إنشاء كتلة جديدة إذا لم يوجد تصنيف مناسب. مثال على قاعدة سماح: ```toml [[rule]] toolName = "run_shell_command" commandPrefix = ["command subcommand1", "command subcommand2"] decision = "allow" priority = 100 ``` ## مجلدات Gemini إذا تم الوصول إلى أي مجلدات جديدة خارج مساحة العمل، فأضفها إلى: - `context.includeDirectories` في ~/.gemini/settings.json - ~/.gemini/trustedFolders.json بالقيمة `"TRUST_FOLDER"` ## الاستثناءات لا تقترح إضافة الأوامر التالية: - git branch: لأن الخيار -D يحذف الفروع - git pull: لاحتمالية تنفيذ دمج - git checkout: تغيير الفروع قد يعطّل سير العمل - ajira issue create: لتجنب إنشاء عدد كبير من التذاكر الجديدة - find: لأن الخيارين -delete و-exec قد يكونان مدمّرين، استخدم fd بدلاً منه