Skip to content

[Feature]: Continue a Codex or Claude Code session started in the terminal as a T3 Code thread #15234

Closed

Description

@alimohammed1624

Problem

I start a Codex or Claude Code session in a terminal, get partway through a task, and then want to pick that same conversation up inside T3 Code. Today there is no way to do that:

  • The only path that brings outside sessions into T3 Code is the first-run wizard's import step at /welcome. It bulk-imports every recent transcript for the projects you tick. You cannot pick a single session, and nothing in the app leads back to it once onboarding is done (that reachability gap is tracked in [Bug]: Session import is unreachable after onboarding, so externally started sessions can never be imported #10961).
  • The server can already continue an imported thread natively: AgentSessionImporter writes the thread with a strong nativeThreadRef, and ProviderTurnStartService resumes it (Codex thread/resume). The thread.create importedNativeThread path is used only by the ACP registry import. No client surface lets a user choose a specific CLI session and continue it.
  • The per-session "Native sessions" list in provider settings exists only for ACP registry providers, not for Codex or Claude Code.

This is distinct from #10961, which asks for the bulk wizard import to be reachable again. This asks for continuing one specific session on demand, the way Zed's "Import Threads" (ACP session/list then session/load) and Orca's "Agent Session History" with "Resume in New Chat" work.

Expected behavior

From a project in T3 Code, I can open a list of recent Codex / Claude Code sessions that ran in that project's directory (title, agent, last activity), pick one, and continue it as a T3 thread. The new thread shows the imported history, and the next message resumes the native session.

Proposed slice

Reuse the existing scanner and importer rather than adding new discovery:

  1. agentSessions.list RPC: { projectId } returns the sessions found for that project root, marking the ones that already have a T3 thread.
  2. agentSessions.import: an optional sessions filter so only the selected session is imported, and the created threadIds in the result so the client can open the thread.
  3. Web: a "Continue a CLI session" dialog for a project, reachable from the sidebar project menu and the command palette.

No background sync, no auto-import, no mobile changes in this slice.

Environment

  • T3 Code main at ce90eec (2026-10-03), macOS, web client.

Related

Filed by alimohammed1624. Drafted with Claude Fable 5.1 in Claude Code.

Activity

  1. juliusmarminge commented on Oct 3, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Triage

    Thanks @alimohammed1624 for the detailed proposal, and for separating the reachability gap from the new workflow. This is a feature request. Proposals for new capabilities usually go in Ideas, and picking one Codex or Claude Code session and continuing it as a thread is already being discussed there:

    Adding your per-session picker design to one of those would help keep the conversation in one place. A maintainer will decide what to do with this issue.

    What exists today

    The reachability gap you called out is #10961, which is still open. After onboarding, the only client caller of agentSessions.import is the /welcome wizard, which imports every recent transcript for the projects you tick. AgentSessionImportInput is { projectId }, and the result is counts, not thread ids. Nothing in the app navigates back to /welcome after first run. #13510, which added an Import sessions row in project settings, was closed without merging.

    A per-session picker, agentSessions.list, and a session filter on import would be a new workflow rather than a fix for #10961. The Native sessions list is ACP-registry-only (AcpSessionManagementSection renders when driver === "acpRegistry"), which matches the docs.

    One correction, and a possible separate bug

    CLI import doesn't go through the thread.create importedNativeThread command. AgentSessionImporter writes the thread and a strong nativeThreadRef directly, with nativeConversationHeadRef: null and no provider turns. Codex continuation of that ref works: ProviderTurnStartService calls resumeThread, and the Codex adapter sends thread/resume.

    Claude differs. In ClaudeAdapterV2 openQuery, the first follow-up opens the query with sessionId unless there's a conversation head, the process already opened the session, or providerTurnOrdinal > 1. An imported Claude thread has none of those, so the first new message reuses an id the CLI already has, which matches the "Session ID … is already in use" failure the adapter comments describe. If you can reproduce that on an already-imported thread, a separate bug report with the session and the error text would be very useful.

  2. alimohammed1624 commented on Oct 3, 2026

    @alimohammed1624
    Author

    Thanks for the triage.

    • Correction accepted. CLI import writes the thread and the strong nativeThreadRef directly in AgentSessionImporter; the thread.create importedNativeThread path is only used by the ACP registry import. I have fixed that wording in the description.
    • I posted the per-session picker design in Discussion [Feature]: continue threads from claude code #6873 as suggested ([Feature]: continue threads from claude code #6873 (comment)) and will keep the design conversation there.
    • Claude first-message failure: I will try to reproduce it on an imported thread and, if it reproduces, file a separate bug with the session details and the error text.
  3. alimohammed1624 commented on Oct 3, 2026

    @alimohammed1624
    Author

    Reproduced the Claude first-follow-up failure on an imported thread and filed it separately with the error text and the CLI reproduction: #15243.

  4. kaovilai commented on Oct 9, 2026

    @kaovilai
    Contributor

    This would be so cool to have. I would love this.

  5. locked and limited conversation to collaborators on Oct 11, 2026
  6. converted this issue into a discussion #18025 on Oct 11, 2026
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

    enhancementRequested improvement or new capability.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