macOS companion app
مجوزهای macOS
مجوزهای دسترسی در macOS شکنندهاند. TCC یک مجوز را به امضای کد برنامه، شناسهٔ بسته و مسیر آن روی دیسک مرتبط میکند. اگر هرکدام از این موارد تغییر کند، macOS برنامه را جدید تلقی میکند و ممکن است اعلانهای درخواست مجوز را حذف یا پنهان کند.
الزامات مجوزهای پایدار
- مسیر یکسان: برنامه را از یک محل ثابت اجرا کنید (برای OpenClaw،
dist/OpenClaw.app). - شناسهٔ بستهٔ یکسان: شناسهٔ بستهٔ OpenClaw برابر با
ai.openclaw.macاست؛ تغییر آن یک هویت مجوز جدید ایجاد میکند. - برنامهٔ امضاشده: مجوزها برای ساختهای بدون امضا یا دارای امضای موقت پایدار نمیمانند.
- امضای یکسان: از یک گواهی واقعی Apple Development یا Developer ID استفاده کنید تا امضا در بازسازیهای متوالی ثابت بماند.
امضاهای موقت در هر ساخت، هویت جدیدی ایجاد میکنند. macOS مجوزهای قبلی را فراموش میکند و ممکن است اعلانهای درخواست مجوز تا زمان پاکشدن ورودیهای منسوخ، کاملاً ناپدید شوند.
مجوزهای دسترسپذیری برای محیطهای اجرای Node و CLI
بهجای یک فایل اجرایی عمومی node، ترجیحاً مجوز دسترسپذیری را به OpenClaw.app، Peekaboo.app یا یک ابزار کمکی امضاشدهٔ دیگر با شناسهٔ بستهٔ مختص خود اعطا کنید.
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) منتقل کنید.
اگر در حال آزمایش مجوزها هستید، همیشه با یک گواهی واقعی امضا کنید. ساختهای دارای امضای موقت فقط برای اجراهای سریع محلی که مجوزها در آنها اهمیتی ندارند قابلقبولاند.