{"record":{"id":"81683bad2471c3c3","repo":"nikivdev/code","slug":"project-ai-is-only-supported-for-codex-sessions-u","errorCode":null,"errorMessage":"project-ai is only supported for Codex sessions; use `f codex project-ai ...`","messagePattern":"project-ai is only supported for Codex sessions; use `f codex project-ai \\.\\.\\.`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai.rs","lineNumber":605,"sourceCode":"            }\n            Some(ProviderAiAction::Memory { .. }) => {\n                bail!(\"memory is only supported for Codex sessions; use `f codex memory ...`\");\n            }\n            Some(ProviderAiAction::Telemetry { .. }) => {\n                bail!(\n                    \"telemetry is only supported for Codex sessions; use `f codex telemetry ...`\"\n                );\n            }\n            Some(ProviderAiAction::Trace { .. }) => {\n                bail!(\"trace is only supported for Codex sessions; use `f codex trace ...`\");\n            }\n            Some(ProviderAiAction::ProjectAi { .. }) => {\n                bail!(\n                    \"project-ai is only supported for Codex sessions; use `f codex project-ai ...`\"\n                );\n            }\n            Some(ProviderAiAction::SkillEval { .. }) => {\n                bail!(\n                    \"skill-eval is only supported for Codex sessions; use `f codex skill-eval ...`\"\n                );\n            }\n            Some(ProviderAiAction::SkillSource { .. }) => {\n                bail!(\n                    \"skill-source is only supported for Codex sessions; use `f codex skill-source ...`\"\n                );\n            }\n            Some(ProviderAiAction::Agent { .. }) => {\n                bail!(\"agent is only supported for Codex sessions; use `f codex agent ...`\");\n            }\n            Some(ProviderAiAction::Log { .. }) => {\n                bail!(\"log is only supported for Codex sessions; use `f codex log ...`\");\n            }\n            Some(ProviderAiAction::Sessions { .. })\n            | Some(ProviderAiAction::Browse { .. })\n            | Some(ProviderAiAction::Continue { .. })\n            | Some(ProviderAiAction::New)","sourceCodeStart":587,"sourceCodeEnd":623,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai.rs#L587-L623","documentation":"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.","triggerScenarios":"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.","commonSituations":"Cross-provider script reuse, aliases created for Codex reused for Cursor, exploratory CLI usage assuming all subcommands exist under every provider.","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"],"exampleFix":"// before\nf cursor project-ai status\n// after\nf codex project-ai status","handlingStrategy":"validation","validationCode":"fn supports_project_ai(provider: Provider) -> bool {\n    matches!(provider, Provider::Codex)\n}\nif !supports_project_ai(provider) {\n    eprintln!(\"project-ai requires Codex: use `f codex project-ai ...`\");\n    return;\n}","typeGuard":"fn is_codex(provider: Provider) -> bool {\n    matches!(provider, Provider::Codex)\n}","tryCatchPattern":"if let Err(e) = run_provider(provider, Some(ProviderAiAction::ProjectAi { .. })) {\n    if e.to_string().contains(\"project-ai is only supported for Codex\") {\n        eprintln!(\"rerun as: f codex project-ai ...\");\n    } else {\n        return Err(e);\n    }\n}","preventionTips":["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"],"tags":["unsupported-action","provider-dispatch","cli"],"backgroundTag":"provider-unsupported-action","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}