Skip to content

[Bug]: Newly created running thread renders as “Thread no longer available” in iPhone message #27977

Closed as duplicate

Description

@lucas-winterbottom

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):

  1. In an existing conversation, ask the agent to create a new thread.
  2. The agent calls t3_thread_launch with workspaceStrategy.type: "existing_worktree" and a message to start work.
  3. 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 form mcp:launch:<hash>.
  4. The agent verifies the new thread with t3_thread_read, then includes the exact returned link, verbatim, in its final response.
  5. View that response in the iPhone client. The reference renders as “Thread no longer available”.
  6. 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

  1. EtanHey commented on Nov 1, 2026

    @EtanHey
    Contributor

    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) reads match.groups?.href ?? match.groups?.autolink from markdown.matchAll(...). On Hermes, matchAll results have no .groups. Logged inside the app:

    [..."ab".matchAll(/(?<x>a)/g)].map(m => m.groups)  // [undefined]
    "ab".match(/(?<x>a)/).groups                        // { x: "a" }
    /(?<x>a)/g.exec("ab").groups                        // { x: "a" }
    "ab".replace(/(?<x>a)/g, (...a) => …a.at(-1))       // { x: "a" }
    

    So threadLinkRefs returns [] on device. useLiveThreadLinkLabels never loads a title, and relabelThreadLinks (which uses replace, 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 exec instead of matchAll.

  2. skyfallstatus commented on Nov 2, 2026

    @skyfallstatus

    One data point on who is still affected after #26485. An iPhone on T3Code/202 showed 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, the testflight 3.0.0 line, whose first build is 205. Android got it on 249ba2aa. The production iOS line (2.2.0, build 202) last got an OTA on 31 October, on fc152232, just before #26540 changed the native fingerprint. Since then the reconcile step has skipped ios:production: with no matching build it publishes nothing, and the continue leaves 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.

  3. mkc909 commented on Nov 4, 2026

    @mkc909

    Additional Android occurrence observed on 3 November 2026 (approximately 22:00 UTC-4).

    • Surface: Android T3 mobile app, connected to a Windows x64 host.
    • Server reports version 0.1.7-nightly.20261103.4119. User confirmed Android app version v2.2.0. Numeric native build and installed OTA/runtime fingerprint remain unknown; v2.2.0 alone does not establish the installed JavaScript bundle.
    • An agent used t3_thread_launch to create one top-level thread in the same existing project, inherited Codex gpt-6-astra, root workspace (no worktree).
    • The agent pasted the exact returned v2 autolink. The mobile UI rendered "Thread no longer available" immediately, as plain text. Reposting the same returned link produced the same result.
    • Fresh t3_thread_read and t3_thread_list calls both find the destination in the same environment/project. It is not archived, settled or snoozed; parentThreadId and relationshipToParent are null. Its first run completed with 31 timeline items and a saved response. This is not an idle delegated-child-only case.
    • User screenshot confirms the unavailable label in three assistant messages. Screenshot contains private application material, so it is not attached publicly.

    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.

  4. ephraimm commented on Nov 4, 2026

    @ephraimm

    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_read during this investigation succeeds and reports the destination as running, archived: false, and settled: false. Its opaque thread ID has the mcp: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.

  5. Rmorr2001 commented on Nov 8, 2026

    @Rmorr2001

    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.

  6. juliusmarminge commented on Nov 12, 2026

    @juliusmarminge
    Member

    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.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions