diff --git a/docs/channels/slack.md b/docs/channels/slack.md index 0dc0bc1b45f..b7a814e378f 100644 --- a/docs/channels/slack.md +++ b/docs/channels/slack.md @@ -218,11 +218,24 @@ openclaw gateway - `botToken` + `appToken` are required for Socket Mode. - HTTP mode requires `botToken` + `signingSecret`. +- `botToken`, `appToken`, `signingSecret`, and `userToken` accept plaintext + strings or SecretRef objects. - Config tokens override env fallback. - `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` env fallback applies only to the default account. - `userToken` (`xoxp-...`) is config-only (no env fallback) and defaults to read-only behavior (`userTokenReadOnly: true`). - Optional: add `chat:write.customize` if you want outgoing messages to use the active agent identity (custom `username` and icon). `icon_emoji` uses `:emoji_name:` syntax. +Status snapshot behavior: + +- Slack account inspection tracks per-credential `*Source` and `*Status` + fields (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Status is `available`, `configured_unavailable`, or `missing`. +- `configured_unavailable` means the account is configured through SecretRef + or another non-inline secret source, but the current command/runtime path + could not resolve the actual value. +- In HTTP mode, `signingSecretStatus` is included; in Socket Mode, the + required pair is `botTokenStatus` + `appTokenStatus`. + For actions/directory reads, user token can be preferred when configured. For writes, bot token remains preferred; user-token writes are only allowed when `userTokenReadOnly: false` and bot token is unavailable. @@ -624,6 +637,12 @@ openclaw pairing list slack Validate bot + app tokens and Socket Mode enablement in Slack app settings. + + If `openclaw channels status --probe --json` shows `botTokenStatus` or + `appTokenStatus: "configured_unavailable"`, the Slack account is + configured but the current runtime could not resolve the SecretRef-backed + value. + @@ -634,6 +653,10 @@ openclaw pairing list slack - Slack Request URLs (Events + Interactivity + Slash Commands) - unique `webhookPath` per HTTP account + If `signingSecretStatus: "configured_unavailable"` appears in account + snapshots, the HTTP account is configured but the current runtime could not + resolve the SecretRef-backed signing secret. + diff --git a/docs/channels/troubleshooting.md b/docs/channels/troubleshooting.md index aeb69299afb..9c22d4b601e 100644 --- a/docs/channels/troubleshooting.md +++ b/docs/channels/troubleshooting.md @@ -70,11 +70,11 @@ Full troubleshooting: [/channels/discord#troubleshooting](/channels/discord#trou ### Slack failure signatures -| Symptom | Fastest check | Fix | -| -------------------------------------- | ----------------------------------------- | ------------------------------------------------- | -| Socket mode connected but no responses | `openclaw channels status --probe` | Verify app token + bot token and required scopes. | -| DMs blocked | `openclaw pairing list slack` | Approve pairing or relax DM policy. | -| Channel message ignored | Check `groupPolicy` and channel allowlist | Allow the channel or switch policy to `open`. | +| Symptom | Fastest check | Fix | +| -------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| Socket mode connected but no responses | `openclaw channels status --probe` | Verify app token + bot token and required scopes; watch for `botTokenStatus` / `appTokenStatus = configured_unavailable` on SecretRef-backed setups. | +| DMs blocked | `openclaw pairing list slack` | Approve pairing or relax DM policy. | +| Channel message ignored | Check `groupPolicy` and channel allowlist | Allow the channel or switch policy to `open`. | Full troubleshooting: [/channels/slack#troubleshooting](/channels/slack#troubleshooting) diff --git a/docs/gateway/configuration-reference.md b/docs/gateway/configuration-reference.md index 034cd4245ea..72df05d33d5 100644 --- a/docs/gateway/configuration-reference.md +++ b/docs/gateway/configuration-reference.md @@ -419,6 +419,13 @@ WhatsApp runs through the gateway's web channel (Baileys Web). It starts automat - **Socket mode** requires both `botToken` and `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` for default account env fallback). - **HTTP mode** requires `botToken` plus `signingSecret` (at root or per-account). +- `botToken`, `appToken`, `signingSecret`, and `userToken` accept plaintext + strings or SecretRef objects. +- Slack account snapshots expose per-credential source/status fields such as + `botTokenSource`, `botTokenStatus`, `appTokenStatus`, and, in HTTP mode, + `signingSecretStatus`. `configured_unavailable` means the account is + configured through SecretRef but the current command/runtime path could not + resolve the secret value. - `configWrites: false` blocks Slack-initiated config writes. - Optional `channels.slack.defaultAccount` overrides default account selection when it matches a configured account id. - `channels.slack.streaming` is the canonical stream mode key. Legacy `streamMode` and boolean `streaming` values are auto-migrated.