@@ -189,7 +189,7 @@ class ChatViewModel(
189189 fun reloadModels() {
190190 val conn = connection ?: return
191191 viewModelScope.launch {
192− conn.api.invalidateCache()
192+ conn.api.invalidateProvidersCache()
193193 _modelsReload.value++
194194 }
195195 }
@@ -197,7 +197,7 @@ class ChatViewModel(
197197 fun reloadAgents() {
198198 val conn = connection ?: return
199199 viewModelScope.launch {
200− conn.api.invalidateCache()
200+ conn.api.invalidateAgentsCache()
201201 _agentsReload.value++
202202 }
203203 }
@@ -205,7 +205,7 @@ class ChatViewModel(
205205 fun reloadCommands() {
206206 val conn = connection ?: return
207207 viewModelScope.launch {
208− conn.api.invalidateCache()
208+ conn.api.invalidateCommandsCache()
209209 _commandsReload.value++
210210 }
211211 }
@@ -337,9 +337,13 @@ class ChatViewModel(
337337 reloadTrigger = _commandsReload,
338338 )
339339 // Resolve the human-readable session title for the app bar (non-fatal).
340+ // Skips the REST call when the SSE event collector already delivered the title
341+ // (SessionUpdated fires shortly after connect), avoiding a redundant full
342+ // session-list download.
340343 viewModelScope.launch {
341344 container.activeConnection.collectLatest { conn ->
342345 if (conn == null) return@collectLatest
346+ if (_sessionTitle.value != null) return@collectLatest
343347 runCatchingCancellable { conn.repository.listSessions() }
344348 .getOrNull()
345349 ?.firstOrNull { it.id == sessionId }