nikivdev/code · error
project-ai is only supported for Codex sessions; use `f code
Error message
project-ai is only supported for Codex sessions; use `f codex project-ai ...`
What it means
Raised by `run_provider` in src/ai.rs when the `project-ai` action is dispatched against a Cursor session. Project-AI features are Codex-only integrations; the Cursor dispatch explicitly rejects the action with `bail!` and suggests the Codex subcommand.
Source
Thrown at src/ai.rs:605
}
Some(ProviderAiAction::Memory { .. }) => {
bail!("memory is only supported for Codex sessions; use `f codex memory ...`");
}
Some(ProviderAiAction::Telemetry { .. }) => {
bail!(
"telemetry is only supported for Codex sessions; use `f codex telemetry ...`"
);
}
Some(ProviderAiAction::Trace { .. }) => {
bail!("trace is only supported for Codex sessions; use `f codex trace ...`");
}
Some(ProviderAiAction::ProjectAi { .. }) => {
bail!(
"project-ai is only supported for Codex sessions; use `f codex project-ai ...`"
);
}
Some(ProviderAiAction::SkillEval { .. }) => {
bail!(
"skill-eval is only supported for Codex sessions; use `f codex skill-eval ...`"
);
}
Some(ProviderAiAction::SkillSource { .. }) => {
bail!(
"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)View on GitHub (pinned to a747e741ae)
Solutions
- Run `f codex project-ai ...` instead
- Use the read-only Cursor surface (`f cursor list` / `copy` / `context`) if you only need transcript data
- Gate ProjectAi dispatch on provider == Provider::Codex in wrapper scripts
- Document provider capability differences in your team's CLI cheatsheet
Example fix
// before f cursor project-ai status // after f codex project-ai status
Defensive patterns
Strategy: validation
Validate before calling
fn supports_project_ai(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
}
if !supports_project_ai(provider) {
eprintln!("project-ai requires Codex: use `f codex project-ai ...`");
return;
} Type guard
fn is_codex(provider: Provider) -> bool {
matches!(provider, Provider::Codex)
} Try / catch
if let Err(e) = run_provider(provider, Some(ProviderAiAction::ProjectAi { .. })) {
if e.to_string().contains("project-ai is only supported for Codex") {
eprintln!("rerun as: f codex project-ai ...");
} else {
return Err(e);
}
} Prevention
- Only call project-ai through `f codex ...`
- Assert the provider in CI scripts before project-ai calls
- Avoid generic `f $PROVIDER $ACTION` loops over all actions
- Document Codex-only verbs in onboarding material
When it happens
Trigger: Running `f cursor project-ai ...`, or run_provider(Provider::Cursor, Some(ProviderAiAction::ProjectAi{..})). Happens when a Codex project-AI workflow is pointed at the Cursor provider.
Common situations: Cross-provider script reuse, aliases created for Codex reused for Cursor, exploratory CLI usage assuming all subcommands exist under every provider.
Related errors
- telemetry is only supported for Codex sessions; use `f codex
- trace is only supported for Codex sessions; use `f codex tra
- skill-eval is only supported for Codex sessions; use `f code
- agent is only supported for Codex sessions; use `f codex age
- log is only supported for Codex sessions; use `f codex log .
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/81683bad2471c3c3.
Report an issue: GitHub.