Session management

Adopt the historical sessions that fail to open, or hand them back to native opening.

1. When you need this page

ChatGPT.app writes a session’s provider into the kernel database when the session is created. If that provider is later deleted or renamed (a changed gateway, a cleanup of old providers, a temporary entry added and removed from the CLI), those historical sessions fail on open: the session is still there, but the provider it points at no longer resolves.

The Coskey “Sessions” page makes this visible and offers two ways out:

Way out What it does When to use it
Adopt (take over) Rewrites the session’s provider to the local Coskey relay: it opens normally again, and you can still switch models inside it Sessions whose provider no longer resolves; or unmanaged sessions you want Coskey to handle
Hand over (give back) Writes a natively resolvable provider back (such as openai), returning the session to ChatGPT.app / codex Sessions you want out of Coskey’s hands, or ones that should use official models

2. Reading the Sessions page

Sessions overview

  • Adoption state at the top: all / adopted / not adopted / fails to open, with counts;
  • Filters and search: search by session name, thread id or directory;
  • Grouped by project, matching the projects in ChatGPT.app’s sidebar, with unassigned ones collected under “other”;
  • Each row shows the thread id, state badges, stored provider, stored model, pinned model and last activity, with per-row “Adopt” and “Hand over” buttons;
  • State badges: provider unresolvable (recoverable), session file missing (the rollout is gone — neither adopting nor handing over can save it), archived, in use, residual and window pending.

3. One-click adoption: fixing “historical session fails to open”

Click “Fails to open (N)” and the list keeps only the problematic sessions:

Filtered to sessions that fail to open

  • Two rows show provider unresolvable (a provider named legacy, long gone from the configuration) — these are recoverable;
  • One row shows session file missing — the rollout file is gone, and no provider rewrite can bring it back; handle it (or delete it) inside ChatGPT.app;
  • So the buttons only count what can actually be handled: “Adopt all at-risk sessions (2)” and “Hand over all failing sessions (2)” skip the missing-file row.

Click “Adopt all at-risk sessions (2)” and the confirmation dialog lists exactly which sessions are about to be rewritten:

Adoption confirmation

After confirming, their provider becomes coskey and the banner reports “adopted 2, skipped official 0, skipped archived 0, residual 0”, leaving only the unrecoverable row behind:

Adoption done

Switch to “Adopted (3)” to check the result: the provider is coskey and the last model sent is the current default:

List after adoption

Those sessions now open normally in ChatGPT.app, with their contents untouched, and you can still switch to other providers’ models inside them. Adoption only rewrites the provider field and records the previous value — uninstalling Coskey can put it back with “restore the pre-adoption provider”.

4. Per-row actions and the other filters

  • “Adopt” and “Hand over” on a row affect that session only — useful for rescuing one session precisely;
  • “Hand over” asks for a natively resolvable target provider (openai, or any name defined in ~/.codex/config.toml). Afterwards the session opens natively in ChatGPT.app / codex without Coskey, and you can adopt it again at any time;
  • “Not adopted · opens fine” lists sessions whose provider still resolves but which Coskey does not manage — adopt them in bulk to manage everything, or leave them alone;
  • “Releasable” lists sessions that could be given back; “hand over all releasable” returns them in one go;
  • “Show archived” is off by default: archived sessions are neither counted nor listed (Coskey never changes archive state).

5. How this maps to the CLI

GUI action CLI equivalent
Adopt one or many coskey take-over <threadId>... [--all] [--pin <model>]
Hand over one or many coskey hand-over <threadId>... [--all] [--to <provider>] [--dry-run]
Release a pin coskey unpin <threadId>
List sessions coskey threads [--group] [--adapted yes|no|broken]

6. Common questions

Symptom Cause / fix
Opening a historical session always fails Its stored provider no longer resolves: adopt it from the “Fails to open (N)” view
Still fails after adoption and the row says “session file missing” The rollout file is gone (the kernel database points at a file that no longer exists); Coskey cannot repair it — handle that session in ChatGPT.app
Does adoption change my session contents? No: it rewrites the provider field in the kernel database and records the previous value on Coskey’s side
I no longer want Coskey managing a session Use “Hand over” to return it to a natively resolvable provider (the kernel database is backed up first)
The counts do not add up “Show archived” is off by default and archived sessions are not counted; sub-agent sessions expand with their parent

Next: Status and settings.