{"record":{"id":"93589fb55cf2298d","repo":"Hmbown/CodeWhale","slug":"image-inputs-require-an-exact-nonempty-named-model","errorCode":null,"errorMessage":"image inputs require an exact nonempty named model","messagePattern":"image inputs require an exact nonempty named model","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/runtime_threads.rs","lineNumber":9858,"sourceCode":"            {\n                runtime_policy_with_overrides(\n                    &thread,\n                    req.mode.as_deref(),\n                    req.permission_posture.as_deref(),\n                    req.auto_approve,\n                )?\n            } else {\n                RuntimePolicyProjection::from_persisted(\n                    &thread.mode,\n                    thread.permission_posture.as_deref(),\n                    thread.auto_approve,\n                )\n            };\n        let mode = policy.mode;\n        let requested_model = req.model.as_deref().unwrap_or(&thread.model).to_string();\n        let auto_model = requested_model.trim().eq_ignore_ascii_case(\"auto\");\n        if !image_blocks.is_empty() && (requested_model.is_empty() || requested_model.trim() != requested_model) {\n            bail!(\"image inputs require an exact nonempty named model\");\n        }\n        if !image_blocks.is_empty() && auto_model {\n            bail!(\"image inputs require an exact named model with supported image input; Auto is unavailable for images\");\n        }\n        let cfg_snapshot = self.config.read().clone();\n        let configured_reasoning_preference = cfg_snapshot\n            .reasoning_effort()\n            .map(crate::reasoning_preference::ReasoningEffort::from_setting);\n        // Runtime API precedence is explicit and stable: a turn override wins\n        // over its persisted thread default, which wins over normal config.\n        let reasoning_preference = turn_reasoning_preference\n            .or(thread_reasoning_preference)\n            .or(configured_reasoning_preference);\n        let allow_shell = req.allow_shell.unwrap_or(thread.allow_shell);\n        let trust_mode = req.trust_mode.unwrap_or(thread.trust_mode);\n        let auto_approve = policy.auto_approve();\n        let allowed_tools = req\n            .allowed_tools","sourceCodeStart":9840,"sourceCodeEnd":9876,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/73e0f67d83c59909b571efdfc88c4bc28c309cb1/crates/tui/src/runtime_threads.rs#L9840-L9876","documentation":"Turn admission for image inputs: images require an exact, non-empty named model (no 'auto' or inherited default), because image support is model-specific and cannot be safely guessed from a wildcard route.","triggerScenarios":"Thrown at crates/tui/src/runtime_threads.rs:9858 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Name the model explicitly (req.model or an exact configured model id) when sending image inputs.","Send text-only input if the model cannot be resolved to an exact nonempty id."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"73e0f67d83c59909b571efdfc88c4bc28c309cb1","analyzedAt":"2026-09-22T01:30:00.501Z","contentChangedAt":"2026-09-22T01:30:00.501Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}