nikivdev/code · error

trace is only supported for Codex sessions; use `f codex tra

Error message

trace is only supported for Codex sessions; use `f codex trace ...`

What it means

Raised by `run_provider` in src/ai.rs when the `trace` action is dispatched against a Cursor session. Tracing is a Codex-only integration; the Cursor match arm rejects it explicitly with `bail!`. The error text routes the user to the Codex subcommand.

Source

Thrown at src/ai.rs:597

            }
            Some(ProviderAiAction::EnableGlobal { .. }) => {
                bail!(
                    "global Codex enablement is only supported for Codex sessions; use `f codex enable-global`"
                );
            }
            Some(ProviderAiAction::Daemon { .. }) => {
                bail!("daemon is only supported for Codex sessions; use `f codex daemon ...`");
            }
            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 ...`");

View on GitHub (pinned to a747e741ae)

Solutions

  1. Use the Codex path: `f codex trace ...`
  2. For Cursor transcripts, limit yourself to read-only commands: `f cursor list`, `f cursor copy`, `f cursor context`
  3. Guard dispatch code so Trace is only reachable for Provider::Codex
  4. Update aliases/scripts that assume trace works for every provider

Example fix

// before
f cursor trace --session abc
// after
f codex trace --session abc
Defensive patterns

Strategy: validation

Validate before calling

fn supports_trace(provider: Provider) -> bool {
    matches!(provider, Provider::Codex)
}
if !supports_trace(provider) {
    eprintln!("trace requires Codex: use `f codex trace ...`");
    return;
}

Type guard

fn is_codex(provider: Provider) -> bool {
    matches!(provider, Provider::Codex)
}

Try / catch

if let Err(e) = run_provider(provider, Some(ProviderAiAction::Trace { .. })) {
    if e.to_string().contains("trace is only supported for Codex") {
        eprintln!("rerun as: f codex trace ...");
    } else {
        return Err(e);
    }
}

Prevention

When it happens

Trigger: Running `f cursor trace ...`, or calling run_provider(Provider::Cursor, Some(ProviderAiAction::Trace{..})). Occurs whenever a Codex-oriented trace workflow is pointed at Cursor transcripts.

Common situations: Reusing a Codex trace script with the provider argument swapped, muscle-memory CLI usage, tooling that enumerates all `f <provider>` subcommands without capability checks.

Related errors


AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01). Data as JSON: /api/errors/bf69e2ad34399cc2. Report an issue: GitHub.