{"record":{"id":"91cb2d780807836a","repo":"nikivdev/code","slug":"open-resolve-is-only-supported-for-codex-sessions","errorCode":null,"errorMessage":"open/resolve is only supported for Codex sessions; use `f codex ...`","messagePattern":"open/resolve is only supported for Codex sessions; use `f codex \\.\\.\\.`","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai.rs","lineNumber":810,"sourceCode":"            Some(ProviderAiAction::List) => list_sessions(Provider::Claude)?,\n            Some(ProviderAiAction::LatestId { path }) => {\n                print_latest_session_id(Provider::Claude, path)?\n            }\n            Some(ProviderAiAction::Sessions { path, json }) => {\n                provider_sessions(Provider::Claude, path, json)?\n            }\n            Some(ProviderAiAction::Browse { .. }) => {\n                bail!(\"browse is only supported for Codex sessions; use `f ai codex browse ...`\");\n            }\n            Some(ProviderAiAction::Continue { session, path }) => {\n                continue_session(session, path, Provider::Claude)?\n            }\n            Some(ProviderAiAction::New) => new_session(Provider::Claude)?,\n            Some(ProviderAiAction::Connect { .. }) => {\n                bail!(\"connect is only supported for Codex sessions; use `f codex connect ...`\");\n            }\n            Some(ProviderAiAction::Open { .. }) | Some(ProviderAiAction::Resolve { .. }) => {\n                bail!(\"open/resolve is only supported for Codex sessions; use `f codex ...`\");\n            }\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 { .. }) => {","sourceCodeStart":792,"sourceCodeEnd":828,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai.rs#L792-L828","documentation":"Raised when the `open` or `resolve` action is dispatched under the Claude provider branch in run() (src/ai.rs:809-811). Both actions operate on Codex session rollout files/internals and are not implemented for Claude sessions, so the match arm bails with a pointer to the Codex subcommands. Nothing is partially executed; it is a pure pre-execution guard.","triggerScenarios":"Running `f ai claude open <session>` or `f ai claude resolve <session>` (ProviderAiAction::Open / ProviderAiAction::Resolve routed to Provider::Claude).","commonSituations":"Trying to reopen or resolve a stale/interrupted session but invoking it under the wrong provider; scripts that enumerate providers and call open/resolve generically; copying a Codex command and swapping 'codex' for 'claude' assuming feature parity.","solutions":["Use the Codex subcommand: `f codex open ...` / `f codex resolve ...` (or `f ai codex ...`).","For Claude sessions, use the supported actions: `f ai claude continue`, `f ai claude new`, `f ai claude sessions`, `f ai claude show`.","Update any generic provider-loop script to whitelist codex for open/resolve."],"exampleFix":"// before (shell)\nf ai claude resolve my-session\n// after (shell)\nf codex resolve my-session","handlingStrategy":"validation","validationCode":"# shell: open/resolve are Codex-only\nACTION=$1; PROVIDER=$2\nif [ \"$ACTION\" = \"open\" ] || [ \"$ACTION\" = \"resolve\" ]; then\n  [ \"$PROVIDER\" = \"codex\" ] || { echo \"open/resolve require 'f codex ...'\" >&2; exit 1; }\nfi","typeGuard":null,"tryCatchPattern":"f ai claude resolve \"$SESSION\" 2>err.log || { grep -q 'open/resolve is only supported for Codex' err.log && exec f codex resolve \"$SESSION\"; } || { cat err.log >&2; exit 1; }","preventionTips":["Check `f <provider> --help` for the supported action list before scripting.","Route open/resolve calls through a single wrapper that hardcodes the codex subcommand.","When copying Codex commands for Claude use, verify feature parity first; only continue/new/list-like actions are shared."],"tags":["cli","unsupported-action","codex","claude"],"backgroundTag":"codex-only-action-on-claude-session","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}