{"record":{"id":"99186a5b399c68bb","repo":"nikivdev/code","slug":"touch-launch-is-only-supported-for-codex-sessions","errorCode":null,"errorMessage":"touch-launch is only supported for Codex sessions; use `f codex touch-launch`","messagePattern":"touch-launch is only supported for Codex sessions; use `f codex touch-launch`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai.rs","lineNumber":576,"sourceCode":"            Some(ProviderAiAction::Show {\n                session,\n                path,\n                count,\n                full,\n            }) => show_session(session, Provider::Cursor, count, path, full)?,\n            Some(ProviderAiAction::Runtime { .. }) => {\n                bail!(\n                    \"runtime helpers are only supported for Codex sessions; use `f codex runtime ...`\"\n                );\n            }\n            Some(ProviderAiAction::Doctor { .. }) => {\n                bail!(\"doctor is only supported for Codex sessions; use `f codex doctor`\");\n            }\n            Some(ProviderAiAction::Eval { .. }) => {\n                bail!(\"eval is only supported for Codex sessions; use `f codex eval`\");\n            }\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                );","sourceCodeStart":558,"sourceCodeEnd":594,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai.rs#L558-L594","documentation":"The TouchLaunch action (touching/refreshing launch metadata) is Codex-only. run_provider with Provider::Cursor and a TouchLaunch action bails with this message directing the user to `f codex touch-launch`.","triggerScenarios":"Running `f cursor touch-launch ...` with touch-launch arguments.","commonSituations":"Scripts refreshing launch timestamps for sessions across all providers; assumed feature parity between codex and cursor subcommands.","solutions":["Use `f codex touch-launch ...` instead","For Cursor sessions, manage launch metadata directly if needed via session files listed by `f cursor list`","Gate automation on provider == codex before calling touch-launch"],"exampleFix":"// before\n$ f cursor touch-launch <session>\n// error: touch-launch is only supported for Codex sessions\n// after\n$ f codex touch-launch <session>","handlingStrategy":"validation","validationCode":"fn assert_codex_for_touch_launch(provider: &Provider) -> Result<()> {\n    if *provider != Provider::Codex {\n        bail!(\"touch-launch requires the codex provider\");\n    }\n    Ok(())\n}","typeGuard":"fn supports_touch_launch(p: &Provider) -> bool { matches!(p, Provider::Codex) }","tryCatchPattern":"if let Err(e) = run_provider(Provider::Cursor, Some(ProviderAiAction::TouchLaunch { .. })) {\n    if e.to_string().contains(\"touch-launch is only supported\") {\n        eprintln!(\"use: f codex touch-launch\");\n    }\n}","preventionTips":["Use `f codex touch-launch` exclusively for launch metadata refresh","Gate refresh scripts on the codex provider","Handle Cursor sessions via list/copy/context/show instead"],"tags":["cli","unsupported-action","cursor","codex"],"backgroundTag":"provider-unsupported-action","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}