---
read_when:
    - คุณต้องมีฮุกหรือเครื่องมือของ Plugin เพื่อขอการยืนยันก่อนดำเนินการที่ก่อให้เกิดผลข้างเคียง
    - คุณต้องกำหนดค่าปลายทางที่จะส่งข้อความแจ้งขออนุมัติ Plugin
    - คุณกำลังตัดสินใจเลือกระหว่างเครื่องมือเสริม การอนุมัติการดำเนินการ และการอนุมัติ Plugin
sidebarTitle: Permission requests
summary: ขอให้ผู้ใช้อนุมัติการเรียกใช้เครื่องมือของ Plugin และพรอมต์ขอสิทธิ์ที่ Plugin เป็นเจ้าของ
title: คำขอสิทธิ์ของ Plugin
x-i18n:
    generated_at: "2026-07-16T19:25:42Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 675534212e70cc7b2e7bdc801955929c6a8156b08d620483edf0133afc3bfdaa
    source_path: plugins/plugin-permission-requests.md
    workflow: 16
---

คำขอสิทธิ์ของ Plugin ช่วยให้โค้ด Plugin หยุดการเรียกใช้เครื่องมือหรือการดำเนินการที่ Plugin เป็นเจ้าของไว้ชั่วคราว
จนกว่าผู้ใช้จะอนุมัติหรือปฏิเสธ โดยใช้โฟลว์ `plugin.approval.*` ของ Gateway
และพื้นผิว UI การอนุมัติเดียวกับที่ใช้จัดการปุ่มอนุมัติในแชต
และคำสั่ง `/approve`

ใช้คำขอสิทธิ์ของ Plugin สำหรับสิทธิ์ของ Plugin/แอป คำขอเหล่านี้ไม่ได้ใช้แทน
การอนุมัติ exec ของโฮสต์ รายการอนุญาตเครื่องมือแบบเลือกใช้ หรือการตรวจสอบสิทธิ์
แบบเนทีฟของ Codex

## เลือกด่านตรวจสอบที่เหมาะสม

เลือกด่านตรวจสอบที่ตรงกับจุดตัดสินใจที่ต้องการ:

| ด่านตรวจสอบ                             | ใช้เมื่อ                                                              | สิ่งที่ควบคุม                                                                                                  |
| -------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| เครื่องมือแบบเลือกใช้                   | ไม่ควรแสดงเครื่องมือแก่โมเดลจนกว่าผู้ใช้จะเลือกใช้        | การเปิดเผยเครื่องมือผ่าน `tools.allow`                                                                              |
| คำขอสิทธิ์ของ Plugin       | ฮุกของ Plugin หรือการดำเนินการที่ Plugin เป็นเจ้าของต้องขออนุญาตก่อนดำเนินการหนึ่งรายการ | การอนุมัติขณะรันผ่าน `plugin.approval.*`                                                                     |
| การอนุมัติ exec                   | คำสั่งโฮสต์หรือเครื่องมือที่คล้ายเชลล์ต้องได้รับการอนุมัติจากผู้ดำเนินการ               | นโยบาย exec ของโฮสต์และรายการอนุญาต exec แบบถาวร                                                                     |
| คำขอสิทธิ์แบบเนทีฟของ Codex | Codex ขออนุญาตก่อนดำเนินการกับเชลล์ ไฟล์ MCP หรือ app-server แบบเนทีฟ        | การจัดการการอนุมัติของ Codex app-server หรือฮุกแบบเนทีฟ ซึ่งส่งผ่านการอนุมัติของ Plugin เมื่อ OpenClaw เป็นเจ้าของพรอมต์ |
| การร้องขอการอนุมัติจาก MCP        | เซิร์ฟเวอร์ Codex MCP ขออนุมัติสำหรับการเรียกใช้เครื่องมือ                    | การตอบกลับการอนุมัติ MCP ที่เชื่อมต่อผ่านการอนุมัติของ Plugin ของ OpenClaw                                                 |

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

## ขออนุมัติก่อนเรียกใช้เครื่องมือ

พรอมต์ส่วนใหญ่ที่สร้างโดย Plugin ควรเริ่มในฮุก `before_tool_call` ฮุกนี้
ทำงานหลังจากโมเดลเลือกเครื่องมือและก่อนที่ OpenClaw จะเรียกใช้:

```typescript
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";

export default definePluginEntry({
  id: "deploy-policy",
  name: "Deploy Policy",
  register(api) {
    api.on("before_tool_call", async (event) => {
      if (event.toolName !== "deploy_service") {
        return;
      }

      const environment =
        typeof event.params.environment === "string" ? event.params.environment : "unknown";

      return {
        requireApproval: {
          title: "Deploy service",
          description: `Deploy service to ${environment}.`,
          severity: environment === "production" ? "critical" : "warning",
          allowedDecisions:
            environment === "production"
              ? ["allow-once", "deny"]
              : ["allow-once", "allow-always", "deny"],
          timeoutMs: 120_000,
          onResolution(decision) {
            console.log(`deploy approval resolved: ${decision}`);
          },
        },
      };
    });
  },
});
```

