Hmbown/CodeWhale · error

selected Fleet ' ' has invalid operator reasoning

Error message

selected Fleet '{}' has invalid operator reasoning: {}

What it means

Thrown when the selected Fleet's operator specifies a `reasoning` effort string that `normalize_cli_reasoning_effort` cannot normalize to a valid effort level. Only recognized reasoning effort values are accepted for the operator route.

Solutions

  1. Edit the fleet's operator.reasoning to a supported effort value (e.g. the same tokens the CLI accepts).
  2. Remove the operator.reasoning field to use the default effort.
  3. Check the CLI's accepted reasoning-effort values and match them exactly.
  4. Re-select the fleet via /fleet after fixing the value.

Example fix

// before (fleet file)
operator:
  reasoning: maximum
// after
operator:
  reasoning: high
Defensive patterns

Strategy: validation

Validate before calling

// normalize the reasoning value the same way the CLI does before saving the fleet
if let Some(r) = &fleet.operator.reasoning {
    assert!(normalize_cli_reasoning_effort(r.trim()).is_some(), "invalid reasoning: {r}");
}

Prevention

When it happens

Trigger: A turn starts with a selected Fleet whose `operator.reasoning` is a non-empty string that is not a valid reasoning effort token (e.g. "highs", "maximum", wrong casing if parsing is case-sensitive).

Common situations: Hand-editing the fleet file with an unsupported reasoning level; copying a reasoning value from another tool with different vocabulary; schema changes between versions renamed the accepted tokens.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22). Data as JSON: /api/errors/45c7b3eeb06cbcb7. Report an issue: GitHub.

Appendix: source

Thrown at crates/tui/src/lib.rs:8362

                anyhow!(
                    "selected Fleet '{}' operator route {}/{} is invalid: {}",
                    fleet_name,
                    safe_provider_id,
                    safe_model_id,
                    crate::safe_label::safe_error_text(&error)
                )
            })?;
    let mut selected_config = *resolved.config;
    selected_config.fleet_operator_route_applied = true;
    selected_config.fleet_operator_reasoning_applied = false;
    if !explicit_reasoning_override
        && let Some(reasoning) = operator
            .reasoning
            .as_deref()
            .map(str::trim)
            .filter(|reasoning| !reasoning.is_empty())
        && let Some(reasoning) = normalize_cli_reasoning_effort(reasoning).map_err(|error| {
            anyhow!(
                "selected Fleet '{}' has invalid operator reasoning: {}",
                fleet_name,
                crate::safe_label::safe_error_text(&error.to_string())
            )
        })?
    {
        selected_config.reasoning_effort = Some(reasoning);
        selected_config.reasoning_effort_inferred_from_legacy_alias = false;
        selected_config.fleet_operator_reasoning_applied = true;
    }
    *config = selected_config;
    Ok(true)
}

/// Resolve `project_instruction_imports` into the loader's opt-in set.
///
/// Unrecognized names are reported rather than dropped: a typo in this key
/// silently means "import nothing", which is exactly the failure mode a user

View on GitHub (pinned to 73e0f67d83)