{"record":{"id":"9afe4d7ab33a3b81","repo":"rtk-ai/rtk","slug":"unknown-recall-mode-other-expected-sqlite-tee-disabled","errorCode":null,"errorMessage":"unknown recall mode '{other}' (expected: sqlite, tee, disabled)","messagePattern":"unknown recall mode '(.+?)' \\(expected: sqlite, tee, disabled\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/main.rs","lineNumber":2574,"sourceCode":"            all,\n            format,\n        } => {\n            analytics::cc_economics::run(daily, weekly, monthly, all, &format, cli.verbose)?;\n            0\n        }\n\n        Commands::Config { create, action } => {\n            match action {\n                Some(ConfigAction::Recall { mode: None }) => {\n                    core::config::show_recall_mode()?;\n                }\n                Some(ConfigAction::Recall { mode: Some(mode) }) => {\n                    use core::retriever::RecoveryMode;\n                    let parsed = match mode.as_str() {\n                        \"sqlite\" => RecoveryMode::Sqlite,\n                        \"tee\" => RecoveryMode::Tee,\n                        \"disabled\" => RecoveryMode::Disabled,\n                        other => anyhow::bail!(\n                            \"unknown recall mode '{other}' (expected: sqlite, tee, disabled)\"\n                        ),\n                    };\n                    let path = core::config::set_recall_mode(parsed)?;\n                    println!(\"recall mode set to {mode} in {}\", path.display());\n                }\n                None => {\n                    if create {\n                        let path = core::config::Config::create_default()?;\n                        println!(\"Created: {}\", path.display());\n                    } else {\n                        core::config::show_config()?;\n                    }\n                }\n            }\n            0\n        }\n","sourceCodeStart":2556,"sourceCodeEnd":2592,"githubUrl":"https://github.com/rtk-ai/rtk/blob/0924356b4caba4989607227b7c8824d3d8098719/src/main.rs#L2556-L2592","documentation":"`rtk config` (Recall mode action) accepts only the literal recall mode strings `sqlite`, `tee`, or `disabled`, which map to `core::retriever::RecoveryMode` variants. Any other string hits the `other => anyhow::bail!(...)` arm in the match at src/main.rs:2574 and aborts the config change. (The DIFF 'USED AT' hit in diff_cmd.rs:1728 is an unrelated byte-level match arm of the same shape, not the thrower.)","triggerScenarios":"Running `rtk config ...` that resolves to `ConfigAction::Recall { mode: Some(mode) }` where `mode` is any string other than exactly \"sqlite\", \"tee\", or \"disabled\" — e.g. typos, different casing (`SQLITE`, `SQLite`), or synonyms (`off`, `none`, `file`).","commonSituations":"Typing `rtk config recall --mode disable` (missing 'd') or `--mode off`; assuming case-insensitivity; remembering the old mode name after a rename across rtk versions.","solutions":["Re-run with one of the exact accepted values: `sqlite`, `tee`, or `disabled` (lowercase)","Check the current valid values via `rtk config --help` or the error message itself","If the intent was 'turn it off', use `disabled`, not `off`/`none`"],"exampleFix":"// before\nrtk config recall --mode off\n// after\nrtk config recall --mode disabled","handlingStrategy":"validation","validationCode":"// shell: validate mode before calling rtk config\nRECALL_MODES=(sqlite tee disabled)\nif [[ ! \" ${RECALL_MODES[*]} \" == *\" $MODE \"* ]]; then echo \"invalid recall mode: $MODE\" >&2; exit 1; fi\nrtk config recall --mode \"$MODE\"","typeGuard":null,"tryCatchPattern":"// Rust caller\nmatch mode.as_str() {\n    \"sqlite\" | \"tee\" | \"disabled\" => set_recall_mode(mode)?,\n    other => eprintln!(\"invalid recall mode '{other}': expected sqlite, tee, disabled\"),\n}","preventionTips":["Only pass the exact lowercase strings sqlite/tee/disabled","Never use synonyms like off/none/file or different casing","Check `rtk config --help` when unsure of accepted values"],"tags":["cli","config","validation","enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"0924356b4caba4989607227b7c8824d3d8098719","analyzedAt":"2026-09-19T19:25:29.612Z","contentChangedAt":"2026-09-19T19:25:29.612Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}