เขียนข้อความพรอมต์สำหรับผู้ที่จะอนุมัติการดำเนินการ:

- กำหนด `title` ให้สั้นและมุ่งเน้นการดำเนินการ Gateway จำกัดไว้ที่ 80 อักขระ
- กำหนด `description` ให้เฉพาะเจาะจงและมีขอบเขต Gateway จำกัดไว้ที่ 512
  อักขระ
- ระบุการดำเนินการ เป้าหมาย และความเสี่ยง อย่าระบุข้อมูลลับ โทเค็น หรือ
  เพย์โหลดส่วนตัวที่ไม่ควรปรากฏบนพื้นผิวการอนุมัติในแชต
- หากละเว้น `severity` ค่าเริ่มต้นคือ `"warning"` ใช้ `"critical"` เฉพาะกับ
  การดำเนินการที่การตัดสินใจผิดพลาดอาจสร้างความเสียหายต่อระบบใช้งานจริงหรือทำให้ข้อมูลสูญหาย
- หากละเว้น `allowedDecisions` ค่าเริ่มต้นคือ `["allow-once", "allow-always", "deny"]`
  ส่ง `["allow-once", "deny"]` เมื่อความเชื่อถือแบบถาวรไม่ปลอดภัยสำหรับ
  การดำเนินการนั้น
- หากละเว้น `timeoutMs` ค่าเริ่มต้นคือ 120000 (2 นาที) และจำกัดสูงสุดที่ 600000 (10
  นาที) ไม่ว่าค่าที่ขอจะเป็นเท่าใด

## พฤติกรรมการตัดสินใจ

OpenClaw สร้างการอนุมัติที่รอดำเนินการพร้อม ID `plugin:` ส่งไปยัง
พื้นผิวการอนุมัติที่พร้อมใช้งาน และรอการตัดสินใจ

| การตัดสินใจ          | ผลลัพธ์                                                                    |
| ----------------- | ------------------------------------------------------------------------- |
| `allow-once`      | การเรียกปัจจุบันดำเนินต่อ                                               |
| `allow-always`    | การเรียกปัจจุบันดำเนินต่อและส่งการตัดสินใจให้ Plugin      |
| `deny`            | การเรียกถูกบล็อกพร้อมผลลัพธ์เครื่องมือที่ถูกปฏิเสธ                            |
| หมดเวลา           | การเรียกถูกบล็อก                                                      |
| การยกเลิก      | การเรียกถูกบล็อกเมื่อการรันถูกยกเลิก                              |
| ไม่มีเส้นทางการอนุมัติ | การเรียกถูกบล็อกเนื่องจากไม่มีพื้นผิวการอนุมัติที่เชื่อมต่ออยู่สามารถดำเนินการให้เสร็จสิ้นได้ |

มีเพียงการตัดสินใจ `allow-once` และ `allow-always` ที่ตรงกันทุกประการและได้รับอนุญาตจาก
คำขอเท่านั้นที่อนุญาตให้ดำเนินการ การตัดสินใจที่ไม่รู้จัก ผิดรูปแบบ ไม่ตรงกัน ขาดหาย หรือหมดเวลา
จะปฏิเสธโดยค่าเริ่มต้น ฟิลด์เดิม `timeoutBehavior` ยังคงรองรับเพื่อ
ความเข้ากันได้ของ Plugin แต่เลิกใช้แล้วและจะถูกละเว้น อย่ากำหนดฟิลด์นี้ในฮุกใหม่

`allow-always` จะคงอยู่ถาวรก็ต่อเมื่อ Plugin หรือรันไทม์ที่ส่งคำขอ
นำการคงอยู่นั้นไปใช้ สำหรับฮุก `before_tool_call.requireApproval` ทั่วไป
OpenClaw ถือว่า `allow-once` และ `allow-always` เป็นการตัดสินใจอนุมัติสำหรับ
การเรียกปัจจุบัน และส่งค่าที่ได้ไปยัง `onResolution` หาก Plugin
เสนอ `allow-always` ให้บันทึกเอกสารและนำไปใช้อย่างชัดเจนว่าจะเชื่อถือ
การเรียกในอนาคตใดบ้าง

หากฮุกส่งคืน `params` ด้วย OpenClaw จะใช้การเปลี่ยนแปลงพารามิเตอร์เหล่านั้นเฉพาะ
หลังจากการอนุมัติสำเร็จ ฮุกที่มีลำดับความสำคัญต่ำกว่ายังคงสามารถบล็อกได้หลังจาก
ฮุกที่มีลำดับความสำคัญสูงกว่าขอการอนุมัติแล้ว

`allowedDecisions` จำกัดปุ่มและคำสั่งที่แสดงแก่ผู้ใช้
Gateway จะปฏิเสธความพยายามดำเนินการให้เสร็จสิ้นสำหรับการตัดสินใจใดก็ตามที่คำขอไม่ได้เสนอไว้

## กำหนดเส้นทางพรอมต์การอนุมัติ

