macOS companion app
مجوزهای macOS
مجوزهای macOS شکنندهاند. TCC اعطای مجوز را به امضای کد برنامه، شناسه bundle، و مسیر روی دیسک مرتبط میکند. اگر هرکدام از اینها تغییر کند، macOS برنامه را جدید تلقی میکند و ممکن است اعلانها را حذف یا پنهان کند.
الزامات برای مجوزهای پایدار
- مسیر یکسان: برنامه را از یک مکان ثابت اجرا کنید (برای OpenClaw،
dist/OpenClaw.app). - شناسه bundle یکسان: تغییر شناسه bundle یک هویت مجوز جدید ایجاد میکند.
- برنامه امضاشده: بیلدهای بدون امضا یا با امضای ad-hoc مجوزها را پایدار نگه نمیدارند.
- امضای سازگار: از یک گواهی واقعی Apple Development یا Developer ID استفاده کنید تا امضا در بازسازیها پایدار بماند.
امضاهای ad-hoc در هر بیلد یک هویت جدید تولید میکنند. macOS مجوزهای اعطاشده قبلی را فراموش میکند، و اعلانها میتوانند کاملاً ناپدید شوند تا زمانی که ورودیهای قدیمی پاک شوند.
مجوزهای دسترسیپذیری برای زماناجرای Node و CLI
ترجیحاً بهجای یک باینری عمومی node، مجوز دسترسیپذیری را به OpenClaw.app، Peekaboo.app، یا یک helper امضاشده دیگر با شناسه bundle اختصاصی خودش بدهید.
TCC در macOS مجوز دسترسیپذیری را به هویت کد فرایندی که میبیند اعطا میکند. اگر یک گردشکار Homebrew، nvm، pnpm، یا npm باعث شود یک فایل اجرایی مشترک node مجوز دسترسیپذیری دریافت کند، هر بسته JavaScript که از طریق همان فایل اجرایی اجرا شود ممکن است امتیازهای خودکارسازی GUI را به ارث ببرد.
یک ورودی node در تنظیمات سیستم را بهعنوان مجوز گسترده برای آن زماناجرای Node در نظر بگیرید، نه مجوز برای یک بسته npm خاص. از اعطای دسترسیپذیری به node خودداری کنید مگر اینکه به همه اسکریپتها و بستههایی که از طریق همان نصب دقیق Node اجرا میشوند اعتماد داشته باشید.
اگر بهاشتباه به node مجوز دسترسیپذیری دادهاید، آن ورودی را از تنظیمات سیستم -> حریم خصوصی و امنیت -> دسترسیپذیری حذف کنید. سپس مجوز را به برنامه یا helper امضاشدهای بدهید که باید مالک خودکارسازی UI باشد.
چکلیست بازیابی وقتی اعلانها ناپدید میشوند
- برنامه را ببندید.
- ورودی برنامه را در تنظیمات سیستم -> حریم خصوصی و امنیت حذف کنید.
- برنامه را دوباره از همان مسیر اجرا کنید و مجوزها را دوباره اعطا کنید.
- اگر اعلان همچنان ظاهر نمیشود، ورودیهای TCC را با
tccutilبازنشانی کنید و دوباره تلاش کنید. - بعضی مجوزها فقط پس از راهاندازی مجدد کامل macOS دوباره ظاهر میشوند.
نمونههای بازنشانی (شناسه bundle را در صورت نیاز جایگزین کنید):
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) منتقل کنید.
اگر در حال آزمایش مجوزها هستید، همیشه با یک گواهی واقعی امضا کنید. بیلدهای ad-hoc فقط برای اجراهای محلی سریع که مجوزها در آنها اهمیتی ندارند قابل قبولاند.