Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Configure the Devin agent through the ACP Registry provider (
acpRegistry_devin). - Start a Devin thread. The session publishes its model list (
onSessionConfigurationUpdate->publishLiveConfiguration). - Devin adds a new model upstream (here:
gemini-4-carbon-medium).devin acp->session/newnow returns it in themodelconfig option (144 models, was 143). - In T3 settings, click Refresh on the Devin provider. Wait more than 15 minutes and click Refresh again.
Expected behavior
After a refresh, the Devin model list matches what devin acp returns for session/new, and the new model appears under Settings -> Models.
Actual behavior
The new model never appears. Refresh updates checkedAt, but the model list stays at the old 143 entries.
Two in-memory caches in AcpRegistryDriver cause this, and Refresh clears neither of them:
enrichProviderCachedreturns the cached probe forPROBE_SUCCESS_TTL_MS(15 min). Only auth changes,setProvider,disableProviderandlogoutcallinvalidateEnrichmentCache. Refresh does not.AcpRegistryRuntimeCoordinatorkeeps the last live session configuration per instance (liveConfigurationByInstance).withLiveRuntimeState->applyAcpRegistryLiveConfigurationreplaces the probed models with this stored list whenever it has models. So a list from a session that started before the upstream change wins over a fresh probe, even after the 15 min TTL ends. The stored list is cleared only when the driver instance is re-created, on auth invalidation, or on logout.
After the TTL ended, a fresh probe spawned devin acp and got 144 models, but the snapshot still showed 143.
Impact
Minor bug or occasional failure
Version or commit
T3 Code server 0.1.8, Devin CLI 3000.11.205 (ACP Registry binary)
Environment
Linux (WSL2), T3 Code desktop with the WSL runtime, ACP Registry provider: Devin
Logs or stack traces
# Direct probe of the same binary that T3 uses
devin acp -> initialize -> session/new
configOptions[model].options: 144 (includes gemini-4-carbon-medium)
# T3 provider snapshot after Refresh (past the 15 min TTL)
models: 143 (no gemini-4-carbon-medium), checkedAt updatedWorkaround
Start any new Devin session in T3, for example a one-line prompt on a free model. The new session publishes a fresh live configuration, and the snapshot picks up the new model right away. Restarting T3 also works.
Suggested fix
- Make the user-triggered provider refresh call
invalidateEnrichmentCacheandclearLiveConfiguration(instanceId). Or skip the probe cache for a manual refresh. - In
applyAcpRegistryLiveConfiguration, prefer the newer source by timestamp, or merge the stored session list with the probed list, instead of always letting a stored session list win.
Activity
test(acp-registry): refresh keeps a stale model list after the agent …