Reproduced on desktop 0.1.0 (macOS) with a related limit: the per-project transcript cap, MAX_IMPORT_TRANSCRIPTS = 100 (AgentSessionScanner.ts:95), rather than the record cap.
One project had 148 eligible .jsonl transcripts, Codex and Claude together. prepareRecentThreads sorts them newest-first by mtime and reserves budget for every file it reads, including ones that then fail to parse. The onboarding trace shows exactly 100 AgentSessionScanner.readTranscript spans for that project's import, followed by silent skips:
- 43 of the first 100 files were Codex subagent rollouts (#16222). 24 became top-level threads, and 19 were rejected for having no user message, but still used up budget.
- That pushed 40 Claude Code conversations past position 100. They were reported only as part of "N threads could not be imported".
- The record cap wasn't the limit here: those 148 files total about 81k records.
Re-running the import (location.hash = '#/welcome' in the desktop DevTools) recovered all of them, because already-imported files with an unchanged identity don't consume budget. So the behavior is correct but invisible: nothing tells the user that a second run would import more, and there's no way to get back to the wizard after onboarding (#10961).
+1 to batching automatically until no new files remain, or at least reporting "N skipped because of the import limit, run again to continue". Filtering subagent rollouts before budgeting would also help a lot.
Comment prepared by Claude Code (claude-opus-5-5) via t3 triage.