diff --git a/cli-config.yaml.example b/cli-config.yaml.example index 7ebcce5134..a9a3332959 100644 --- a/cli-config.yaml.example +++ b/cli-config.yaml.example @@ -1395,6 +1395,7 @@ platform_toolsets: # require_mention: true # Require @mention in server channels (default: true) # bots_require_inline_mention: true # Bot authors must type a literal @mention (default: true) # auto_thread: true # Auto-create thread on @mention (default: true) +# free_response_auto_thread: false # Free-response channels also auto-thread (default: reply inline) # free_response_channels: "" # Channel IDs where no mention is needed # reactions: true # Show processing reactions (default: true) # history_backfill: true # Recover missed channel messages on mention (default: true) diff --git a/website/docs/reference/environment-variables.md b/website/docs/reference/environment-variables.md index 6246443f06..997381ac21 100644 --- a/website/docs/reference/environment-variables.md +++ b/website/docs/reference/environment-variables.md @@ -348,7 +348,7 @@ These are set automatically by the Docker terminal backend when `proxy.enabled: | `DISCORD_AUTO_THREAD` | Auto-thread long replies when supported | | `DISCORD_ALLOW_ANY_ATTACHMENT` | When `true`, accept attachments of any file type (not just the built-in PDF/text/zip/office allowlist). Unknown types are cached and surfaced to the agent as a local path so it can inspect them via `terminal` / `read_file` / `ffprobe`. Default `false`. | | `DISCORD_MAX_ATTACHMENT_BYTES` | Maximum bytes per attachment the gateway will cache. Default `33554432` (32 MiB). Set to `0` for no cap (attachments are held in memory while being written). | -| `DISCORD_FREE_RESPONSE_AUTO_THREAD` | When `true`, free-response channels (listed in `DISCORD_FREE_RESPONSE_CHANNELS`) also auto-create a thread per message. Default `false` — free-response channels reply inline. Requires `DISCORD_AUTO_THREAD=true`; `DISCORD_NO_THREAD_CHANNELS` still wins. | +| `DISCORD_FREE_RESPONSE_AUTO_THREAD` | When `true`, free-response channels (listed in `DISCORD_FREE_RESPONSE_CHANNELS`) also auto-create a thread per top-level message. Default `false` — free-response channels reply inline. Requires `DISCORD_AUTO_THREAD=true`; `DISCORD_NO_THREAD_CHANNELS` still wins. | | `DISCORD_REACTIONS` | Enable emoji reactions on messages during processing (default: `true`) | | `DISCORD_IGNORED_CHANNELS` | Comma-separated channel IDs where the bot never responds | | `DISCORD_NO_THREAD_CHANNELS` | Comma-separated channel IDs where bot responds without auto-threading | diff --git a/website/docs/user-guide/messaging/discord.md b/website/docs/user-guide/messaging/discord.md index fa63901668..3e4f9d1294 100644 --- a/website/docs/user-guide/messaging/discord.md +++ b/website/docs/user-guide/messaging/discord.md @@ -447,7 +447,9 @@ discord: free_response_auto_thread: true # thread every top-level message there ``` -Requires `discord.auto_thread: true` (with it off, nothing threads anywhere). Channels listed in [`discord.no_thread_channels`](#discordno_thread_channels) still reply inline, and voice-linked text channels always ignore this flag. Both `no_thread_channels` and replies bypass it. +Requires `discord.auto_thread: true` (with it off, nothing threads anywhere). [`discord.no_thread_channels`](#discordno_thread_channels) still wins, voice-linked text channels always reply inline, and reply-type messages are never auto-threaded. + +`DISCORD_FREE_RESPONSE_AUTO_THREAD` wins over the `config.yaml` key when both are set — the YAML value only seeds the env var when it isn't already set, like every other `discord.*` bridge. #### `discord.auto_thread` diff --git a/website/docs/user-guide/multi-profile-gateways.md b/website/docs/user-guide/multi-profile-gateways.md index bd3361e702..493c368cf6 100644 --- a/website/docs/user-guide/multi-profile-gateways.md +++ b/website/docs/user-guide/multi-profile-gateways.md @@ -391,7 +391,7 @@ or allow-all opt-in are read from the owning profile's `.env` — the default profile opting into open access never opens a secondary profile's bot, and a secondary that opts in only in its own `.env` is honored. The same holds for per-bot behaviour written in a profile's `config.yaml` (`require_mention`, -`mention_patterns`, `allow_bots`, `reactions`, `auto_thread`, `dm_policy`, +`mention_patterns`, `allow_bots`, `reactions`, `auto_thread`, `free_response_auto_thread`, `dm_policy`, `ignored_channels`, Matrix `session_scope`, …): a secondary profile's YAML never lands in the shared process environment, so it cannot become the default profile's policy, and the default profile's YAML never governs a secondary