Skip to content

fix(slack): config gating, tool_progress default, NO_PROXY support#16288

Merged
teknium1 merged 4 commits into
mainfrom
hermes/hermes-aa28dba4
Apr 27, 2026
Merged

fix(slack): config gating, tool_progress default, NO_PROXY support#16288
teknium1 merged 4 commits into
mainfrom
hermes/hermes-aa28dba4

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Three independent Slack config/transport fixes bundled.

1. Respect config.yaml slack.enabled when SLACK_BOT_TOKEN is set

PR #15689 by @haru398801 — 5 lines, gateway/config.py

Previously, setting SLACK_BOT_TOKEN in the environment unconditionally enabled the Slack gateway adapter, overriding slack.enabled: false in config.yaml. This caused ERROR [Slack] SLACK_APP_TOKEN not set on every gateway startup for users who have the bot token available for skills/cron notifications but don't want the full messaging adapter running. Fix: only set enabled=True when there is no existing yaml config; if yaml explicitly sets enabled: false, respect it. Token is still stored so skills can use it.

2. Default Slack tool_progress to off

PR #14746 by @xnbi — 18 lines, gateway/display_config.py + tests

Closes #14663. Slack (Bolt/Socket Mode) cannot edit progress lines like the CLI — each becomes a permanent channel message. The tier-medium default of new was cluttering public channels. Set Slack-specific override {**_TIER_MEDIUM, "tool_progress": "off"}. Other tier-2 platforms (Mattermost, Matrix, Feishu) unchanged. Users can still enable it globally or per-platform. Also fixes Windows utf-8 encoding assumption in two migration tests.

3. Honor NO_PROXY for Slack transport

PR #12011 by @badgerbees — 275 lines, base.py + slack.py + tests

Slack Socket Mode and API calls are proxy-sensitive. Previously, the Slack adapter used whatever global proxy config resolved — including SOCKS proxies that Slack SDKs don't support, and ignoring NO_PROXY exclusions for slack.com/files.slack.com/wss-primary.slack.com. Fix: new is_host_excluded_by_no_proxy helper in base.py (supports comma/space-separated entries, leading dots, *. wildcards), new _resolve_slack_proxy_url in slack.py that rejects non-HTTP(S) schemes and short-circuits when any Slack host is in NO_PROXY, and _apply_slack_proxy wiring to AsyncApp/AsyncWebClient/AsyncSocketModeHandler. Per-adapter so other platforms unaffected.

Validation

tests/gateway/test_slack.py + test_display_config.py + test_verbose_command.py + test_config.py: 221 passed.

Credits

Closes #15689
Closes #14746
Closes #12011
Closes #14663

haru398801 and others added 4 commits April 26, 2026 18:32
…env var is set

Previously, setting SLACK_BOT_TOKEN in .env would unconditionally enable
the Slack gateway adapter regardless of `slack.enabled: false` in config.yaml.
This caused spurious "SLACK_APP_TOKEN not set" errors when the token was
used only by skills (e.g. cron jobs that send Slack messages) rather than
for the Hermes messaging gateway.

Now, enabled: false in config.yaml is respected — the token is stored so
skills can still use it, but the gateway adapter is not activated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Slack Bolt posts are not editable like CLI spinners; medium-tier new still emitted a permanent line per tool start (issue #14663).

- Built-in slack default: off; other tier-2 platforms unchanged.

- Adjust /verbose isolation test for off to new cycle.

- Migration tests: read/write config.yaml as UTF-8 (Windows locale).
@teknium1 teknium1 merged commit bdc1adf into main Apr 27, 2026
10 of 11 checks passed
@teknium1 teknium1 deleted the hermes/hermes-aa28dba4 branch April 27, 2026 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: slack gateway is reporting intermediate tool calls

4 participants