2e80d7fa05
slack_bolt builds a fresh AsyncWebClient for every inbound request and copies proxy=app.client.proxy into its constructor, where slack_sdk reads a None/blank proxy *argument* as "unspecified" and reloads HTTP(S)_PROXY from the environment. aiohttp then treats that env value as an explicit proxy and skips its own NO_PROXY check, so the adapter's resolved decision to go direct - a NO_PROXY bypass, or a proxy scheme aiohttp cannot use - holds on every client except the one authorization spends on auth.test. The failure looks like a healthy bot: Socket Mode connects, outbound sends keep working, and every inbound event is rejected with "Failed to authorize with the given token" - forever, since a failed auth_test_result is not cached and never retried differently. Re-apply the resolved proxy through AsyncApp(before_authorize=...), which bolt inserts before the authorization middleware: the request-scoped client already exists there and has not been used yet. Assigning the attribute post-construction is the only way to express "no proxy" to slack_sdk. Co-authored-by: Junie <junie@jetbrains.com>