You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,6 +85,12 @@ Welcome to the lobster tank! 🦞
85
85
4.**Test/CI-only PRs for known `main` failures** → Don't open a PR. The Maintainer team is already tracking those failures, and PRs that only tweak tests or CI to chase them will be closed unless they are required to validate a new fix.
Copy file name to clipboardExpand all lines: docs/automation/tasks.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ Not every agent run creates a task. Heartbeat turns and normal interactive chat
28
28
- Cron tasks stay live while the cron runtime still owns the job; chat-backed CLI tasks stay live only while their owning run context is still active.
29
29
- Completion is push-driven: detached work can notify directly or wake the
30
30
requester session/heartbeat when it finishes, so status polling loops are
31
-
usually unnecessary.
31
+
usually the wrong shape.
32
32
- Isolated cron runs and subagent completions best-effort clean up tracked browser tabs/processes for their child session before final cleanup bookkeeping.
33
33
- Isolated cron delivery suppresses stale interim parent replies while
34
34
descendant subagent work is still draining, and it prefers final descendant
When `target` is `channel` or `both`, the approval prompt is visible in the channel. Only resolved approvers can use the buttons; other users receive an ephemeral denial. Approval prompts include the command text, so only enable channel delivery in trusted channels. If the channel ID cannot be derived from the session key, OpenClaw falls back to DM delivery.
960
960
961
961
Discord also renders the shared approval buttons used by other chat channels. The native Discord adapter mainly adds approver DM routing and channel fanout.
962
+
When those buttons are present, they are the primary approval UX; OpenClaw
963
+
should only include a manual `/approve` command when the tool result says
964
+
chat approvals are unavailable or manual approval is the only path.
962
965
963
966
Gateway auth for this handler uses the same shared credential resolution contract as other Gateway clients:
Copy file name to clipboardExpand all lines: docs/channels/group-messages.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ Note: `agents.list[].groupChat.mentionPatterns` is now used by Telegram/Discord/
13
13
14
14
## Current implementation (2025-12-03)
15
15
16
-
- Activation modes: `mention` (default) or `always`. `mention` requires a ping (real WhatsApp @-mentions via `mentionedJids`, safe regex patterns, or the bot’s E.164 anywhere in the text). `always` wakes the agent on every message but it should reply only when it can add meaningful value; otherwise it returns the silent token `NO_REPLY`. Defaults can be set in config (`channels.whatsapp.groups`) and overridden per group via `/activation`. When `channels.whatsapp.groups` is set, it also acts as a group allowlist (include `"*"` to allow all).
16
+
- Activation modes: `mention` (default) or `always`. `mention` requires a ping (real WhatsApp @-mentions via `mentionedJids`, safe regex patterns, or the bot’s E.164 anywhere in the text). `always` wakes the agent on every message but it should reply only when it can add meaningful value; otherwise it returns the exact silent token `NO_REPLY` / `no_reply`. Defaults can be set in config (`channels.whatsapp.groups`) and overridden per group via `/activation`. When `channels.whatsapp.groups` is set, it also acts as a group allowlist (include `"*"` to allow all).
17
17
- Group policy: `channels.whatsapp.groupPolicy` controls whether group messages are accepted (`open|disabled|allowlist`). `allowlist` uses `channels.whatsapp.groupAllowFrom` (fallback: explicit `channels.whatsapp.allowFrom`). Default is `allowlist` (blocked until you add senders).
18
18
- Per-group sessions: session keys look like `agent:<agentId>:whatsapp:group:<jid>` so commands such as `/verbose on` or `/think high` (sent as standalone messages) are scoped to that group; personal DM state is untouched. Heartbeats are skipped for group threads.
19
19
- Context injection: **pending-only** group messages (default 50) that _did not_ trigger a run are prefixed under `[Chat messages since your last reply - for context]`, with the triggering line under `[Current message - respond to this]`. Messages already in the session are not re-injected.
Copy file name to clipboardExpand all lines: docs/channels/slack.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -512,6 +512,9 @@ Slack can act as a native approval client with interactive buttons and interacti
512
512
- Approver authorization is still enforced: only users identified as approvers can approve or deny requests through Slack.
513
513
514
514
This uses the same shared approval button surface as other channels. When `interactivity` is enabled in your Slack app settings, approval prompts render as Block Kit buttons directly in the conversation.
515
+
When those buttons are present, they are the primary approval UX; OpenClaw
516
+
should only include a manual `/approve` command when the tool result says chat
517
+
approvals are unavailable or manual approval is the only path.
Approvers must be numeric Telegram user IDs. Telegram auto-enables native exec approvals when `enabled` is unset or `"auto"` and at least one approver can be resolved, either from `execApprovals.approvers` or from the account's numeric owner config (`allowFrom` and direct-message `defaultTo`). Set `enabled: false` to disable Telegram as a native approval client explicitly. Approval requests otherwise fall back to other configured approval routes or the exec approval fallback policy.
824
824
825
825
Telegram also renders the shared approval buttons used by other chat channels. The native Telegram adapter mainly adds approver DM routing, channel/topic fanout, and typing hints before delivery.
826
+
When those buttons are present, they are the primary approval UX; OpenClaw
827
+
should only include a manual `/approve` command when the tool result says
828
+
chat approvals are unavailable or manual approval is the only path.
Copy file name to clipboardExpand all lines: docs/cli/config.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,8 +53,9 @@ Print the generated JSON schema for `openclaw.json` to stdout as JSON.
53
53
What it includes:
54
54
55
55
- The current root config schema, plus a root `$schema` string field for editor tooling
56
-
- Field `title` and `description` metadata derived from the same labels/help used by the Control UI
57
-
- Nested object, wildcard (`*`), and array-item (`[]`) nodes inherit the same `title` / `description` metadata when labels/help exist
56
+
- Field `title` and `description` docs metadata used by the Control UI
57
+
- Nested object, wildcard (`*`), and array-item (`[]`) nodes inherit the same `title` / `description` metadata when matching field documentation exists
58
+
-`anyOf` / `oneOf` / `allOf` branches inherit the same docs metadata too when matching field documentation exists
58
59
- Best-effort live plugin + channel schema metadata when runtime manifests can be loaded
59
60
- A clean fallback schema even when the current config is invalid
Copy file name to clipboardExpand all lines: docs/cli/index.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -421,7 +421,7 @@ Most plugin changes require a gateway restart. See [/plugin](/tools/plugin).
421
421
422
422
Vector search over `MEMORY.md` + `memory/*.md`:
423
423
424
-
-`openclaw memory status` — show index stats; use `--deep` for provider probes or `--fix` to repair stale recall/promotion artifacts.
424
+
-`openclaw memory status` — show index stats; use `--deep` for vector + embedding readiness checks or `--fix` to repair stale recall/promotion artifacts.
-`openclaw memory promote` — rank short-term recalls and optionally append top entries into `MEMORY.md`.
@@ -579,7 +579,7 @@ Subcommands:
579
579
-`config set --strict-json`: require JSON5 parsing for path/value input. `--json` remains a legacy alias for strict parsing outside dry-run output mode.
580
580
-`config unset <path>`: remove a value.
581
581
-`config file`: print the active config file path.
582
-
-`config schema`: print the generated JSON schema for `openclaw.json`, including field `title` / `description` metadata and best-effort live plugin/channel schema metadata.
582
+
-`config schema`: print the generated JSON schema for `openclaw.json`, including propagated field `title` / `description`docs metadata across nested object, wildcard, array-item, and composition branches, plus best-effort live plugin/channel schema metadata.
583
583
-`config validate`: validate the current config against the schema without starting the gateway.
Tip: for partial edits, inspect with `config.schema.lookup` first and prefer `config.patch`.
1475
1475
Tip: these config write RPCs preflight active SecretRef resolution for refs in the submitted config payload and reject writes when an effectively active submitted ref is unresolved.
1476
+
Tip: the owner-only `gateway` runtime tool still refuses to rewrite `tools.exec.ask` or `tools.exec.security`; legacy `tools.bash.*` aliases normalize to the same protected exec paths.
1476
1477
1477
1478
## Models
1478
1479
@@ -1606,6 +1607,8 @@ Options:
1606
1607
Notes:
1607
1608
1608
1609
-`setup-token` and `paste-token` are generic token commands for providers that expose token auth methods.
1610
+
-`setup-token` requires an interactive TTY and runs the provider's token-auth method.
1611
+
-`paste-token` prompts for the token value and defaults to auth profile id `<provider>:manual` when `--profile-id` is omitted.
1609
1612
- Anthropic legacy token profiles still run if already configured, but Anthropic no longer supports `setup-token` or `paste-token` as a new OpenClaw auth path.
0 commit comments