---
read_when:
    - การดีบักพรอมต์สิทธิ์ของ macOS ที่หายไปหรือค้างอยู่
    - กำลังตัดสินใจว่าจะให้สิทธิ์ Accessibility แก่ node หรือรันไทม์ CLI หรือไม่
    - การแพ็กเกจหรือการลงนามแอป macOS
    - การเปลี่ยน ID ของ bundle หรือพาธการติดตั้งแอป
summary: ข้อกำหนดด้านการคงอยู่ของสิทธิ์ macOS (TCC) และการลงนาม
title: สิทธิ์อนุญาตของ macOS
x-i18n:
    generated_at: "2026-06-27T17:49:51Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 7b7e21c53bff16c3023e2b6509894717c3d0ef96524951b0d0c5975d2fc91019
    source_path: platforms/mac/permissions.md
    workflow: 16
---

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

## ข้อกำหนดสำหรับสิทธิ์อนุญาตที่เสถียร

- พาธเดียวกัน: เรียกใช้แอปจากตำแหน่งคงที่ (สำหรับ OpenClaw คือ `dist/OpenClaw.app`)
- ตัวระบุบันเดิลเดียวกัน: การเปลี่ยน bundle ID จะสร้างข้อมูลประจำตัวสิทธิ์อนุญาตใหม่
- แอปที่ลงนามแล้ว: บิลด์ที่ไม่ได้ลงนามหรือลงนามแบบ ad-hoc จะไม่คงสิทธิ์อนุญาตไว้
- ลายเซ็นที่สม่ำเสมอ: ใช้ใบรับรอง Apple Development หรือ Developer ID จริง
  เพื่อให้ลายเซ็นคงที่ตลอดการ rebuild

ลายเซ็นแบบ ad-hoc จะสร้างข้อมูลประจำตัวใหม่ทุกครั้งที่ build macOS จะลืมสิทธิ์ที่เคยอนุญาตไว้ และข้อความแจ้งอาจหายไปทั้งหมดจนกว่าจะล้างรายการเก่า

## สิทธิ์ Accessibility สำหรับรันไทม์ Node และ CLI

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

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

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

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

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

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

ตัวอย่างการรีเซ็ต (เปลี่ยน bundle ID ตามต้องการ):

```bash
sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents
```

## สิทธิ์ไฟล์และโฟลเดอร์ (Desktop/Documents/Downloads)

macOS อาจจำกัด Desktop, Documents และ Downloads สำหรับกระบวนการเทอร์มินัล/เบื้องหลังด้วย หากการอ่านไฟล์หรือการแสดงรายการไดเรกทอรีค้าง ให้ให้สิทธิ์เข้าถึงแก่บริบทกระบวนการเดียวกันที่ดำเนินการกับไฟล์ (เช่น Terminal/iTerm, แอปที่เปิดโดย LaunchAgent หรือกระบวนการ SSH)

วิธีเลี่ยงปัญหา: ย้ายไฟล์เข้าไปในเวิร์กสเปซของ OpenClaw (`~/.openclaw/workspace`) หากคุณต้องการหลีกเลี่ยงการให้สิทธิ์รายโฟลเดอร์

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

## ที่เกี่ยวข้อง

- [แอป macOS](/th/platforms/macos)
- [การลงนาม macOS](/th/platforms/mac/signing)
