openclaw/docs/providers
Kaspre 44840007d4
fix(agents): scope custom provider baseUrl SSRF trust by origin (#80751)
* fix(agents): scope provider SSRF trust by origin

* fix(provider): preserve explicit private-network deny

* docs(provider): document exact-origin SSRF trust

* test(provider): cover exact-origin SSRF edges

* docs(provider): align local model private-origin guidance

* refactor(ssrf): keep policy merging in infra

* test(ssrf): cover exact-origin trust through guard

* test(ssrf): block sibling private-origin redirects

* fix(provider): keep loopback trust origin-scoped

* fix(provider): block metadata origin trust

* fix(ssrf): keep metadata rebinding blocked

* fix(ssrf): block cloud metadata origins

* fix(ssrf): block ipv6 metadata origins

* fix(ssrf): block embedded metadata origins

* test(ssrf): cover embedded link-local metadata

* test(provider): cover custom anthropic proxy classification

* test(provider): widen transport policy mock

* test(plugin-sdk): assert metadata-IP allowedOrigins entries are rejected

Plugin authors can construct an SsrFPolicy that lists any well-formed
http(s) origin in allowedOrigins. The abuse-resistance lives one layer
deeper, in resolvePinnedHostnameWithPolicy's metadata/link-local block.
Add an SDK-level smoke test asserting that contract directly:

- AWS/Alibaba IMDS IPv4 literals, GCP metadata canonical hostname,
  IPv6 ULA metadata literal, and non-metadata link-local IPv4 entries
  build a policy via ssrfPolicyFromHttpBaseUrlAllowedOrigin and are
  then rejected at resolvePinnedHostnameWithPolicy.
- DNS rebinding from a trusted private DNS origin to a metadata IP is
  rejected even when the request hostname is origin-trusted.

This would fail if the SDK helper or resolveSsrFPolicyForUrl ever
short-circuited past the metadata block.

* chore(docs): regenerate baselines after upstream rebase

upstream/main moved between rebases; the merged source state for the
PR's `src/config/schema.help.ts` change and the upstream plugin-sdk
surface changes both produce different hashes than the committed
baselines, so `config:docs:check` and `plugin-sdk:api:check` would fail.

Regenerated via `pnpm config:docs:gen` + `pnpm plugin-sdk:api:gen` on
Crabbox; both baselines verified with their respective `--check`
generators.

* test(plugin-sdk): assert SSRF blocked error class

* fix(lint): satisfy exact-origin PR lint rules

* docs: clarify custom provider origin trust

* chore(docs): refresh plugin sdk api baseline

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-15 11:00:29 +01:00
..
alibaba.md
anthropic.md Keep OpenAI Codex migrations on automatic runtime routing (#79238) 2026-05-08 16:05:35 +09:00
arcee.md docs(providers/arcee): note Trinity Large Thinking has tools disabled 2026-05-07 06:49:14 -07:00
azure-speech.md
bedrock-mantle.md fix: gate Bedrock Mantle discovery 2026-05-10 10:25:23 +01:00
bedrock.md feat(bedrock): add service_tier parameter support 2026-05-08 13:10:43 +05:30
cerebras.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
chutes.md
claude-max-api-proxy.md
cloudflare-ai-gateway.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
comfy.md
deepgram.md
deepinfra.md docs: audit and fix 5 pages (sentence-case headings + Related/title) 2026-05-05 21:48:05 -07:00
deepseek.md
ds4.md docs: add ds4 provider guide 2026-05-13 14:45:34 +01:00
elevenlabs.md feat: stream elevenlabs tts into discord voice 2026-05-07 06:47:31 +01:00
fal.md fix(fal): route GPT Image 2/NB2 edits through Fal edit endpoints 2026-05-11 08:22:34 +01:00
fireworks.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
github-copilot.md Revert "refactor: move runtime state to SQLite" 2026-05-13 13:33:38 +01:00
glm.md docs(providers): rewrite GLM, Runway, and Vydra with code-verified setup 2026-05-05 17:15:52 -07:00
google.md docs(providers/google): correct video duration set and audio support 2026-05-11 10:18:35 +08:00
gradium.md docs(providers): rewrite Gradium TTS reference with verified config and voice directives 2026-05-10 22:17:43 +08:00
groq.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
huggingface.md Revert "refactor: move runtime state to SQLite" 2026-05-13 13:33:38 +01:00
index.md docs: add ds4 provider guide 2026-05-13 14:45:34 +01:00
inferrs.md feat(models): start local services on demand 2026-05-10 18:21:27 +01:00
inworld.md docs(providers): tighten SenseAudio, Xiaomi, and Inworld pages 2026-05-05 17:33:59 -07:00
kilocode.md fix: canonicalize nested gemini catalog ids 2026-05-08 21:32:07 +01:00
litellm.md
lmstudio.md fix(agents): scope custom provider baseUrl SSRF trust by origin (#80751) 2026-05-15 11:00:29 +01:00
minimax.md Revert "refactor: move runtime state to SQLite" 2026-05-13 13:33:38 +01:00
mistral.md docs: document mistral medium 3.5 usage 2026-05-09 11:45:43 +01:00
models.md build: externalize slack openshell vertex plugins 2026-05-14 07:46:58 +01:00
moonshot.md fix(kimi): use stable coding model id 2026-05-10 06:17:58 +01:00
nvidia.md docs: explain slow nvidia custom providers 2026-05-07 05:52:12 +01:00
ollama.md fix ollama native num_ctx migration (#81928) 2026-05-14 16:50:57 -05:00
openai.md Remove codex-cli backend and migrate to Codex runtime 2026-05-14 10:07:18 +01:00
opencode-go.md
opencode.md
openrouter.md feat(openrouter): add inbound audio STT support 2026-05-12 06:50:12 +01:00
perplexity-provider.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
qianfan.md
qwen.md
runway.md docs(providers): rewrite GLM, Runway, and Vydra with code-verified setup 2026-05-05 17:15:52 -07:00
senseaudio.md docs(providers/senseaudio): add missing Related section 2026-05-05 23:34:07 -07:00
sglang.md fix: discover self-hosted provider wildcards 2026-05-13 00:27:39 -04:00
stepfun.md
synthetic.md
tencent.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
together.md
venice.md
vercel-ai-gateway.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
vllm.md fix(agents): scope custom provider baseUrl SSRF trust by origin (#80751) 2026-05-15 11:00:29 +01:00
volcengine.md
vydra.md docs(providers): rewrite GLM, Runway, and Vydra with code-verified setup 2026-05-05 17:15:52 -07:00
xai.md docs: stop referencing shell profile secrets 2026-05-13 11:55:14 +01:00
xiaomi.md docs(providers): tighten SenseAudio, Xiaomi, and Inworld pages 2026-05-05 17:33:59 -07:00
zai.md