set_session_model and the /model slash command called switch_model synchronously on the loop thread; it does ~10 s of network I/O on a cold cache (models.dev, custom-endpoint probes), stalling every ACP session in the process. Same asyncio.to_thread the gateway uses for the same call.