nikivdev/code · error
recover is only supported for Codex sessions; use `f ai code
Error message
recover is only supported for Codex sessions; use `f ai codex recover ...`
What it means
Raised by `run_provider` in src/ai.rs when the `recover` action is dispatched against a Cursor session. Session recovery is a Codex-only integration (see recover_codex_sessions); the Cursor match arm bails with guidance toward `f ai codex recover ...`.
Source
Thrown at src/ai.rs:634
}
Some(ProviderAiAction::Log { .. }) => {
bail!("log is only supported for Codex sessions; use `f codex log ...`");
}
Some(ProviderAiAction::Sessions { .. })
| Some(ProviderAiAction::Browse { .. })
| Some(ProviderAiAction::Continue { .. })
| Some(ProviderAiAction::New)
| Some(ProviderAiAction::Open { .. })
| Some(ProviderAiAction::Resolve { .. })
| Some(ProviderAiAction::Resume { .. })
| Some(ProviderAiAction::Find { .. })
| Some(ProviderAiAction::FindAndCopy { .. }) => {
bail!(
"Cursor transcripts are readable only; use `f cursor list`, `f cursor copy`, or `f cursor context`"
);
}
Some(ProviderAiAction::Recover { .. }) => {
bail!("recover is only supported for Codex sessions; use `f ai codex recover ...`");
}
}
return Ok(());
}
match action {
None => quick_start_session(provider)?,
Some(ProviderAiAction::List) => list_sessions(provider)?,
Some(ProviderAiAction::LatestId { path }) => print_latest_session_id(provider, path)?,
Some(ProviderAiAction::Sessions { path, json }) => provider_sessions(provider, path, json)?,
Some(ProviderAiAction::Browse { path, query }) => {
browse_codex_sessions(path, query, provider)?
}
Some(ProviderAiAction::Continue { session, path }) => {
continue_session(session, path, provider)?
}
Some(ProviderAiAction::New) => new_session(provider)?,
Some(ProviderAiAction::Connect {View on GitHub (pinned to a747e741ae)
Solutions
- Run `f ai codex recover ...` — recovery only operates on Codex sessions
- For Cursor, manually copy the transcript you still have via `f cursor copy` or `f cursor context` before it is lost
- Keep regular backups of Cursor transcript data since no CLI recovery exists
- Gate Recover dispatch on Provider::Codex in automation
Example fix
// before f cursor recover --limit 5 // after f ai codex recover --limit 5 # for Cursor, salvage what exists: f cursor copy --session abc > backup.md
Defensive patterns
Strategy: validation
Validate before calling
fn supports_recover(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
}
if !supports_recover(provider) {
eprintln!("recover requires Codex: use `f ai codex recover ...`");
return;
}
// For Cursor, proactively copy transcripts before data loss:
// f cursor list && f cursor copy --session <id> > backup.md Type guard
fn is_codex(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
} Try / catch
match run_provider(provider, Some(ProviderAiAction::Recover { .. })) {
Err(e) if e.to_string().contains("recover is only supported for Codex") => {
eprintln!("recovery unavailable for this provider; copying existing transcript instead");
}
other => other?,
} Prevention
- Only attempt recovery on Codex sessions
- Back up Cursor transcripts regularly — there is no CLI recovery path for them
- Salvage readable Cursor data with `f cursor copy` immediately after data loss
- Keep recovery scripts pinned to `f ai codex recover`
When it happens
Trigger: Running `f cursor recover ...` or `f ai cursor recover ...`, i.e. run_provider(Provider::Cursor, Some(ProviderAiAction::Recover{..})). Occurs when attempting to recover lost sessions from Cursor transcript files.
Common situations: Trying to salvage a lost Cursor chat after a crash, recovery scripts written for Codex run against Cursor, assuming transcript files are writable/restorable like Codex session files.
Related errors
- telemetry is only supported for Codex sessions; use `f codex
- trace is only supported for Codex sessions; use `f codex tra
- Cursor transcripts are readable only; use `f cursor list`, `
- project-ai is only supported for Codex sessions; use `f code
- skill-eval is only supported for Codex sessions; use `f code
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/cda6582437fe7765.
Report an issue: GitHub.