/v1/*, автентифікація bearer зі спільним секретом вважається довіреним операторським доступом до всього Gateway.
POST /tools/invoke- Той самий порт, що й у Gateway (мультиплексування WS + HTTP):
http://<gateway-host>:<port>/tools/invoke - Максимальний розмір тіла запиту за замовчуванням: 2 МБ
Автентифікація
Використовує конфігурацію автентифікації Gateway. Поширені способи HTTP-автентифікації:- автентифікація зі спільним секретом (
gateway.auth.mode="token"або"password"):Authorization: Bearer <token-or-password> - довірена HTTP-автентифікація з ідентифікаційними даними (
gateway.auth.mode="trusted-proxy"): спрямовуйте запит через налаштований проксі з підтримкою ідентифікації, щоб він додавав необхідні заголовки ідентифікації - відкрита автентифікація через приватну точку входу (
gateway.auth.mode="none"): заголовок автентифікації не потрібен
mode="token"використовуєgateway.auth.token(абоOPENCLAW_GATEWAY_TOKEN).mode="password"використовуєgateway.auth.password(абоOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"вимагає, щоб HTTP-запит надходив із налаштованого джерела довіреного проксі; проксі local loopback на тому самому хості потребують явного налаштуванняgateway.auth.trustedProxy.allowLoopback = true.- Внутрішні виклики з того самого хоста, які обходять проксі, можуть використовувати
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDяк локальний прямий резервний варіант. Наявність будь-якого заголовкаForwarded,X-Forwarded-*абоX-Real-IPнатомість залишає запит у маршруті довіреного проксі. - Якщо налаштовано
gateway.auth.rateLimitі стається забагато невдалих спроб автентифікації, кінцева точка повертає429ізRetry-After.
Межа безпеки (важливо)
Розглядайте цю кінцеву точку як інтерфейс із повним операторським доступом до екземпляра Gateway.- HTTP bearer-автентифікація тут не є моделлю вузьких областей доступу для окремих користувачів.
- Дійсний токен або пароль Gateway для цієї кінцевої точки слід вважати обліковими даними власника або оператора.
- Для режимів автентифікації зі спільним секретом (
tokenіpassword) кінцева точка відновлює звичайні повні операторські налаштування за замовчуванням, навіть якщо виклик містить вужчий заголовокx-openclaw-scopes. - Автентифікація зі спільним секретом також розглядає прямі виклики інструментів через цю кінцеву точку як звернення від власника-відправника.
- Довірені режими HTTP із ідентифікаційними даними (автентифікація через довірений проксі або
gateway.auth.mode="none"у приватній точці входу) враховуютьx-openclaw-scopes, якщо він наявний, а інакше використовують звичайний набір операторських областей доступу за замовчуванням. - Залишайте цю кінцеву точку доступною лише через local loopback, tailnet або приватну точку входу; не відкривайте її безпосередньо для загальнодоступного інтернету.
Тіло запиту
tool/name(рядок, обов’язкове): назва інструмента для виклику. Якщо передано обидва поля,nameмає пріоритет.action(рядок, необов’язкове): об’єднується зargs.action, якщо схема інструмента підтримує властивістьactionі її ще не задано вargs.args(об’єкт, необов’язкове): аргументи конкретного інструмента.sessionKey(рядок, необов’язкове): ключ цільового сеансу. Якщо його пропущено або вказано"main", Gateway використовує налаштований ключ основного сеансу (враховуєsession.mainKeyі агента за замовчуванням абоglobalу глобальній області сеансів).agentId(рядок, необов’язкове): визначає ключ сеансу для цього агента. Повертає помилку400, якщо значення конфліктує з явно заданимsessionKey, який уже відповідає іншому агенту.idempotencyKey(рядок, необов’язкове): використовується для отримання стабільного ідентифікатора виклику інструмента.dryRun(логічне значення, необов’язкове): зарезервовано для майбутнього використання; наразі ігнорується.
Поведінка політик і маршрутизації
Доступність інструментів фільтрується через той самий ланцюжок політик, який використовують агенти Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- групові політики (якщо ключ сеансу відповідає групі або каналу)
- політика підлеглого агента (під час виклику з ключем сеансу підлеглого агента)
- Підтвердження виконання команд є операторськими запобіжниками, а не окремою межею авторизації для цієї HTTP-кінцевої точки. Якщо інструмент доступний тут через автентифікацію Gateway і політику інструментів,
/tools/invokeне додає окремого запиту підтвердження для кожного виклику. - Якщо
execдоступний тут, розглядайте його як інтерфейс оболонки, що може змінювати стан. Заборонаwrite,edit,apply_patchабо HTTP-інструментів запису до файлової системи не робить виконання команд в оболонці доступом лише для читання. - Не надавайте bearer-облікові дані Gateway недовіреним викликам. Якщо потрібно розділити межі довіри, запускайте окремі екземпляри Gateway (бажано від імені окремих користувачів ОС або на окремих хостах).
cron, gateway і nodes також доступні лише власнику: навіть поза цим стандартним списком заборон виклики не від власника не можуть запускати їх через цей інтерфейс.
Налаштуйте загальний список заборон через gateway.tools:
gateway.tools.allow перевизначає доступність, але не розширює області доступу. У режимах HTTP з ідентифікаційними даними cron, gateway і nodes залишаються недоступними для викликів без ідентичності власника або адміністратора (operator.admin), навіть якщо їх зазначено в gateway.tools.allow. Bearer-автентифікація зі спільним секретом і надалі дотримується наведеного вище правила повністю довіреного оператора.
Щоб допомогти груповим політикам визначати контекст, можна необов’язково задати:
x-openclaw-message-channel: <channel>(приклад:slack,telegram)x-openclaw-account-id: <accountId>(якщо існує кілька облікових записів)x-openclaw-message-to: <target>(ціль доставлення для політики інструментів повідомлень)x-openclaw-thread-id: <threadId>(контекст гілки для політики інструментів повідомлень)