Skip to content

[Nit]: No "starting agent" state while the provider boots; only "Syncing messages..." shows for ~15s #14244

Description

@josephv123

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Run t3 serve on a Linux host and connect from the macOS desktop app through the relay.
  2. Start a new Claude thread and send the first message, on a host where the Claude CLI is slow to boot (in my case the host was heavily loaded).
  3. Watch the composer and timeline while the provider session starts.

Expected behavior

While the server is starting the provider session and waiting for the first provider event, the UI shows what it is doing (for example "Starting Claude…"), and the "Working for Xs" row appears as soon as the message is sent.

Actual behavior

For about 15s the composer only shows "Syncing messages...", which describes the client's thread-detail sync state, not the provider. After that, "Working for 16s" appears with the timer already partly elapsed. From the UI you can't tell whether the message was received, whether the connection is broken, or whether the agent is starting up.

Server trace for that turn (thread a81c39ea…, all times UTC):

08:08:44.270  orchestration.command.thread.turn.start        93ms
08:08:44.502  processTurnStartRequested                    1879ms
08:08:45.024  ensureSessionForThread                       1356ms
08:08:45.886  startSession (claudeAgent)                    102ms
08:08:46.415  sendTurn                                    13900ms   <- no user-visible state for this whole span
08:08:47.361  ws.rpc.orchestration.subscribeThread         Interrupted (4.1s)
08:08:51.395  ws.rpc.orchestration.subscribeThread         Interrupted (31.4s)
08:08:59.736  turn.started (first provider event)

Most of the 13.9s sendTurn is Claude CLI boot. On the same host, claude -p took 14.2s to emit system/init even with --strict-mcp-config. That part is environmental. The UI issue is that nothing tells the user this phase is happening, and the working indicator doesn't appear until it ends.

Impact

Nit: minor UX polish. Nothing breaks and no data is lost.

Version or commit

t3 v0.0.42

Environment

Server: Ubuntu, Linux 7.0.0, headless t3 serve (background service), 8 cores and 6.6 GB RAM, heavily loaded (load avg ~100). Client: macOS desktop app over the t3coderelay relay. Provider: Claude Code 2.1.283.

Workaround

None. You just have to wait.

No activity

Activity on this issue will appear here.

Activity

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.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions