Before submitting
Area
apps/web, including the desktop app's shared chat renderer.
What happened
When an assistant references another existing T3 thread in a chat reply, the link can be an HTTP URL on 127.0.0.1. Clicking it from T3 desktop opens the system browser instead of selecting that thread inside the app.
Users can already insert an existing thread with @ or drag it from the sidebar into the composer. That produces a thread chip which navigates internally. Assistant replies have no equivalent supported rendering path, making it difficult for an agent to hand the user a useful link after finding or creating a thread.
Steps to reproduce
Reported workflow, with the click-handling path confirmed by source inspection:
- Open T3 desktop and have two existing threads in a connected environment.
- In one thread, ask the assistant for a link to the other thread.
- If it returns a Markdown link to the local web route, such as
[Other thread](http://127.0.0.1:<port>/<environmentId>/<threadId>), click it with the system-browser link preference.
- T3 opens the URL in an external browser rather than navigating to the existing thread.
- For comparison, attach the same thread using
@ in the composer: its thread chip uses internal navigation.
The URL above is a placeholder example, not a captured private thread URL. I have not independently run a fresh GUI reproduction.
Expected behavior
An assistant should have a supported way to reference an existing T3 thread that the user can click to open inside the current client, using the appropriate environment and thread IDs.
Ordinary web links should retain their configured behavior. This report does not propose treating every localhost URL as a T3 thread.
Actual behavior and source diagnosis
Inspected at commit 2188bdd8b5c0251f40daebdb66647dd0150cf076:
- ChatMarkdown's anchor renderer renders ordinary links with
target="_blank". It recognizes some special link types, but has no thread-route interception; other links follow the browser preference.
- DesktopWindow forwards safe new-window URLs to
openExternal, explaining why the localhost link opens the system browser.
- AssistantTimelineRow does not supply
renderContextReference. Emitting a t3-context:// reference in assistant Markdown therefore falls back to a plain text label, not a thread chip. Those references also require attached context records; a context ID is not simply a thread ID.
- ThreadContextChip already navigates through the typed
/$environmentId/$threadId route for user-attached threads.
Impact
Minor bug or occasional failure. Agents can find/create threads, but cannot give the user an equivalent clickable in-app reference in their replies. Users must locate the destination manually or attach it themselves.
Version and environment
- macOS, T3 Code desktop nightly, Codex provider.
- Source diagnosis at the commit above. The installed nightly may differ from that checkout.
- Desktop behavior was reported by the user; source inspection covered the shared web renderer and Electron link handling. Mobile was not verified.
Workaround
Find the destination in the sidebar, or type @ plus its title in the composer and use the resulting thread chip. Changing the HTTP hostname alone does not add internal thread navigation.
Related issues and work
The distinction is the entry point: this report concerns references rendered inside assistant chat messages. An OS-level deep-link handler alone would still leave the Markdown/reference rendering path to address.
Prepared with GPT-6 Astra through the Codex harness in T3 Code.
Before submitting
Area
apps/web, including the desktop app's shared chat renderer.
What happened
When an assistant references another existing T3 thread in a chat reply, the link can be an HTTP URL on
127.0.0.1. Clicking it from T3 desktop opens the system browser instead of selecting that thread inside the app.Users can already insert an existing thread with
@or drag it from the sidebar into the composer. That produces a thread chip which navigates internally. Assistant replies have no equivalent supported rendering path, making it difficult for an agent to hand the user a useful link after finding or creating a thread.Steps to reproduce
Reported workflow, with the click-handling path confirmed by source inspection:
[Other thread](http://127.0.0.1:<port>/<environmentId>/<threadId>), click it with the system-browser link preference.@in the composer: its thread chip uses internal navigation.The URL above is a placeholder example, not a captured private thread URL. I have not independently run a fresh GUI reproduction.
Expected behavior
An assistant should have a supported way to reference an existing T3 thread that the user can click to open inside the current client, using the appropriate environment and thread IDs.
Ordinary web links should retain their configured behavior. This report does not propose treating every localhost URL as a T3 thread.
Actual behavior and source diagnosis
Inspected at commit
2188bdd8b5c0251f40daebdb66647dd0150cf076:target="_blank". It recognizes some special link types, but has no thread-route interception; other links follow the browser preference.openExternal, explaining why the localhost link opens the system browser.renderContextReference. Emitting at3-context://reference in assistant Markdown therefore falls back to a plain text label, not a thread chip. Those references also require attached context records; a context ID is not simply a thread ID./$environmentId/$threadIdroute for user-attached threads.Impact
Minor bug or occasional failure. Agents can find/create threads, but cannot give the user an equivalent clickable in-app reference in their replies. Users must locate the destination manually or attach it themselves.
Version and environment
Workaround
Find the destination in the sidebar, or type
@plus its title in the composer and use the resulting thread chip. Changing the HTTP hostname alone does not add internal thread navigation.Related issues and work
t3code://thread deep links.The distinction is the entry point: this report concerns references rendered inside assistant chat messages. An OS-level deep-link handler alone would still leave the Markdown/reference rendering path to address.
Prepared with GPT-6 Astra through the Codex harness in T3 Code.