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
- Edit the fleet's operator.reasoning to a supported effort value (e.g. the same tokens the CLI accepts).
- Remove the operator.reasoning field to use the default effort.
- Check the CLI's accepted reasoning-effort values and match them exactly.
- 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
- Use only reasoning-effort tokens the CLI accepts when authoring fleets.
- Omit operator.reasoning when unsure; the default applies.
- Validate fleet files with the app's own parser before committing them.
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
- agent profile provider cannot be empty
- agent profile provider must be a simple provider id
- duplicate fleet task id
- duplicate fleet worker id
- fleet cannot be empty
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 userView on GitHub (pinned to 73e0f67d83)