พรอมต์การอนุมัติสามารถดำเนินการให้เสร็จสิ้นในพื้นผิว UI ภายในเครื่องหรือในช่องแชตที่
รองรับการจัดการการอนุมัติ หากต้องการส่งต่อพรอมต์การอนุมัติของ Plugin ไปยังเป้าหมายแชต
ที่ระบุอย่างชัดเจน ให้กำหนดค่า `approvals.plugin`:

```json5
{
  approvals: {
    plugin: {
      enabled: true,
      mode: "targets",
      agentFilter: ["main"],
      targets: [{ channel: "slack", to: "U12345678" }],
    },
  },
}
```

`approvals.plugin` เป็นอิสระจาก `approvals.exec` การเปิดใช้การส่งต่อการอนุมัติ exec
จะไม่กำหนดเส้นทางพรอมต์การอนุมัติของ Plugin และการเปิดใช้การส่งต่อการอนุมัติของ Plugin
จะไม่เปลี่ยนนโยบาย exec ของโฮสต์

เมื่อพรอมต์มีข้อความการอนุมัติด้วยตนเอง ให้ดำเนินการให้เสร็จสิ้นด้วยหนึ่งในการตัดสินใจ
ที่เสนอ:

```text
/approve <id> allow-once
/approve <id> allow-always
/approve <id> deny
```

ดู [การอนุมัติ exec ขั้นสูง](/th/tools/exec-approvals-advanced#plugin-approval-forwarding)
สำหรับโมเดลการส่งต่อทั้งหมด พฤติกรรมการอนุมัติในแชตเดียวกัน การส่งผ่านช่องทางแบบเนทีฟ
และกฎผู้อนุมัติเฉพาะช่องทาง

## สิทธิ์แบบเนทีฟของ Codex

พรอมต์สิทธิ์แบบเนทีฟของ Codex สามารถส่งผ่านการอนุมัติของ Plugin ได้เช่นกัน แต่
มีความเป็นเจ้าของแตกต่างจากฮุกที่สร้างโดย Plugin

- คำขออนุมัติของ Codex app-server ส่งผ่าน OpenClaw หลังจาก Codex ตรวจสอบ
- รีเลย์ฮุกแบบเนทีฟ `permission_request` สามารถขอผ่าน
  `plugin.approval.request` เมื่อเปิดใช้รีเลย์นั้น
- การร้องขออนุมัติเครื่องมือ MCP ส่งผ่านการอนุมัติของ Plugin เมื่อ Codex กำหนด
  `_meta.codex_approval_kind` เป็น `"mcp_tool_call"`

ดู [รันไทม์ชุดควบคุม Codex](/th/plugins/codex-harness-runtime#native-permissions-and-mcp-elicitations)
สำหรับพฤติกรรมเฉพาะของ Codex และกฎการสำรอง

## การแก้ไขปัญหา

**เครื่องมือแจ้งว่าการอนุมัติของ Plugin ไม่พร้อมใช้งาน** ไม่มี UI การอนุมัติหรือเส้นทาง
การอนุมัติที่กำหนดค่าไว้ยอมรับคำขอ เชื่อมต่อไคลเอนต์ที่รองรับการอนุมัติ ใช้
ช่องทางที่รองรับ `/approve` ในแชตเดียวกัน หรือกำหนดค่า `approvals.plugin`

**`allow-always` ปรากฏขึ้น แต่การเรียกครั้งถัดไปถามอีกครั้ง** โฟลว์การอนุมัติของ Plugin
ทั่วไปไม่ได้คงความเชื่อถือสำหรับฮุกที่กำหนดเองโดยอัตโนมัติ ให้คงความเชื่อถือที่ Plugin
เป็นเจ้าของไว้ใน Plugin หลังจาก `onResolution("allow-always")` หรือ
เสนอเฉพาะ `allow-once` และ `deny`

**`/approve` ปฏิเสธการตัดสินใจ** คำขอจำกัด
`allowedDecisions` ให้ใช้หนึ่งในการตัดสินใจที่พิมพ์อยู่ในพรอมต์

**พรอมต์ของ Discord, Matrix, Slack หรือ Telegram ถูกกำหนดเส้นทางแตกต่างจากการอนุมัติ
exec** การอนุมัติของ Plugin และการอนุมัติ exec ใช้การกำหนดค่าแยกกันและอาจใช้
การตรวจสอบการให้สิทธิ์ต่างกัน ตรวจสอบ `approvals.plugin` และการรองรับ
การอนุมัติของ Plugin ของช่องทาง แทนที่จะตรวจสอบเพียง `approvals.exec`

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

- [ฮุกของ Plugin](/th/plugins/hooks#tool-call-policy)
- [การสร้าง Plugin](/th/plugins/building-plugins#registering-tools)
- [การอนุมัติ exec ขั้นสูง](/th/tools/exec-approvals-advanced#plugin-approval-forwarding)
- [โปรโตคอล Gateway](/th/gateway/protocol)
- [รันไทม์ชุดควบคุม Codex](/th/plugins/codex-harness-runtime#native-permissions-and-mcp-elicitations)
