Skip to content

[Bug]: Provider update result message persists after refresh, even once the provider is up to date #24330

Closed

Description

@jimmyylavoie

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

  1. Have a provider whose in-app update ends in unchanged status. In my case, standalone Codex 0.163.0 with npm latest at 0.164.0: codex update exited 0 without installing anything (see [Bug]: Standalone Codex update succeeds but stays outdated when native latest lags npm #23937 for the same family of cases), so T3 recorded "Update command completed, but T3 Code still detects an outdated provider version."
  2. Fix the installation outside T3 Code. I ran npm i -g @openai/codex@latest and removed the standalone ~/.local/bin/codex symlink, so codex --version now reports codex-cli 0.164.0.
  3. In T3 Code, open the environment's provider settings and press Refresh providers.

Expected behavior

The refresh picks up the new version. Since the provider is no longer outdated, the old update result no longer applies and should be cleared or hidden.

Actual behavior

After the refresh, the Codex row shows the new version correctly, but the stale update message is still there underneath:

0.164.0 · Latest 0.164.0
Update command completed, but T3 Code still detects an outdated provider version.

The message stays until the server restarts. The same mechanism keeps "Provider updated." under Claude indefinitely. That one is harmless but shows the state is never retired.

Cause, as far as I can tell (main @ eeda2cb):

  • ProviderRegistry.ts keeps update results in the in-memory maintenanceActionStatesRef.
  • applyProviderUpdateState re-attaches that state to every refreshed snapshot in upsertProviders.
  • The only writer is providerMaintenanceRunner.ts via setProviderMaintenanceActionState. Nothing clears the entry on refresh. It is only removed when the instance disappears (syncLiveSources) or when a new update sets a new state.

So a refresh replaces the version data but keeps the verdict computed against the old version.

One possible direction, which I'd leave to maintainers: drop a terminal unchanged/failed update state once a refreshed snapshot is no longer outdated, or record the installed version alongside the state and ignore the state when the version changes.

The message contradicts the version shown right above it. It suggests the update is still broken and invites another attempt.

Impact

Cosmetic issue

Version or commit

T3 Code 0.1.2-nightly.20261022.3526 (code paths above confirmed unchanged on main @ eeda2cb)

Environment

macOS 26.5 (Apple Silicon), T3 Code desktop (Nightly), viewed from the T3 Code iOS app over Tailscale. Provider: Codex CLI 0.164.0 (npm global, /opt/homebrew prefix).

Logs or stack traces

# The original failed update. Same command T3 runs for standalone Codex:
$ CODEX_HOME=~/.codex ~/.local/bin/codex update
Updating Codex via `sh -c 'curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh'`...
curl: (56) The requested URL returned error: 404

🎉 Update ran successfully! Please restart Codex.
# exit=0, version unchanged (0.163.0)

# After switching to npm:
$ which codex && codex --version
/opt/homebrew/bin/codex
codex-cli 0.164.0

Screenshots, recordings, or supporting files

1-before-refresh-stale-message.jpg
2-after-server-restart.png

Workaround

Restart the T3 Code server. The update state lives only in memory, so after a restart the next refresh no longer re-attaches it. Verified: after the desktop app respawned the backend and I refreshed providers, both rows showed only " · Latest ", with no update message.

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions