Note
Grok responding on behalf of Julius.
Triage
Thanks @alimohammed1624 for turning the prediction from #15234 into a real repro, with the CLI command and the logs.
Confirmed on main at ce90eec1f. This isn't limited to the unmerged per-session picker. The welcome-wizard import goes through the same AgentSessionImporter path, so every imported Claude Code thread fails the same way on its first follow-up.
Your reading matches the code:
- Import writes a strong
nativeThreadRef,nativeConversationHeadRef: null, and no provider turns. It also stores a ClauderesumeCursorof{ threadId, resume }, butClaudeAdapterV2never reads that cursor. - The first follow-up's
providerTurnOrdinalis 1, since import creates no provider turns. - In
openQuery,shouldResumeis false for an imported thread, somakeClaudeQueryOptionssendssessionIdinstead ofresume. The comment at that spot describes exactly the "Session ID … is already in use" failure. ClaudeAdapterV2.resumeThreadjust stamps the existing row and succeeds, soProviderTurnStartServicenever takes theprovider_resume_fallbackpath. The failure comes later, when the query opens.
Codex isn't affected, because its resumeThread sends thread/resume for the same native ref.
Likely fix area
shouldResume in ClaudeAdapterV2.openQuery could also treat an imported thread as resumable, for example by honoring the stored resumeCursor. Alternatively, the importer could record a conversation head. A maintainer will decide on the fix direction.
The per-session picker idea in #15234 remains a separate feature discussion.