Langsung ke konten utama

Izin macOS (TCC)

Pemberian izin di macOS itu rapuh. TCC mengaitkan pemberian izin dengan signature kode aplikasi, bundle identifier, dan path di disk. Jika salah satunya berubah, macOS menganggap aplikasi tersebut baru dan dapat menghapus atau menyembunyikan prompt.

Persyaratan untuk izin yang stabil

  • Path yang sama: jalankan aplikasi dari lokasi tetap (untuk OpenClaw, dist/OpenClaw.app).
  • Bundle identifier yang sama: mengubah bundle ID membuat identitas izin baru.
  • Aplikasi ditandatangani: build tanpa tanda tangan atau yang ditandatangani ad-hoc tidak mempertahankan izin.
  • Signature yang konsisten: gunakan sertifikat Apple Development atau Developer ID yang nyata agar signature tetap stabil di seluruh rebuild.
Signature ad-hoc menghasilkan identitas baru setiap build. macOS akan melupakan pemberian izin sebelumnya, dan prompt dapat hilang sepenuhnya sampai entri lama dibersihkan.

Checklist pemulihan saat prompt hilang

  1. Keluar dari aplikasi.
  2. Hapus entri aplikasi di Pengaturan Sistem -> Privasi & Keamanan.
  3. Jalankan ulang aplikasi dari path yang sama dan berikan kembali izin.
  4. Jika prompt masih tidak muncul, reset entri TCC dengan tccutil lalu coba lagi.
  5. Beberapa izin hanya muncul kembali setelah restart macOS penuh.
Contoh reset (ganti bundle ID sesuai kebutuhan):
sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents

Izin file dan folder (Desktop/Documents/Downloads)

macOS juga dapat membatasi akses ke Desktop, Documents, dan Downloads untuk proses terminal/latar belakang. Jika pembacaan file atau listing direktori macet, berikan akses ke konteks proses yang sama yang melakukan operasi file (misalnya proses Terminal/iTerm, aplikasi yang dijalankan LaunchAgent, atau proses SSH). Solusi sementara: pindahkan file ke workspace OpenClaw (~/.openclaw/workspace) jika Anda ingin menghindari pemberian izin per folder. Jika Anda sedang menguji izin, selalu tandatangani dengan sertifikat nyata. Build ad-hoc hanya dapat diterima untuk run lokal cepat saat izin tidak penting.