macOS companion app

สิทธิ์อนุญาตของ macOS

การให้สิทธิ์บน macOS มีความเปราะบาง TCC เชื่อมโยงการให้สิทธิ์เข้ากับลายเซ็นโค้ด ตัวระบุบันเดิล และพาธบนดิสก์ของแอป หากองค์ประกอบใดเปลี่ยนไป macOS จะถือว่าเป็นแอปใหม่ และอาจยกเลิกหรือซ่อนข้อความแจ้งขอสิทธิ์

ข้อกำหนดเพื่อให้สิทธิ์คงที่

  • พาธเดิม: เรียกใช้แอปจากตำแหน่งคงที่ (สำหรับ OpenClaw คือ dist/OpenClaw.app)
  • ตัวระบุบันเดิลเดิม: ID บันเดิลของ OpenClaw คือ ai.openclaw.mac การเปลี่ยนค่านี้จะสร้างอัตลักษณ์สิทธิ์ใหม่
  • แอปที่ลงนามแล้ว: บิลด์ที่ไม่ได้ลงนามหรือลงนามแบบเฉพาะกิจจะไม่คงสิทธิ์ไว้
  • ลายเซ็นที่สม่ำเสมอ: ใช้ใบรับรอง Apple Development หรือ Developer ID จริง เพื่อให้ลายเซ็นคงที่ระหว่างการบิลด์ใหม่

ลายเซ็นแบบเฉพาะกิจจะสร้างอัตลักษณ์ใหม่ทุกครั้งที่บิลด์ macOS จะลืมสิทธิ์ที่เคยให้ไว้ และข้อความแจ้งขอสิทธิ์อาจหายไปทั้งหมดจนกว่าจะล้างรายการเก่า

การให้สิทธิ์การช่วยการเข้าถึงสำหรับรันไทม์ Node และ CLI

ควรให้สิทธิ์การช่วยการเข้าถึงแก่ OpenClaw.app, Peekaboo.app หรือตัวช่วยอื่นที่ลงนามแล้วและมีตัวระบุบันเดิลของตนเอง แทนไบนารี node ทั่วไป

TCC ของ macOS ให้สิทธิ์การช่วยการเข้าถึงแก่อัตลักษณ์โค้ดของกระบวนการที่ตรวจพบ หากเวิร์กโฟลว์ของ Homebrew, nvm, pnpm หรือ npm ทำให้ไฟล์ปฏิบัติการ node ที่ใช้ร่วมกันได้รับสิทธิ์การช่วยการเข้าถึง แพ็กเกจ JavaScript ใดก็ตามที่เปิดใช้งานผ่านไฟล์ปฏิบัติการเดียวกันนั้นอาจได้รับสิทธิ์ควบคุม GUI ไปด้วย

ให้ถือว่ารายการ node ใน System Settings เป็นสิทธิ์แบบกว้างสำหรับรันไทม์ Node นั้น ไม่ใช่สิทธิ์สำหรับแพ็กเกจ npm เพียงแพ็กเกจเดียว หลีกเลี่ยงการให้สิทธิ์การช่วยการเข้าถึงแก่ node เว้นแต่คุณจะเชื่อถือสคริปต์และแพ็กเกจทั้งหมดที่เปิดใช้งานผ่านการติดตั้ง Node ชุดนั้นโดยเฉพาะ

หากคุณให้สิทธิ์การช่วยการเข้าถึงแก่ node โดยไม่ตั้งใจ ให้ลบรายการดังกล่าวออกจาก System Settings -> Privacy & Security -> Accessibility จากนั้นให้สิทธิ์แก่แอปหรือตัวช่วยที่ลงนามแล้วซึ่งควรเป็นเจ้าของการควบคุม UI อัตโนมัติ

รายการตรวจสอบการกู้คืนเมื่อข้อความแจ้งขอสิทธิ์หายไป

  1. ออกจากแอป
  2. ลบรายการแอปใน System Settings -> Privacy & Security
  3. เปิดแอปอีกครั้งจากพาธเดิม แล้วให้สิทธิ์อีกครั้ง
  4. หากข้อความแจ้งยังไม่ปรากฏ ให้รีเซ็ตรายการ TCC ด้วย tccutil แล้วลองอีกครั้ง
  5. สิทธิ์บางรายการจะปรากฏอีกครั้งหลังจากรีสตาร์ต macOS โดยสมบูรณ์เท่านั้น

ตัวอย่างการรีเซ็ต (โดยใช้ ID บันเดิลของ OpenClaw คือ ai.openclaw.mac):

bash
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) หากต้องการหลีกเลี่ยงการให้สิทธิ์แยกตามโฟลเดอร์

หากคุณกำลังทดสอบสิทธิ์ ให้ลงนามด้วยใบรับรองจริงเสมอ บิลด์แบบเฉพาะกิจเหมาะสำหรับการเรียกใช้ภายในเครื่องอย่างรวดเร็วซึ่งสิทธิ์ไม่สำคัญเท่านั้น

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page