{"record":{"id":"5d31d2ac45e2d9dd","repo":"zeroclaw-labs/zeroclaw","slug":"temperature-unsupported-by-gemini-cli-temperatur","errorCode":null,"errorMessage":"temperature unsupported by Gemini CLI: {temperature}. Supported values: 0.7 or 1.0","messagePattern":"temperature unsupported by Gemini CLI: (.+?)\\. Supported values: 0\\.7 or 1\\.0","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-providers/src/gemini_cli.rs","lineNumber":92,"sourceCode":"\n    /// Returns true if the model argument should be forwarded to the CLI.\n    fn should_forward_model(model: &str) -> bool {\n        let trimmed = model.trim();\n        !trimmed.is_empty() && trimmed != DEFAULT_MODEL_MARKER\n    }\n\n    fn supports_temperature(temperature: f64) -> bool {\n        GEMINI_CLI_SUPPORTED_TEMPERATURES\n            .iter()\n            .any(|v| (temperature - v).abs() < TEMP_EPSILON)\n    }\n\n    fn validate_temperature(temperature: f64) -> anyhow::Result<()> {\n        if !temperature.is_finite() {\n            anyhow::bail!(\"Gemini CLI model_provider received non-finite temperature value\");\n        }\n        if !Self::supports_temperature(temperature) {\n            anyhow::bail!(\n                \"temperature unsupported by Gemini CLI: {temperature}. \\\n                 Supported values: 0.7 or 1.0\"\n            );\n        }\n        Ok(())\n    }\n\n    fn redact_stderr(stderr: &[u8]) -> String {\n        let text = String::from_utf8_lossy(stderr);\n        let trimmed = text.trim();\n        if trimmed.is_empty() {\n            return String::new();\n        }\n        if trimmed.chars().count() <= MAX_GEMINI_CLI_STDERR_CHARS {\n            return trimmed.to_string();\n        }\n        let clipped: String = trimmed.chars().take(MAX_GEMINI_CLI_STDERR_CHARS).collect();\n        format!(\"{clipped}...\")","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-providers/src/gemini_cli.rs#L74-L110","documentation":"The gemini CLI wrapper deliberately supports only temperatures 0.7 and 1.0 (within a small epsilon); validate_temperature rejects everything else so that switching a model_provider from the API backend to gemini_cli cannot silently keep an incompatible temperature.","triggerScenarios":"Setting temperature Some(0.2), Some(1.5), or Some(0.71) on a provider of type gemini_cli; reusing one agent config across API-backed and CLI-backed providers.","commonSituations":"Copy-pasting an API-era temperature into CLI provider config; templates defaulting temperature to 0.0; drift after renaming providers.","solutions":["Set temperature to exactly 0.7 or 1.0","Omit temperature (None) to accept the CLI default","Use the API-backed gemini provider when other temperatures are required"],"exampleFix":"# before (config)\ntemperature = 0.2\n\n# after\ntemperature = 0.7   # or 1.0; or remove the key entirely","handlingStrategy":"validation","validationCode":"const GEMINI_CLI_TEMPERATURES: [f64; 2] = [0.7, 1.0];\nfn gemini_cli_temperature_ok(t: f64) -> bool {\n    t.is_finite() && GEMINI_CLI_TEMPERATURES.iter().any(|v| (t - v).abs() < 1e-9)\n}","typeGuard":"fn gemini_cli_temperature_ok(t: f64) -> bool {\n    t.is_finite() && ((t - 0.7).abs() < 1e-9 || (t - 1.0).abs() < 1e-9)\n}","tryCatchPattern":"if let Err(e) = provider.chat_with_system(None, prompt, model, Some(t)).await {\n    if e.to_string().starts_with(\"temperature unsupported by Gemini CLI\") {\n        return Ok(/* fallback: retry with Some(0.7) or None */);\n    }\n    return Err(e);\n}","preventionTips":["Keep per-provider temperature tables in config validation","Prefer None over guessed values when the CLI default is acceptable","Route workloads needing custom temperatures to the API-backed gemini provider"],"tags":["rust","zeroclaw","gemini-cli","temperature","validation"],"backgroundTag":"unsupported-parameter-value","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}