Repository navigation
Description
Summary
The iPhone lock screen Live Activity shows 1 active agent · 1 needs attention, with a thread title and an Input status. Opening the corresponding thread shows Thread unavailable, preventing a response to the agent's input request from mobile.
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/mobile (iOS)
Steps to reproduce
- Have an agent waiting for user input.
- Observe the lock screen Live Activity showing the thread with an
Inputstatus and1 needs attention. - Open the corresponding thread from the Live Activity.
- The Thread screen displays the error below instead of the conversation and pending input request.
The report is based on two screenshots of the observed state; reproduction frequency and the exact triggering conditions have not been established.
Expected behavior
The associated thread opens and allows the user to respond to the pending input request. If the mobile state needs to sync first, the app should load the thread or provide an actionable recovery option.
Actual behavior
The Thread screen displays:
Thread unavailable
This thread is not available in the current mobile snapshot.
No conversation or input controls are displayed, despite the Live Activity indicating that the agent needs attention.
Impact
Blocks responding to the affected agent's input request through this mobile flow. Whether opening the thread through the normal thread list works is not yet known.
Version or commit
Not recorded.
Environment
- Device: iPhone
- iOS version: Not recorded
- T3 Code mobile/server versions: Not recorded
Screenshots, recordings, or supporting files
The two supplied screenshots show the following (image files are not attached to this issue):
IMG_5570.png: Lock screen Live Activity showing1 active agent · 1 needs attention, the thread title, andInput.IMG_5571.png: Thread screen showing the exact error quoted above, with a back button and no conversation content.
Relevant code
ThreadRouteScreen.tsx contains the exact error text in ThreadUnavailableScreen. ThreadRouteScreen falls back to it when the selected thread does not match the route and the connection is not considered to be hydrating. This identifies the rendering path, not a confirmed root cause.
Workaround
None confirmed.
Activity
juliusmarminge commentedon Sep 9, 2026
Triage
Accepted as a mobile iOS bug. Live Activity and the Thread screen use different sources of truth, and the Thread route fail-closes before the local snapshot/detail can catch up.
What we can confirm from the report + code
The lock-screen copy (
1 active agent · 1 needs attention,Input) is the Live Activity widget advertising awaiting_for_inputrow. The banner deep-links tot3code://threads/{environmentId}/{threadId}.The exact empty state is
ThreadUnavailableScreeninapps/mobile/src/features/threads/ThreadRouteScreen.tsx. That screen is shown when:selectedThreadis missing or does not match the route.“Hydrating” today is only
isLoadingConnectionsor the environment beingconnecting/reconnecting. The route does not wait forhasPendingShellSnapshot/hasLoadedShellSnapshot(Home and New Task do), and it does not wait for the per-thread detail subscription (empty/synchronizing). If the environment runtime is not in the catalog yet, connection defaults to"available"and unavailable is immediate.Live Activity is published by the server over relay/APNs. The Thread screen reads the phone’s connected-environment shell snapshot. Those can disagree even when the agent really is waiting for input.
Likely causes (ranked)
archived_at IS NULL). A waiting thread that is archived, or not yet streamed into the cached snapshot, can still appear on Live Activity.Whether the same thread opens from the home list is still unknown and would distinguish (1) from (2)/(3).
Related, not duplicates
invalid_dpop).No open or merged PR fixes this Live Activity → ThreadUnavailable path.
Suggested fix
Keep Opening thread… on this deep-link (and the same
/threads/:env/:threadentry points: notification tap, home-screen shortcuts) until the target environment’s shell has synced oruseEnvironmentThreadleavesempty/synchronizing. Only then show an actionable empty state (reconnect this environment / thread not on this device / open from archive). Do not fail-closed while a snapshot is still pending.Helpful follow-up (does not block)
Labels:
bugacceptedvia-triage