nikivdev/code · error
skill-source is only supported for Codex sessions; use `f co
Error message
skill-source is only supported for Codex sessions; use `f codex skill-source ...`
What it means
Raised by `run_provider` in src/ai.rs when the `skill-source` action is dispatched against a Cursor session. Skill source inspection is a Codex-only integration; the Cursor dispatch explicitly bails and points to `f codex skill-source ...`.
Source
Thrown at src/ai.rs:629
"skill-source is only supported for Codex sessions; use `f codex skill-source ...`"
);
}
Some(ProviderAiAction::Agent { .. }) => {
bail!("agent is only supported for Codex sessions; use `f codex agent ...`");
}
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)?
}View on GitHub (pinned to a747e741ae)
Solutions
- Run `f codex skill-source ...` instead
- Use only the read-only Cursor commands (`f cursor list` / `copy` / `context`) for Cursor data
- Assert provider == Codex in scripts before skill-related calls
- Fix shell aliases/abbreviations that expand to the wrong provider
Example fix
// before f cursor skill-source my-skill // after f codex skill-source my-skill
Defensive patterns
Strategy: validation
Validate before calling
fn supports_skill_source(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
}
if !supports_skill_source(provider) {
eprintln!("skill-source requires Codex: use `f codex skill-source ...`");
return;
} Type guard
fn is_codex(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
} Try / catch
if let Err(e) = run_provider(provider, Some(ProviderAiAction::SkillSource { .. })) {
if e.to_string().contains("skill-source is only supported for Codex") {
eprintln!("rerun as: f codex skill-source ...");
} else {
return Err(e);
}
} Prevention
- Look up skill sources only via `f codex skill-source`
- Fix stale aliases that expand skill commands under the wrong provider
- Assert Codex in skill-dev tooling before inspection calls
- Treat Cursor as transcript-only in all skill workflows
When it happens
Trigger: Running `f cursor skill-source ...`, or run_provider(Provider::Cursor, Some(ProviderAiAction::SkillSource{..})). Happens when skill-source lookups are configured for the wrong provider.
Common situations: Skill development workflows copied from Codex setups, wrappers enumerating skill commands across providers, stale aliases after switching default provider.
Related errors
- telemetry is only supported for Codex sessions; use `f codex
- trace is only supported for Codex sessions; use `f codex tra
- project-ai is only supported for Codex sessions; use `f code
- skill-eval is only supported for Codex sessions; use `f code
- agent is only supported for Codex sessions; use `f codex age
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/d80083ac42d08f80.
Report an issue: GitHub.