{"record":{"id":"9af45a5cc91b0405","repo":"nikivdev/code","slug":"telemetry-is-only-supported-for-codex-sessions-us","errorCode":null,"errorMessage":"telemetry is only supported for Codex sessions; use `f codex telemetry ...`","messagePattern":"telemetry is only supported for Codex sessions; use `f codex telemetry \\.\\.\\.`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai.rs","lineNumber":592,"sourceCode":"            }\n            Some(ProviderAiAction::TouchLaunch { .. }) => {\n                bail!(\n                    \"touch-launch is only supported for Codex sessions; use `f codex touch-launch`\"\n                );\n            }\n            Some(ProviderAiAction::EnableGlobal { .. }) => {\n                bail!(\n                    \"global Codex enablement is only supported for Codex sessions; use `f codex enable-global`\"\n                );\n            }\n            Some(ProviderAiAction::Daemon { .. }) => {\n                bail!(\"daemon is only supported for Codex sessions; use `f codex daemon ...`\");\n            }\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!(","sourceCodeStart":574,"sourceCodeEnd":610,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai.rs#L574-L610","documentation":"This error is raised by `run_provider` in src/ai.rs when a `telemetry` action is dispatched against a Cursor session. Cursor transcripts in this tool are read-only (list/copy/context only); Codex-specific integrations like telemetry are deliberately rejected with `bail!` instead of failing silently. The message points the user to the Codex subcommand namespace.","triggerScenarios":"Running `f cursor telemetry ...` (or invoking run_provider(Provider::Cursor, Some(ProviderAiAction::Telemetry{..}))). Also produced when a script or alias generically maps `f <provider> <action>` without checking provider capability.","commonSituations":"Users habituating the same command shape across providers (f claude/codex/cursor), shell scripts or fuzzer-driven dispatch iterating ProviderAiAction variants, and docs/aliases written for Codex applied to a Cursor session.","solutions":["Run the telemetry action against Codex instead: `f codex telemetry ...`","If you only need Cursor transcript data, use `f cursor list`, `f cursor copy`, or `f cursor context`","Check the current provider before dispatching: gate ProviderAiAction::Telemetry so it is only sent when provider == Provider::Codex","If dispatching programmatically, match on the provider first and emit a clearer CLI error or skip the action"],"exampleFix":"// before\nf cursor telemetry --session abc\n// after\nf codex telemetry --session abc","handlingStrategy":"validation","validationCode":"fn supports_action(provider: Provider, action: &ProviderAiAction) -> bool {\n    matches!(provider, Provider::Codex)\n        || matches!(action, ProviderAiAction::List | ProviderAiAction::LatestId { .. })\n}\nif !supports_action(Provider::Cursor, &action) {\n    eprintln!(\"telemetry requires Codex: use `f codex telemetry ...`\");\n}","typeGuard":"fn is_codex(provider: Provider) -> bool {\n    matches!(provider, Provider::Codex)\n}","tryCatchPattern":"match run_provider(Provider::Cursor, Some(ProviderAiAction::Telemetry { .. })) {\n    Err(e) if e.to_string().contains(\"only supported for Codex\") => {\n        eprintln!(\"falling back to `f codex telemetry ...`\");\n    }\n    Err(e) => return Err(e),\n    Ok(()) => {}\n}","preventionTips":["Check the provider capability matrix before dispatching ProviderAiAction variants","Keep Codex-only actions (telemetry, trace, agent, log, skills) behind a Codex assertion","Use shell aliases that pin Codex-only verbs to `f codex ...`","In scripts, validate $PROVIDER == codex before invoking integration subcommands"],"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"}