Перейти к содержимому

Выбрать язык

Текущий язык: Русский

Inference Auth Posture

GET /v1/models and the inference endpoints are gated by different settings. The most natural probe an operator runs to answer “is my API protected?” can therefore return the wrong answer.

Endpoint Gated by
GET /v1/models The dashboard login posture — isAuthRequired(), overridable per-instance with requireAuthForModels (src/app/api/v1/models/catalogRequest.ts)
POST /v1/chat/completions, POST /v1/responses, and the other client API routes REQUIRE_API_KEY (src/server/authz/policies/clientApi.ts)

On an instance that has an admin password set and REQUIRE_API_KEY=false, /v1/models answers 401 while inference is open to anyone who can reach the port.

Probing caveat: a 401 from /v1/models does not verify that inference is protected. It only tells you the dashboard requires login.

This is not hypothetical. In discussion #13310 a self-hosted instance behind Traefik had its Codex quota spent by anonymous POST /v1/responses traffic while /v1/models returned 401 — which, in the reporter’s words, “initially created the impression that the entire API was protected” and sent them investigating the wrong component.

Probe an inference route, not the catalog:

Окно терминала
curl -s -o /dev/null -w '%{http_code}\n' \
-X POST http://<host>:<api-port>/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"<any-model>","messages":[{"role":"user","content":"ping"}]}'

A 401 means REQUIRE_API_KEY is enforcing. Anything that reaches routing (including a model-not-found error) means anonymous traffic is accepted.

Note that with REQUIRE_API_KEY=false an invalid bearer degrades to anonymous rather than rejecting (#2257), so sending a junk key is not a valid probe either.

When REQUIRE_API_KEY is disabled and a server binds a non-loopback interface, OmniRoute logs a warning at boot (src/lib/startup/nonLoopbackApiKeyGuard.ts). This covers three surfaces:

  • the Dashboard/API server that serves /v1 inference — HOST, default 0.0.0.0
  • the API bridge — API_HOST, default 127.0.0.1
  • the live dashboard WebSocket — its own host

The warning never blocks boot: a reverse proxy in front of OmniRoute may already be enforcing its own authentication.

  • REQUIRE_API_KEY in ENVIRONMENT.md
  • APP_BIND_HOST and the compose loopback defaults (#12568)
  • #2257 — invalid bearer degrades to anonymous when REQUIRE_API_KEY is off
  • #13695 — this document

undefined (a58000c7685f)

HagiCode

HagiCode — агентная среда разработки. Насыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными, превращая разработку в увлекательный процесс.

Насыщенные и удобные взаимодействия с интерфейсом помогают легче планировать, запускать агентов и вести проектную работу.

Перейти на HagiCodeЧитать документацию
  • УмныйРабочие процессы OpenSpec превращают намерение в исполнимый путь от предложения через дизайн и задачи до готового изменения.
  • ЭффективныйМультиагентное выполнение параллельно продвигает исследование, реализацию и проверку в нескольких репозиториях и с привычными Agent CLI.
  • ИнтересныйНасыщенные и удобные взаимодействия с интерфейсом делают планирование, работу агентов и проектные задачи понятными и доступными.

Скачать для Windows

Получить в Microsoft StoreВсе загрузки

Превращайте идеи в готовое ПО.

HagiCode — агентная среда разработки: рабочие процессы OpenSpec планируют изменение, мультиагентное выполнение его реализует, а Hero Scenario делает долгий путь наглядным, так что идеи становятся готовым ПО.

Умный
Рабочие процессы OpenSpec превращают намерение в путь от предложения до готового изменения.
Эффективный
Мультиагентное выполнение ведёт исследование, реализацию и проверку параллельно.
Увлекательный
Удобный интерфейс упрощает планирование, работу агентов и проектные задачи.