> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Запросы разрешений Plugin

Запросы разрешений Plugin позволяют коду Plugin приостановить вызов инструмента или операцию,
принадлежащую Plugin, пока пользователь не одобрит или не отклонит ее. Они используют поток Gateway
`plugin.approval.*` и те же поверхности UI для одобрений, которые обрабатывают кнопки одобрения в чате
и команды `/approve`.

Используйте запросы разрешений Plugin для разрешений Plugin/приложений. Они не заменяют
одобрения host exec, необязательные списки разрешенных инструментов или встроенную проверку разрешений
Codex.

## Выберите правильный шлюз

Выберите шлюз, соответствующий нужной точке принятия решения:

| Шлюз                                | Когда использовать                                                                                | Что он контролирует                                                                                                              |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| Необязательные инструменты          | Инструмент не должен быть виден модели, пока пользователь не включит его.                         | Доступность инструментов через `tools.allow`.                                                                                    |
| Запросы разрешений Plugin           | Хук Plugin или операция, принадлежащая Plugin, должны спросить перед выполнением одного действия. | Одобрение во время выполнения через `plugin.approval.*`.                                                                         |
| Одобрения exec                      | Команда хоста или shell-подобный инструмент требуют одобрения оператора.                          | Политика host exec и долговременные списки разрешений exec.                                                                      |
| Встроенные запросы разрешений Codex | Codex спрашивает перед нативными действиями shell, файлами, MCP или app-server.                   | Обработка одобрений Codex app-server или нативных хуков, маршрутизируемая через одобрения Plugin, когда OpenClaw владеет prompt. |
| Запросы одобрения MCP               | Сервер Codex MCP запрашивает одобрение вызова инструмента.                                        | Ответы на одобрения MCP, передаваемые через одобрения Plugin OpenClaw.                                                           |

Необязательные инструменты — это шлюз на этапе обнаружения. Запросы разрешений Plugin — это
шлюз для каждого вызова. Используйте оба, когда чувствительный инструмент должен требовать явного включения
до того, как модель сможет его увидеть, и одобрения перед выполнением действия.

## Запрашивайте одобрение перед вызовом инструмента

Большинство prompt, созданных Plugin, должны начинаться в хуке `before_tool_call`. Хук
запускается после того, как модель выбрала инструмент, и до того, как OpenClaw выполнит его:

```typescript theme={"theme":{"light":"min-light","dark":"min-dark"}}
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,
          timeoutBehavior: "deny",
          onResolution(decision) {
            console.log(`deploy approval resolved: ${decision}`);
          },
        },
      };
    });
  },
});
```

Пишите текст prompt для человека, который будет одобрять действие:

* Делайте `title` коротким и ориентированным на действие. Gateway принимает до 80
  символов.
* Делайте `description` конкретным и ограниченным по смыслу. Gateway принимает до 256
  символов.
* Укажите действие, цель и риск. Не включайте секреты, токены или
  приватные payload, которые не должны отображаться на поверхностях одобрения в чате.
* Используйте `severity: "critical"` только для действий, где неправильное решение может
  привести к ущербу в production или потере данных.
* Используйте `allowedDecisions: ["allow-once", "deny"]`, когда постоянное доверие
  небезопасно для этого действия.

## Поведение решений

OpenClaw создает ожидающее одобрение с ID `plugin:`, доставляет его на
доступные поверхности одобрения и ждет решения.

| Решение                | Результат                                                                                        |
| ---------------------- | ------------------------------------------------------------------------------------------------ |
| `allow-once`           | Текущий вызов продолжается.                                                                      |
| `allow-always`         | Текущий вызов продолжается, а решение передается в Plugin.                                       |
| `deny`                 | Вызов блокируется с результатом инструмента об отклонении.                                       |
| Тайм-аут               | Вызов блокируется, если `timeoutBehavior` не равно `"allow"`.                                    |
| Отмена                 | Вызов блокируется, когда выполнение прерывается.                                                 |
| Нет маршрута одобрения | Вызов блокируется, потому что ни одна подключенная поверхность одобрения не может его разрешить. |

