/v1/*, автентифікація bearer через спільний секрет вважається довіреним операторським доступом до всього gateway.
POST /tools/invoke- Той самий порт, що й Gateway (мультиплексування WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
Автентифікація
Використовує конфігурацію автентифікації Gateway. Поширені шляхи HTTP-автентифікації:- автентифікація через спільний секрет (
gateway.auth.mode="token"або"password"):Authorization: Bearer <token-or-password> - довірена HTTP-автентифікація з ідентичністю (
gateway.auth.mode="trusted-proxy"): маршрутизуйте через налаштований проксі з підтримкою ідентичності й дозвольте йому додати потрібні заголовки ідентичності - відкрита автентифікація для приватного входу (
gateway.auth.mode="none"): заголовок автентифікації не потрібен
- Коли
gateway.auth.mode="token", використовуйтеgateway.auth.token(абоOPENCLAW_GATEWAY_TOKEN). - Коли
gateway.auth.mode="password", використовуйтеgateway.auth.password(абоOPENCLAW_GATEWAY_PASSWORD). - Коли
gateway.auth.mode="trusted-proxy", HTTP-запит має надходити з налаштованого довіреного джерела проксі; same-host 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, коли він присутній, а інакше повертаються до звичайного типового набору операторських областей доступу. - Тримайте цю кінцеву точку лише на loopback/tailnet/приватному вході; не відкривайте її напряму для публічного інтернету.
gateway.auth.mode="token"або"password"+Authorization: Bearer ...- доводить володіння спільним операторським секретом gateway
- ігнорує вужчі
x-openclaw-scopes - відновлює повний типовий набір операторських областей доступу:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - вважає прямі виклики інструментів на цій кінцевій точці діями від імені власника-відправника
- довірені HTTP-режими з ідентичністю (наприклад, автентифікація через довірений проксі або
gateway.auth.mode="none"на приватному вході)- автентифікують певну зовнішню довірену ідентичність або межу розгортання
- враховують
x-openclaw-scopes, коли заголовок присутній - повертаються до звичайного типового набору операторських областей доступу, коли заголовок відсутній
- втрачають семантику власника лише тоді, коли викликач явно звужує області доступу й пропускає
operator.admin
Тіло запиту
tool(рядок, обов’язково): назва інструмента для виклику.action(рядок, необов’язково): зіставляється з аргументами, якщо схема інструмента підтримуєaction, а корисне навантаження аргументів його не містить.args(об’єкт, необов’язково): аргументи, специфічні для інструмента.sessionKey(рядок, необов’язково): цільовий ключ сеансу. Якщо пропущено або"main", Gateway використовує налаштований головний ключ сеансу (враховуєsession.mainKeyі типового агента абоglobalу глобальній області).dryRun(булеве значення, необов’язково): зарезервовано для майбутнього використання; зараз ігнорується.
Політика й поведінка маршрутизації
Доступність інструментів фільтрується через той самий ланцюг політик, який використовують агенти Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- групові політики (якщо ключ сеансу зіставляється з групою або каналом)
- політика субагента (під час виклику з ключем сеансу субагента)
- Схвалення Exec — це операторські запобіжники, а не окрема межа авторизації для цієї HTTP-кінцевої точки. Якщо інструмент доступний тут через автентифікацію Gateway + політику інструментів,
/tools/invokeне додає додаткового запиту схвалення для кожного виклику. - Якщо
execдоступний тут, вважайте його мутаційною поверхнею shell. Заборонаwrite,edit,apply_patchабо HTTP-інструментів запису у файлову систему не робить виконання shell доступним лише для читання. - Не передавайте bearer-облікові дані Gateway недовіреним викликачам. Якщо потрібне розділення між межами довіри, запускайте окремі gateway (і в ідеалі окремих користувачів/хости ОС).
exec- пряме виконання команд (поверхня RCE)spawn- довільне створення дочірніх процесів (поверхня RCE)shell- виконання команд shell (поверхня RCE)fs_write- довільна зміна файлів на хостіfs_delete- довільне видалення файлів на хостіfs_move- довільне переміщення/перейменування файлів на хостіapply_patch- застосування patch може переписувати довільні файлиsessions_spawn- оркестрація сеансів; віддалене створення агентів є RCEsessions_send- ін’єкція повідомлень між сеансамиcron- площина керування сталою автоматизацієюgateway- площина керування gateway; запобігає переналаштуванню через HTTPnodes- ретрансляція команд вузла може досягати system.run на спарених хостахwhatsapp_login- інтерактивне налаштування, що потребує сканування QR у терміналі; зависає на HTTP
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>(коли існує кілька облікових записів)
Відповіді
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(недійсний запит або помилка введення інструмента)401→ неавторизовано429→ автентифікацію обмежено за частотою (Retry-Afterвстановлено)404→ інструмент недоступний (не знайдено або не внесено до списку дозволених)405→ метод не дозволено500→{ ok: false, error: { type, message } }(неочікувана помилка виконання інструмента; повідомлення очищено)