macOS companion app
สิทธิ์อนุญาตของ macOS
สิทธิ์ที่อนุญาตบน macOS มีความเปราะบาง TCC เชื่อมโยงสิทธิ์ที่อนุญาตเข้ากับลายเซ็นโค้ด ตัวระบุบันเดิล และพาธบนดิสก์ของแอป หากสิ่งใดสิ่งหนึ่งเปลี่ยนแปลง macOS จะถือว่าเป็นแอปใหม่และอาจยกเลิกหรือซ่อนข้อความแจ้งขอสิทธิ์
ข้อกำหนดเพื่อให้สิทธิ์คงที่
- พาธเดิม: เรียกใช้แอปจากตำแหน่งที่แน่นอน (สำหรับ OpenClaw คือ
dist/OpenClaw.app) - ตัวระบุบันเดิลเดิม: ID บันเดิลของ OpenClaw คือ
ai.openclaw.mac; การเปลี่ยนค่านี้จะสร้างอัตลักษณ์สิทธิ์ใหม่ - แอปที่ลงนามแล้ว: บิลด์ที่ไม่ได้ลงนามหรือลงนามแบบ ad-hoc จะไม่เก็บรักษาสิทธิ์ไว้
- ลายเซ็นที่สม่ำเสมอ: ใช้ใบรับรอง Apple Development หรือ Developer ID จริง เพื่อให้ลายเซ็นคงที่ในทุกการบิลด์ใหม่
ลายเซ็นแบบ ad-hoc จะสร้างอัตลักษณ์ใหม่ในทุกบิลด์ macOS จะลืมสิทธิ์ที่เคยอนุญาต และข้อความแจ้งขอสิทธิ์อาจหายไปทั้งหมดจนกว่าจะล้างรายการที่ค้างอยู่
การอนุญาต Accessibility สำหรับรันไทม์ Node และ CLI
ควรอนุญาต Accessibility ให้ OpenClaw.app, Peekaboo.app หรือตัวช่วยอื่นที่ลงนามแล้วและมีตัวระบุบันเดิลของตนเอง แทนที่จะอนุญาตให้ไบนารี node ทั่วไป
TCC ของ macOS อนุญาต Accessibility ให้แก่อัตลักษณ์โค้ดของโพรเซสที่ตรวจพบ หากเวิร์กโฟลว์ Homebrew, nvm, pnpm หรือ npm ทำให้ไฟล์ปฏิบัติการ node ที่ใช้ร่วมกันได้รับสิทธิ์ Accessibility แพ็กเกจ JavaScript ใดก็ตามที่เรียกใช้ผ่านไฟล์ปฏิบัติการเดียวกันนั้นอาจสืบทอดสิทธิ์การทำงานอัตโนมัติของ GUI
ให้ถือว่ารายการ node ใน System Settings เป็นสิทธิ์แบบกว้างสำหรับรันไทม์ Node นั้น ไม่ใช่สิทธิ์สำหรับแพ็กเกจ npm เพียงแพ็กเกจเดียว หลีกเลี่ยงการอนุญาต Accessibility ให้ node เว้นแต่คุณจะเชื่อถือสคริปต์และแพ็กเกจทั้งหมดที่เรียกใช้ผ่านการติดตั้ง Node ชุดนั้นโดยเฉพาะ
การอนุมัติ Accessibility ไม่ได้เปิดใช้งานการแชร์กิจกรรม Settings -> Permissions -> Active computer detection เป็นการควบคุมแยกต่างหากซึ่งปิดไว้โดยค่าเริ่มต้น สำหรับแชร์ระยะเวลาที่ไม่มีการใช้งานแบบจำกัดกับ Gateway ของคุณ การปิดตัวเลือกนี้จะล้างกิจกรรมที่เก็บไว้โดยไม่เพิกถอน Accessibility หรือตัดการเชื่อมต่อ Node
หากคุณอนุญาต Accessibility ให้ node โดยไม่ได้ตั้งใจ ให้นำรายการนั้นออกจาก System Settings -> Privacy & Security -> Accessibility จากนั้นจึงอนุญาตให้แอปหรือตัวช่วยที่ลงนามแล้วซึ่งควรเป็นเจ้าของการทำงานอัตโนมัติของ UI
รายการตรวจสอบเพื่อกู้คืนเมื่อข้อความแจ้งขอสิทธิ์หายไป
- ออกจากแอป
- นำรายการแอปออกจาก System Settings -> Privacy & Security
- เปิดแอปอีกครั้งจากพาธเดิมและอนุญาตสิทธิ์ใหม่
- หากข้อความแจ้งยังไม่ปรากฏ ให้รีเซ็ตรายการ TCC ด้วย
tccutilแล้วลองอีกครั้ง - สิทธิ์บางรายการจะปรากฏอีกครั้งหลังจากรีสตาร์ท macOS โดยสมบูรณ์เท่านั้น
ตัวอย่างการรีเซ็ต (โดยใช้ ID บันเดิลของ 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) หากต้องการหลีกเลี่ยงการอนุญาตสิทธิ์แยกแต่ละโฟลเดอร์
หากกำลังทดสอบสิทธิ์ ให้ลงนามด้วยใบรับรองจริงเสมอ บิลด์แบบ ad-hoc ยอมรับได้เฉพาะการเรียกใช้ภายในเครื่องแบบรวดเร็วที่สิทธิ์ไม่มีความสำคัญเท่านั้น