`allow-always` является долговременным только тогда, когда запрашивающий Plugin или среда выполнения реализует
это сохранение. Для обычных хуков `before_tool_call.requireApproval`
OpenClaw рассматривает `allow-once` и `allow-always` как решения об одобрении для
текущего вызова и передает разрешенное значение в `onResolution`. Если ваш Plugin
предлагает `allow-always`, задокументируйте и реализуйте точно, каким будущим вызовам он
доверяет.

Если хук также возвращает `params`, OpenClaw применяет эти изменения параметров только
после успешного одобрения. Хук с более низким приоритетом все еще может заблокировать действие после того,
как хук с более высоким приоритетом запросил одобрение.

`allowedDecisions` ограничивает кнопки и команды, показываемые пользователю. Gateway
отклоняет попытку разрешения для любого решения, которое запрос не предлагал.

## Маршрутизируйте prompt одобрений

Prompt одобрений могут разрешаться в локальных поверхностях UI или в чат-каналах, которые
поддерживают обработку одобрений. Чтобы пересылать prompt одобрений Plugin явным целям чата,
настройте `approvals.plugin`:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  approvals: {
    plugin: {
      enabled: true,
      mode: "targets",
      agentFilter: ["main"],
      targets: [{ channel: "slack", to: "U12345678" }],
    },
  },
}
```

`approvals.plugin` не зависит от `approvals.exec`. Включение пересылки одобрений exec
не маршрутизирует prompt одобрений Plugin, а включение пересылки одобрений Plugin
не меняет политику host exec.

Когда prompt содержит текст ручного одобрения, разрешите его одним из предложенных
решений:

```text theme={"theme":{"light":"min-light","dark":"min-dark"}}
/approve <id> allow-once
/approve <id> allow-always
/approve <id> deny
```

См. [Расширенные одобрения exec](/ru/tools/exec-approvals-advanced#plugin-approval-forwarding)
для полной модели пересылки, поведения одобрений в том же чате, нативной доставки по каналам
и правил одобряющих для конкретных каналов.

## Нативные разрешения Codex

Нативные prompt разрешений Codex также могут проходить через одобрения Plugin, но
у них другое владение, чем у хуков, созданных Plugin.

* Запросы одобрения Codex app-server маршрутизируются через OpenClaw после проверки Codex.
* Ретрансляция нативного хука `permission_request` может запрашивать через
  `plugin.approval.request`, когда эта ретрансляция включена.
* Запросы одобрения инструментов MCP маршрутизируются через одобрения Plugin, когда Codex помечает
  `_meta.codex_approval_kind` как `"mcp_tool_call"`.

См. [Среда выполнения harness Codex](/ru/plugins/codex-harness-runtime#native-permissions-and-mcp-elicitations)
для поведения, специфичного для Codex, и правил fallback.

## Устранение неполадок

**Инструмент сообщает, что одобрения Plugin недоступны.** Ни один UI одобрения или настроенный
маршрут одобрения не принял запрос. Подключите клиент с поддержкой одобрений, используйте
канал, который поддерживает `/approve` в том же чате, или настройте `approvals.plugin`.

**`allow-always` отображается, но следующий вызов снова запрашивает одобрение.** Общий поток
одобрений Plugin не сохраняет доверие автоматически для произвольных хуков. Сохраняйте
доверие, принадлежащее Plugin, в своем Plugin после `onResolution("allow-always")` или
предлагайте только `allow-once` и `deny`.

**`/approve` отклоняет решение.** Запрос ограничил
`allowedDecisions`. Используйте одно из решений, напечатанных в prompt.

**Prompt Slack, Discord, Telegram или Matrix маршрутизируется иначе, чем одобрения exec.** Одобрения Plugin и одобрения exec используют отдельную конфигурацию и могут использовать
разные проверки авторизации. Проверьте `approvals.plugin` и поддержку одобрений Plugin
в канале, а не только `approvals.exec`.

## Связанные материалы

* [Хуки Plugin](/ru/plugins/hooks#tool-call-policy)
* [Создание plugins](/ru/plugins/building-plugins#registering-agent-tools)
* [Расширенные одобрения exec](/ru/tools/exec-approvals-advanced#plugin-approval-forwarding)
* [Протокол Gateway](/ru/gateway/protocol)
* [Среда выполнения harness Codex](/ru/plugins/codex-harness-runtime#native-permissions-and-mcp-elicitations)
