diff --git a/docs/channels/irc.md b/docs/channels/irc.md index bd1d0396caa..dede197a9a9 100644 --- a/docs/channels/irc.md +++ b/docs/channels/irc.md @@ -237,13 +237,7 @@ Default account supports: - `IRC_NICKSERV_PASSWORD` - `IRC_NICKSERV_REGISTER_EMAIL` - -`IRC_HOST` is on the endpoint-block list and cannot be set from a workspace -`.env` file. It must come from shell environment or the gateway process -environment so that untrusted workspaces cannot redirect IRC traffic to a -different server. See [Workspace `.env` files](/gateway/security) for the full -list. - +`IRC_HOST` cannot be set from a workspace `.env`; see [Workspace `.env` files](/gateway/security). ## Troubleshooting diff --git a/docs/channels/matrix.md b/docs/channels/matrix.md index c2cf27f0648..99a08052a7a 100644 --- a/docs/channels/matrix.md +++ b/docs/channels/matrix.md @@ -179,13 +179,7 @@ For example, `-` becomes `_X2D_`, so `ops-prod` maps to `MATRIX_OPS_X2D_PROD_*`. The interactive wizard only offers the env-var shortcut when those auth env vars are already present and the selected account does not already have Matrix auth saved in config. - -`MATRIX_HOMESERVER` is on the endpoint-block list and cannot be set from a -workspace `.env` file. It must come from shell environment or the gateway -process environment so that untrusted workspaces cannot redirect Matrix -traffic to a different homeserver. See -[Workspace `.env` files](/gateway/security) for the full list. - +`MATRIX_HOMESERVER` cannot be set from a workspace `.env`; see [Workspace `.env` files](/gateway/security). ## Configuration example diff --git a/docs/channels/mattermost.md b/docs/channels/mattermost.md index 7bf3c3681e4..9955b808f10 100644 --- a/docs/channels/mattermost.md +++ b/docs/channels/mattermost.md @@ -109,13 +109,7 @@ Set these on the gateway host if you prefer env vars: Env vars apply only to the **default** account (`default`). Other accounts must use config values. - -`MATTERMOST_URL` is on the endpoint-block list and cannot be set from a -workspace `.env` file. It must come from shell environment or the gateway -process environment so that untrusted workspaces cannot redirect Mattermost -traffic to a different server. See -[Workspace `.env` files](/gateway/security) for the full list. - +`MATTERMOST_URL` cannot be set from a workspace `.env`; see [Workspace `.env` files](/gateway/security). ## Chat modes diff --git a/docs/channels/synology-chat.md b/docs/channels/synology-chat.md index b8928b1b031..dc6149ebece 100644 --- a/docs/channels/synology-chat.md +++ b/docs/channels/synology-chat.md @@ -89,13 +89,7 @@ For the default account, you can use env vars: Config values override env vars. - -`SYNOLOGY_CHAT_INCOMING_URL` is on the endpoint-block list and cannot be set -from a workspace `.env` file. It must come from shell environment or the -gateway process environment so that untrusted workspaces cannot redirect -Synology Chat traffic to a different webhook. See -[Workspace `.env` files](/gateway/security) for the full list. - +`SYNOLOGY_CHAT_INCOMING_URL` cannot be set from a workspace `.env`; see [Workspace `.env` files](/gateway/security). ## DM policy and access control diff --git a/docs/cli/gateway.md b/docs/cli/gateway.md index 4f060b00663..bdce6fc5f4a 100644 --- a/docs/cli/gateway.md +++ b/docs/cli/gateway.md @@ -134,8 +134,7 @@ Options: Notes: -- The recorder is active by default and payload-free: it captures operational metadata only, not chat text, tool outputs, or raw request or response bodies. Set `diagnostics.enabled: false` only when you need to disable Gateway diagnostic heartbeat collection entirely. -- Records keep operational metadata: event names, counts, byte sizes, memory readings, queue/session state, channel/plugin names, and redacted session summaries. They do not keep chat text, webhook bodies, tool outputs, raw request or response bodies, tokens, cookies, secret values, hostnames, or raw session ids. +- Records keep operational metadata: event names, counts, byte sizes, memory readings, queue/session state, channel/plugin names, and redacted session summaries. They do not keep chat text, webhook bodies, tool outputs, raw request or response bodies, tokens, cookies, secret values, hostnames, or raw session ids. Set `diagnostics.enabled: false` to disable the recorder entirely. - On fatal Gateway exits, shutdown timeouts, and restart startup failures, OpenClaw writes the same diagnostic snapshot to `~/.openclaw/logs/stability/openclaw-stability-*.json` when the recorder has events. Inspect the newest bundle with `openclaw gateway stability --bundle latest`; `--limit`, `--type`, and `--since-seq` also apply to bundle output. ### `gateway diagnostics export` diff --git a/docs/cli/plugins.md b/docs/cli/plugins.md index 7d001b9f8b3..e407ae0651c 100644 --- a/docs/cli/plugins.md +++ b/docs/cli/plugins.md @@ -68,12 +68,7 @@ openclaw plugins install --marketplace https://github.com// diff --git a/docs/plugins/bundles.md b/docs/plugins/bundles.md index 124b378b8f5..15bb323d9fb 100644 --- a/docs/plugins/bundles.md +++ b/docs/plugins/bundles.md @@ -261,10 +261,6 @@ dual-format packages from being partially installed as bundles. plugins; the release pipeline is responsible for shipping a complete bundled dependency payload (see the postpublish verification rule in [Releasing](/reference/RELEASING)). -- Sub-agent runs that launch bundled MCP servers dispose those MCP clients - through the shared runtime-cleanup path when the sub-agent exits, so - sub-agent lifecycles do not leak stdio child processes or long-lived MCP - connections across turns. ## Security diff --git a/docs/plugins/codex-harness.md b/docs/plugins/codex-harness.md index 441fa77543d..277b17ec39b 100644 --- a/docs/plugins/codex-harness.md +++ b/docs/plugins/codex-harness.md @@ -29,8 +29,7 @@ aligned with the PI harness: - `agent_end` Bundled plugins can also register a Codex app-server extension factory to add -async `tool_result` middleware, and mirrored Codex transcript writes route -through `before_message_write`. +async `tool_result` middleware. The harness is off by default. It is selected only when the `codex` plugin is enabled and the resolved model is a `codex/*` model, or when you explicitly diff --git a/docs/providers/anthropic.md b/docs/providers/anthropic.md index 93ac436857e..e0701956145 100644 --- a/docs/providers/anthropic.md +++ b/docs/providers/anthropic.md @@ -268,11 +268,9 @@ OpenClaw supports Anthropic's prompt caching feature for API-key auth. - - Claude Opus 4.7 (`anthropic/claude-opus-4.7`) and its `claude-cli` variant are normalized to a 1M context window in resolved runtime metadata and active-agent status/context reporting. You do not need `params.context1m: true` for Opus 4.7; it no longer inherits the stale 200k fallback. - - Compaction and overflow handling use the 1M window automatically. Other Anthropic models keep their published limits. - + + `anthropic/claude-opus-4.7` and its `claude-cli` variant have a 1M context + window by default — no `params.context1m: true` needed. diff --git a/docs/providers/bedrock-mantle.md b/docs/providers/bedrock-mantle.md index 40f3de86f2b..9416e25bd10 100644 --- a/docs/providers/bedrock-mantle.md +++ b/docs/providers/bedrock-mantle.md @@ -174,8 +174,6 @@ If you prefer explicit config instead of auto-discovery: } ``` - Context-window metadata for discovered Mantle models uses known published limits when available and falls back conservatively for unlisted models, so compaction and overflow handling behave correctly for newer entries without overstating unknown models. - diff --git a/docs/providers/lmstudio.md b/docs/providers/lmstudio.md index 55999ed595d..cfe1b000994 100644 --- a/docs/providers/lmstudio.md +++ b/docs/providers/lmstudio.md @@ -104,9 +104,11 @@ Interactive setup can prompt for an optional preferred load context length and a ### Streaming usage compatibility -OpenClaw marks LM Studio as streaming-usage compatible, so token accounting no longer degrades to unknown or stale totals on streamed completions. OpenClaw also recovers token counts from llama.cpp-style `timings.prompt_n` / `timings.predicted_n` metadata when LM Studio does not emit an OpenAI-shaped `usage` object. +LM Studio is streaming-usage compatible. When it does not emit an OpenAI-shaped +`usage` object, OpenClaw recovers token counts from llama.cpp-style +`timings.prompt_n` / `timings.predicted_n` metadata instead. -Other OpenAI-compatible local backends covered by the same behavior: +Same behavior applies to these OpenAI-compatible local backends: - vLLM - SGLang diff --git a/docs/providers/moonshot.md b/docs/providers/moonshot.md index be7058b85a1..d153ae8f8b2 100644 --- a/docs/providers/moonshot.md +++ b/docs/providers/moonshot.md @@ -349,9 +349,9 @@ Config lives under `plugins.entries.moonshot.config.webSearch`: - Moonshot Kimi serves native tool_call ids shaped like `functions.:` on the OpenAI-compatible transport. OpenClaw no longer strict-sanitizes these ids for Moonshot, so multi-turn agentic flows through Kimi K2.6 keep working past 2-3 tool-calling rounds when the serving layer matches mangled ids against the original tool definitions. + Moonshot Kimi serves tool_call ids shaped like `functions.:`. OpenClaw preserves them unchanged so multi-turn tool calls keep working. - If a custom OpenAI-compatible provider needs the previous behavior, set `sanitizeToolCallIds: true` on the provider entry. The flag lives on the shared `openai-compatible` replay family; Moonshot is wired to the opt-out by default. + To force strict sanitization on a custom OpenAI-compatible provider, set `sanitizeToolCallIds: true`: ```json5 { diff --git a/docs/web/control-ui.md b/docs/web/control-ui.md index e37b1a52ef6..8a1b4e56b91 100644 --- a/docs/web/control-ui.md +++ b/docs/web/control-ui.md @@ -78,18 +78,12 @@ you revoke it with `openclaw devices revoke --device --role `. See ## Personal identity (browser-local) -The Control UI supports a per-browser personal identity — a display name and -avatar that are attached to outgoing messages for attribution in shared -sessions. This identity lives in browser storage, is scoped to the current -browser profile, and does not leave the gateway host unless you explicitly -submit it with a request. - -- Identity is **browser-local only**. It is not synced to other devices and is - not part of the gateway config file. -- Clearing site data or switching browsers resets the identity to empty; the - Control UI does not try to reconstruct one from server state. -- Nothing about the personal identity is persisted server-side beyond the - normal transcript authorship metadata on messages you actually send. +The Control UI supports a per-browser personal identity (display name and +avatar) attached to outgoing messages for attribution in shared sessions. It +lives in browser storage, is scoped to the current browser profile, and is not +synced to other devices or persisted server-side beyond the normal transcript +authorship metadata on messages you actually send. Clearing site data or +switching browsers resets it to empty. ## Runtime config endpoint @@ -97,9 +91,7 @@ The Control UI fetches its runtime settings from `/__openclaw/control-ui-config.json`. That endpoint is gated by the same gateway auth as the rest of the HTTP surface: unauthenticated browsers cannot fetch it, and a successful fetch requires either an already valid gateway -token/password, Tailscale Serve identity, or a trusted-proxy identity. This -keeps Control UI feature flags and endpoint metadata from leaking to -unauthenticated scanners on shared hosts. +token/password, Tailscale Serve identity, or a trusted-proxy identity. ## Language support