Hmbown/CodeWhale · error · anyhow::Error
pass --all to stop all Fleet work
Error message
pass --all to stop all Fleet work
What it means
The Fleet Stop subcommand intentionally stops all Fleet work; refusing an ambiguous stop without --all is by design, so calling it without the flag bails immediately. This is a guard against accidentally stopping only part of (or all of) the fleet without explicit consent.
Solutions
- Re-run the command with --all to stop all Fleet work
- Update automation/scripts to include --all
- If partial stopping is intended, use the targeted stop/resume variant with a run id instead
Example fix
// before codewhale fleet stop // after codewhale fleet stop --all
Defensive patterns
Strategy: validation
Validate before calling
if stop_requested && !args.all {
eprintln!("refusing: pass --all to stop all Fleet work");
std::process::exit(2);
} Prevention
- Always include --all in scripts that stop Fleet work
- Confirm scope before stopping: --all is intentionally explicit
- Use targeted stop with a run id for partial stops
When it happens
Trigger: Running `codewhale fleet stop` (or the equivalent) without passing `--all` — the FleetCommand::Stop arm checks the `all` boolean first.
Common situations: Typing the stop command omitting the flag; scripted stops that predate the --all requirement; muscle memory from other CLIs where bare stop is allowed.
Understand the failure class
Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.
Related errors
- {}: {detail}
- Fleet session capture id is already in use or unavailable
- incomplete Fleet session capture destination
- pass --all to stop all fleet work
- A positive pull request number is required
AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22).
Data as JSON: /api/errors/fccb6d33883fab80.
Report an issue: GitHub.
Appendix: source
Thrown at crates/tui/src/lib.rs:3483
Ok(())
}
FleetCommand::Resume {
run_id,
stale_after_seconds,
} => {
let manager = manager.with_stale_after(Duration::from_secs(stale_after_seconds.max(1)));
emit_fleet_receipt(&fleet_control::execute_fleet_control_with(
ControlSurface::Cli,
workspace,
fleet_context,
&manager,
ControlOperation::FleetResume,
Some(&run_id),
))
}
FleetCommand::Stop { all } => {
if !all {
bail!("pass --all to stop all Fleet work");
}
let stopped = manager.stop_all()?;
println!("stopped: {stopped}");
Ok(())
}
FleetCommand::AlertDryRun(args) => {
let class = alert_event_class(args.event);
let adapter = alert_adapter(&args);
let event = FleetAlertEvent {
class,
run_id: FleetRunId::from(args.run_id.clone()),
worker_id: args.worker_id.clone(),
task_id: args.task_id.clone(),
status: alert_status(class, args.status.clone()),
reason: args.reason.clone(),
};
let dispatcher = FleetAlertDispatcher::new(
FleetAlertConfig::dry_run_for_adapter(adapter),View on GitHub (pinned to 73e0f67d83)