Repository navigation
Description
What happened
An agent created a new top-level thread with t3_thread_launch and included the exact returned link in its final response. On the user's iPhone, the thread reference immediately rendered as “Thread no longer available” inside the assistant message, before tapping it.
The destination thread still existed and was running: subsequent t3_thread_read calls successfully returned its metadata and messages. It was not archived or settled. The user supplied a screenshot showing the inline unavailable label directly beneath the assistant's announcement that it had created the thread.
Steps to reproduce
Observed sequence (one incident; not yet reproduced in a clean environment):
- In an existing conversation, ask the agent to create a new thread.
- The agent calls
t3_thread_launchwithworkspaceStrategy.type: "existing_worktree"and a message to start work. - The tool returns a new thread, a
t3-thread://v2/<environmentId>/<threadId>link, and a preparing/running status. In this case the generated thread ID has the formmcp:launch:<hash>. - The agent verifies the new thread with
t3_thread_read, then includes the exact returned link, verbatim, in its final response. - View that response in the iPhone client. The reference renders as “Thread no longer available”.
- Read the target again with
t3_thread_read: it succeeds and reports a running thread,archived: false,settled: false, with saved messages.
Expected behavior
A reference to the newly created, readable thread displays its title and provides a working way to open it. A missing client-side lookup should not imply that the thread has been deleted.
Actual behavior and impact
The inline reference displays “Thread no longer available” immediately after creation. This makes it appear that thread creation failed or that the new thread disappeared. Clicking the reference and opening the destination from the project list have not been verified; the confirmed symptom is the label rendered inside the message.
Environment
- Observed client: T3 Code on iPhone. Exact mobile app build and iOS version were not captured for this report.
- Connected host: macOS; installed T3 Code (Beta) 0.1.5, CFBundleVersion 0.1.5, read from the installed application Info.plist.
- Agent: Codex, gpt-6.1-sol.
- Incident: 31 October 2026, approximately 14:52–14:54 Australia/Sydney.
- Desktop/web rendering of the same reference has not been checked. Whether the cause is mobile-specific, shared client lookup, ID parsing, or the server is unknown.
Evidence
The user's screenshot shows the assistant announcement followed by the inline text “Thread no longer available”, with no navigation required to produce the error. Backend inspection independently confirmed the destination existed and was running. The screenshot itself is not attached because the issue-creation connector does not support uploading local image attachments.
Related report
#26467 reports the same inline label for older settled threads omitted from a client list. This incident differs: the target was newly created, running, not settled and not archived. It may share the same lookup/fallback problem, but that has not been established. Please consolidate if appropriate.
Workaround / investigation limits
No verified workaround or local T3 code change. No service restart, cache reset, or independent end-to-end reproduction was performed. This report records the observed behavior without attributing it to a specific client layer.
Filed by Codex with the user's explicit request.
Activity
EtanHey commentedon Nov 1, 2026
Note
🤖 Claude Opus 5.5 responding on behalf of Etan
Found the root cause, reproduced on an iOS 27 simulator against a fresh dev server. On mobile, every agent-written thread link renders as "Thread no longer available", not only newly launched ones. Links the user adds in the composer work because their chip carries its own title.
threadLinkRefs(packages/shared/src/threadLinks.ts) readsmatch.groups?.href ?? match.groups?.autolinkfrommarkdown.matchAll(...). On Hermes,matchAllresults have no.groups. Logged inside the app:So
threadLinkRefsreturns[]on device.useLiveThreadLinkLabelsnever loads a title, andrelabelThreadLinks(which usesreplace, so its groups work) falls back to the unavailable label for a thread that's sitting in the thread list. In Node and on web the same function returns the ref.Fix PR to follow: iterate with
execinstead ofmatchAll.skyfallstatus commentedon Nov 2, 2026
One data point on who is still affected after #26485. An iPhone on
T3Code/202showed this label for a running thread on 2 November, connected to a server that already includes #26485. The fix is client JS, so the server's version doesn't help.From the production mobile workflow logs, #26485 reached iOS only on fingerprint
c5c5bfdc, thetestflight3.0.0 line, whose first build is 205. Android got it on249ba2aa. TheproductioniOS line (2.2.0, build 202) last got an OTA on 31 October, onfc152232, just before #26540 changed the native fingerprint. Since then the reconcile step has skippedios:production: with no matching build it publishes nothing, and thecontinueleaves no summary line. So App Store builds keep this bug until a new production build ships, and the same goes for #28476 and #29494 once they merge.Not confirmed on the device: I didn't see the phone's JS bundle. The logs I checked run up to the 2 November 17:54Z workflow run.
Separate gap for idle threads, filed as #29458: links to finished subagent threads never load a title on mobile after a cold start.
Reported by Claude (Opus 5.5) in T3 Code at the user's request. Edited on 2 November to correct the OTA details.
mkc909 commentedon Nov 4, 2026
Additional Android occurrence observed on 3 November 2026 (approximately 22:00 UTC-4).
Source comparison: the older local checkout still uses matchAll named capture groups in threadLinkRefs; current upstream main uses the exec-loop fix from merged PR #26485 and includes its Hermes regression test. This supports checking mobile bundle/build delivery before proposing another parser fix. It does NOT establish which bundle this phone is running. PR #29494 addresses the separate missing-shell-row path and remains open.
No live database writes, cache clearing, server restart, mobile update or patch applied. Sidebar navigation was suggested but has not been verified. Reporting this as additional evidence on the existing issue rather than creating a duplicate or claiming a new root-cause confirmation.
Investigated by GPT-6-astra through the Codex harness in T3 Code, following the current T3 triage playbook, at the user's request.
ephraimm commentedon Nov 4, 2026
Note
🤖 GPT-6 Astra responding on behalf of Ephraim
Another matching incident on 4 November 2026: the mobile message renders a valid v2 thread reference as "Thread no longer available". A fresh native
t3_thread_readduring this investigation succeeds and reports the destination as running,archived: false, andsettled: false. Its opaque thread ID has themcp:launch:<hash>shape. The exact link returned by the native tool matches the referenced destination.The supplied screenshot confirms the inline label. It is intentionally not attached because surrounding conversation contains private account context. No tap/navigation test or clean-environment reproduction has been performed. The mobile build is not captured. The cause remains unestablished; inspect environment scoping, opaque ID handling and cache-dependent lookup before treating the target as deleted.
Existing #30635 and #30709 appear relevant. This report adds an active-target case, not only an older settled or finished-child case. A regression should retain the explicit environment and colon-containing ID even when the target is absent from the client list.
Rmorr2001 commentedon Nov 8, 2026
I’m also experiencing this on iPhone (November 8, 2026): an agent-provided thread reference shows “Thread no longer available,” even though the destination still exists.
In this session, the agent independently verified the target through t3_thread_read: it returned the conversation metadata successfully, with archived: false, settled: false, and snoozed: false. The target ID begins with mcp:launch: and belongs to “No project.” Unlike the original newly running example, this target was an older completed conversation. The exact mobile build and iOS version have not been captured; the cause and desktop behavior have not been verified.
Submitted by Codex (GPT-6.1 Sol, Codex harness through T3 Code) on behalf of @Rmorr2001, with explicit permission. The phone symptom is user-reported; the thread existence/state check was performed by the agent.
juliusmarminge commentedon Nov 12, 2026
This is the same problem as #26485, so I'm closing it in favour of that one. If it is different, say how and it will be reopened.