Hmbown/CodeWhale · error

`codewhale --continue` resumes the interactive TUI. Use…

Error message

`codewhale --continue` resumes the interactive TUI. Use `codewhale exec --continue <PROMPT>` to continue a session non-interactively.

What it means

When a non-empty positional prompt is supplied at the top level (which the CLI treats as an exec-style forwarding invocation) combined with `--continue`, the dispatcher bails: `--continue` resumes the interactive TUI and cannot also serve a one-shot prompt. The message directs users to `codewhale exec --continue <PROMPT>` for non-interactive continuation.

Solutions

  1. Use `codewhale exec --continue "<prompt>"` to continue the latest session non-interactively.
  2. Drop the prompt if you actually want the interactive TUI: plain `codewhale --continue`.
  3. Update wrapper scripts to route prompt-bearing continuations through the `exec` subcommand.

Example fix

// before
codewhale --continue "finish the refactor"
// error: `codewhale --continue` resumes the interactive TUI...

// after
codewhale exec --continue "finish the refactor"
Defensive patterns

Strategy: validation

Validate before calling

# wrapper guard: prompt + --continue must go through exec
if [[ "$*" == *--continue* && $# -gt 1 ]]; then
  exec codewhale exec --continue "$*" # route appropriately
fi

Try / catch

match run(args) {
    Err(e) if e.to_string().contains("resumes the interactive TUI. Use `codewhale exec --continue") => {
        eprintln!("route prompt continuations through `codewhale exec --continue <PROMPT>`");
    }
    r => r?,
}

Prevention

When it happens

Trigger: Running `codewhale --continue "<prompt text>"` — global `--continue` plus a bare prompt argument (non-empty after the CLI's prompt-joining logic).

Common situations: Users mapping `--continue` onto exec-style usage from other CLI tools, or scripts appending a prompt to an interactive-resume command.

Understand the failure class

Background: "mutually exclusive" flag errors: what "can't supply both nx and xx", "--raw is not compatible with -i" and "cannot be used with" mean, and how to fix them — this error's family across 29 libraries.

Related errors


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

Appendix: source

Thrown at crates/cli/src/lib.rs:2363

    if let Some(session_id) = resume_session_id {
        forwarded.push("--resume".to_string());
        forwarded.push(session_id.to_string());
    }

    let prompt =
        cli.prompt_flag
            .iter()
            .chain(cli.prompt.iter())
            .fold(String::new(), |mut acc, part| {
                if !acc.is_empty() {
                    acc.push(' ');
                }
                acc.push_str(part);
                acc
            });
    if !prompt.is_empty() {
        if cli.continue_session {
            bail!(
                "`codewhale --continue` resumes the interactive TUI. Use `codewhale exec --continue <PROMPT>` to continue a session non-interactively."
            );
        }
        if let Some(session_id) = resume_session_id {
            bail!(
                "`codewhale --resume {session_id}` resumes the interactive TUI. Use `codewhale exec --resume {session_id} <PROMPT>` to continue a session non-interactively."
            );
        }
        forwarded.push("--prompt".to_string());
        forwarded.push(prompt);
    }

    Ok(forwarded)
}

fn resolve_runtime_for_dispatch(
    store: &mut ConfigStore,
    runtime_overrides: &CliRuntimeOverrides,

View on GitHub (pinned to 73e0f67d83)