macOS companion app
أذونات macOS
منح الأذونات في macOS هشّ. يربط TCC منح الإذن بتوقيع رمز التطبيق ومُعرّف الحزمة ومساره على القرص. إذا تغيّر أيٌّ منها، يعامل macOS التطبيق على أنه جديد وقد يُسقط المطالبات أو يخفيها.
متطلبات استقرار الأذونات
- المسار نفسه: شغّل التطبيق من موقع ثابت (بالنسبة إلى OpenClaw،
dist/OpenClaw.app). - مُعرّف الحزمة نفسه: مُعرّف حزمة OpenClaw هو
ai.openclaw.mac؛ ويؤدي تغييره إلى إنشاء هوية أذونات جديدة. - تطبيق موقّع: لا تحتفظ الإصدارات غير الموقّعة أو الموقّعة بتوقيع مخصّص بالأذونات.
- توقيع متسق: استخدم شهادة Apple Development أو Developer ID حقيقية ليظل التوقيع ثابتًا عبر عمليات إعادة البناء.
تُنشئ التوقيعات المخصّصة هوية جديدة مع كل عملية بناء. ينسى macOS عمليات المنح السابقة، وقد تختفي المطالبات تمامًا حتى تُمسح الإدخالات القديمة.
منح إمكانية الوصول لبيئات تشغيل Node وCLI
يُفضّل منح إمكانية الوصول إلى OpenClaw.app أو Peekaboo.app أو أداة مساعدة موقّعة أخرى لها مُعرّف حزمة خاص بها، بدلًا من ملف node تنفيذي عام.
يمنح TCC في macOS إمكانية الوصول لهوية رمز العملية التي يراها. إذا تسبب سير عمل يستخدم Homebrew أو nvm أو pnpm أو npm في منح إمكانية الوصول إلى ملف node تنفيذي مشترك، فقد ترث أي حزمة JavaScript تُشغَّل من خلال الملف التنفيذي نفسه امتيازات أتمتة واجهة المستخدم الرسومية.
تعامل مع إدخال node في System Settings باعتباره إذنًا واسعًا لبيئة تشغيل Node تلك، وليس إذنًا لحزمة npm واحدة. تجنّب منح إمكانية الوصول إلى node ما لم تكن تثق بكل برنامج نصي وحزمة تُشغَّل من خلال تثبيت Node نفسه.
إذا منحت إمكانية الوصول إلى node عن طريق الخطأ، فأزل ذلك الإدخال من System Settings -> Privacy & Security -> Accessibility. ثم امنح الإذن للتطبيق أو الأداة المساعدة الموقّعة التي ينبغي أن تتولى أتمتة واجهة المستخدم.
قائمة التحقق للاسترداد عند اختفاء المطالبات
- أغلق التطبيق.
- أزل إدخال التطبيق من System Settings -> Privacy & Security.
- أعد تشغيل التطبيق من المسار نفسه وامنحه الأذونات مجددًا.
- إذا استمرت المطالبة في عدم الظهور، فأعد تعيين إدخالات TCC باستخدام
tccutilثم حاول مرة أخرى. - لا تظهر بعض الأذونات مجددًا إلا بعد إعادة تشغيل macOS بالكامل.
أمثلة على إعادة التعيين (باستخدام مُعرّف حزمة OpenClaw، ai.openclaw.mac):
sudo tccutil reset Accessibility ai.openclaw.macsudo tccutil reset ScreenCapture ai.openclaw.macsudo tccutil reset AppleEventsأذونات الملفات والمجلدات (Desktop/Documents/Downloads)
قد يقيّد macOS أيضًا الوصول إلى Desktop وDocuments وDownloads لعمليات الطرفية أو العمليات التي تعمل في الخلفية. إذا توقفت قراءة الملفات أو سرد محتويات الأدلة عن الاستجابة، فامنح الوصول إلى سياق العملية نفسه الذي ينفّذ عمليات الملفات (مثل Terminal/iTerm، أو تطبيق يشغّله LaunchAgent، أو عملية SSH).
حل بديل: انقل الملفات إلى مساحة عمل OpenClaw (~/.openclaw/workspace) إذا أردت تجنّب منح الأذونات لكل مجلد على حدة.
إذا كنت تختبر الأذونات، فاستخدم دائمًا شهادة حقيقية للتوقيع. لا تُقبل الإصدارات ذات التوقيع المخصّص إلا لعمليات التشغيل المحلية السريعة التي لا تهم فيها الأذونات.