---
{
  "id": "platform.trigger.permissions-and-safety",
  "topic": "trigger",
  "title": "Trigger 權限、public access 與安全",
  "locale": "zh-TW",
  "version": "2026-08-10",
  "summary": "Trigger write 只限 private；list/get 可 public read；破壞性 lifecycle 需要確認，runtime ownership 與 rate guard 仍會執行。",
  "content": "Registry public-surface policy 的精確契約是：只有 `list_triggers` 與 `get_trigger` 允許 public read。create、update、set-enabled、cancel、deprecated delete、result recording 都不能在 public surface 執行。`cancel_trigger` 與 `delete_trigger` 使用 `UserConfirm` + strict drift；create、list、get、update、set-enabled、result recording 沒有 action-level confirmation。\n\nTarget Agent 與 source resource 仍受 owner scope。每位 user 最多 100 個 non-deleted triggers。matcher defaults 是每個 Agent 每小時 100 fires、每個 source 每小時 100 fires，window 為 3,600 秒；deployment config 才是 runtime truth。最大 trigger chain depth 是 3，duplicate/debounce 與 recovery guards 仍有效。knowledge 不能降低 redaction、audit、idempotency、permission 或 confirmation。\n\n`list_triggers` 預設回傳 active + paused；`includeCancelled: true` 會擴大為包含 cancelled，而 deleted 永遠排除。明確 `status` filter 優先於 `includeCancelled`。permission denied、rate limited、conflict、not found 都應依 typed runtime result；routing telemetry 不得暴露 private ID、scope、event payload 或 `systemMessage`。\n\nAgent 的 list 與 get 依每個 Trigger 的明確 read/write grants 過濾；update、set-enabled 與 cancel 需要 write。缺少 grant 時回傳 not found。permission replacement 不能移除 target Agent write floor；immutable replacement 會先複製 grants，再對改綁後的 target 重新套用 floor。這些 collaboration grants 不會改變 event delivery；事件仍只送往設定的 Agent。刪除該 target Agent 時保留既有 cascade 行為，Trigger 也會被刪除。\n",
  "aliases": [
    "Trigger permission",
    "public trigger read",
    "cancel confirmation",
    "Trigger rate limit",
    "includeCancelled",
    "同 owner"
  ],
  "tags": [
    "trigger",
    "permission",
    "safety"
  ],
  "relatedActions": [
    "arinova.trigger.create_trigger",
    "arinova.trigger.list_triggers",
    "arinova.trigger.get_trigger",
    "arinova.trigger.update_trigger",
    "arinova.trigger.set_enabled",
    "arinova.trigger.cancel_trigger",
    "arinova.trigger.delete_trigger"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/zh-tw/kb/trigger/permissions-and-safety/"
}
---

Registry public-surface policy 的精確契約是：只有 `list_triggers` 與 `get_trigger` 允許 public read。create、update、set-enabled、cancel、deprecated delete、result recording 都不能在 public surface 執行。`cancel_trigger` 與 `delete_trigger` 使用 `UserConfirm` + strict drift；create、list、get、update、set-enabled、result recording 沒有 action-level confirmation。

Target Agent 與 source resource 仍受 owner scope。每位 user 最多 100 個 non-deleted triggers。matcher defaults 是每個 Agent 每小時 100 fires、每個 source 每小時 100 fires，window 為 3,600 秒；deployment config 才是 runtime truth。最大 trigger chain depth 是 3，duplicate/debounce 與 recovery guards 仍有效。knowledge 不能降低 redaction、audit、idempotency、permission 或 confirmation。

`list_triggers` 預設回傳 active + paused；`includeCancelled: true` 會擴大為包含 cancelled，而 deleted 永遠排除。明確 `status` filter 優先於 `includeCancelled`。permission denied、rate limited、conflict、not found 都應依 typed runtime result；routing telemetry 不得暴露 private ID、scope、event payload 或 `systemMessage`。

Agent 的 list 與 get 依每個 Trigger 的明確 read/write grants 過濾；update、set-enabled 與 cancel 需要 write。缺少 grant 時回傳 not found。permission replacement 不能移除 target Agent write floor；immutable replacement 會先複製 grants，再對改綁後的 target 重新套用 floor。這些 collaboration grants 不會改變 event delivery；事件仍只送往設定的 Agent。刪除該 target Agent 時保留既有 cascade 行為，Trigger 也會被刪除。
